我在c#MDI WinForms应用程序中遇到了一个奇怪的行为。当我与任何其他表单一起打开特定表单时,此特定表单会锁定。不知何故,它将两种形式的ControlBox分组为一个,如下所示:
由于表格已经停止响应,它不能关闭并停止绘画:
奇怪的是,任何其他形式的组合都可以正常工作。表单相互加载,应用程序不会冻结。 但我无法弄清楚这种形式与其他形式相比有何不同。所有设置都相同。 这是主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;
}
}
为了使这个问题更加奇怪,如果我填充这个锁定数据并单击内部控件的表单,在打开另一个表单之前,不会发生错误。
我不知道下一步该尝试什么。
答案 0 :(得分:0)
newForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
为您的所有控件调用上面的行,这会导致控件框组合在一起。
对于冻结的表单,您需要发布导致表单冻结的子表单的代码。然后我可以进一步帮助你。