- 私はC#のMDI WinFormsのアプリケーションで奇妙な行動を取得、MDI WinフォームのC#.NETをロードします。他のフォームと一緒に特定のフォームを開くと、この特定のフォームがロックされます。どういうわけかそのはこのように見て、一つに両方のフォームのControlBoxをグループ化:フォームとして奇妙な行動
はその閉鎖可能ではない、応答を停止していると絵を停止しました:
奇妙なフォームの他の組み合わせがうまく動作するということもあります。フォームは互いに重なってロードされ、アプリケーションはフリーズしません。 しかし、私は他のものと比較してこの形式について何が違うのか理解できません。すべての設定は同じです。 これは、そのToolStripのButton.Clickイベントから呼ばれる新しい子フォームを、開始メインMDIFormの内のコードです:私はデータをロックし、このフォームを移入し、をクリックすると、問題の見知らぬ人を作るために
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;
}
}
別のフォームを開く前に、内部のいくつかのコントロールは、エラーは発生しません。次しようとするもののアイデアのうち
イム。
なく、あなたの問題を解決するに、しかし、あなたの写真はこの1つだけのことを思い出し:*のhttp://d24w6bsrhbeh9d.cloudfront.net/photo/274060_700b.jpg*:D – Otiel
を私は何を見ることができないが、私は」 dあなたのMDIコード内の任意の再帰を探します。同じフォームをたくさん開いているような気がします。それがあなたのアプリケーションを「ロックする」ものです。あなたが何を記述しているのかは何度も呼ばれているイベント処理かもしれません。 –
WinformsアダプタコードのMDIのバグです。これは、MDIメインフォームコンストラクタで子ウィンドウを作成するときに発生します。代わりにLoadイベント(OnLoad)を使用します。死んだ絵はおそらく別のものです。 –