1

これは非常に単純な質問であることは承知していますが、きちんとした明確な提案を探しています。私のアプリケーションは MDI アプリケーションです。アプリケーション全体で使用される基本フォームを作成しました。ユーザーに閉じてほしくないフォームがいくつかあります。そのため、人的ミスを避けるために、ユーザーがそれらのフォームを閉じることを許可しないように計画しました。

フォームを閉じるイベントを設定しようとしましe.cancel = trueたが、うまくいかないようです。

編集:

Private void FrmTask_FormClosing(object sender, FormClosingEventArgs e)
        {         
                e.Cancel = true;
        }

問題は、このコードを使用しているときに、メインの MDI 親フォームでさえも、MDI アプリケーションのフォームが閉じないことです。

4

3 に答える 3

2

閉じるボタンを表示することもできません。

http://blogs.msdn.com/b/atosah/archive/2007/05/18/disable-close-x-button-in-winforms-using-c.aspx

Cody Gray は、Alt-F4 を閉じることも禁止するより良いリンクをコメントで提供しました。

https://stackoverflow.com/a/4655948/366904

于 2011-12-19T16:34:46.343 に答える
2

おそらく、ここでの問題は、アプリが存在するときにウィンドウを閉じたいが、ユーザーが手動で閉じようとした場合は閉じたくないということです。

これを行うには、allowShutdown定義済みと呼ばれる変数などの手動オーバーライドが必要であり、MdiParent が閉じるときにこれを設定できるメソッドが必要です。

private void Form_Closing(object sender, EventArgs e)
{
  if( !allowShutdown) e.Cancel = true;
}

public void ForceShutdown()
{
  allowShutdown = true;
  Close();
}

そして、親フォームで:

private void Form_Closing(object sender, EventArgs e)
{
  if( childForm != null ) childForm.ForceShutdown();
}

これは、作成時に親フォームで子フォームへの参照を維持していることを前提としています。これを、他の投稿で言及されている閉じるボタンを非表示にする機能と組み合わせると、実用的なソリューションが得られるはずです。

于 2011-12-19T16:47:11.750 に答える