我在c#MDI WinForms應用程序中得到一個奇怪的行爲。當我與任何其他表單一起打開特定表單時,此特定表單將鎖定。不知怎的,它的分組的控制盒的兩種形式爲一體,看起來像這樣:加載mdi winform時奇怪的行爲c#.net
由於形式已停止響應,其不是可關閉並停止繪畫:
奇怪部分是任何其他形式的組合工作正常。表單被裝載在一起,應用程序不會凍結。 但我無法弄清楚與其他人相比,這種形式有什麼不同。所有設置都是相同的。 這是主要的MDIForm是啓動新的子窗體,代碼它從ToolStrip的Button.Click事件稱爲:
private void OpenForm(object sender)
{
if (sender == null) return;
ToolStripMenuItem itemSender = (ToolStripMenuItem)sender;
try
{
WinForm mapping = (WinForm)itemSender.Tag;
if (!FormList.ContainsKey(mapping.FormName))
{
Type frmType = Type.GetType(string.Format("OrderAssist.Forms.{0}", mapping.FormName));
if (frmType != null)
{
Form newForm = (Form)Activator.CreateInstance(frmType);
if (!newForm.IsDisposed)
{
newForm.Name = mapping.FormName;
newForm.Tag = itemSender;
newForm.MdiParent = this;
newForm.Show();
newForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
newForm.FormClosing += new FormClosingEventHandler(newForm_FormClosing);
FormList.Add(newForm.Name, newForm);
itemSender.Checked = true;
newForm.Activate();
}
}
else
itemSender.Enabled = false;
}
else
FormList[mapping.FormName].Activate();
}
catch (Exception e)
{
Exceptions.ProgramException(e, Settings.User.ID, "Exception occured while opening a form.");
if (itemSender != null)
itemSender.Enabled = false;
}
}
把事情陌生人,如果我填寫此表格與數據鎖定,並點擊在打開另一個表單之前,有些控件不會發生錯誤。
我想出下一步要做什麼。
不是你的問題的解決方案,但你的照片只是提醒我這一個:* http://d24w6bsrhbeh9d.cloudfront.net/photo/274060_700b.jpg*:D – Otiel
我什麼都看不到,但我' d在MDI代碼中的任何位置尋找任何遞歸。看起來好像你打開多次相同的表單,這就是「鎖定」你的應用程序。從你所描述的可能是一些被稱爲很多次的事件處理。 –
這是MDI的Winforms適配器代碼中的一個錯誤。當您在MDI主窗體構造函數中創建一個子窗口時,會發生這種情況。改用Load事件(OnLoad)。死的畫可能是別的。 –