次の問題に関するガイダンスをいただければ幸いです。どのMDIParentイベントでアイテム/ボタンを無効にする必要がありますか?アクティベート?プログラムの起動時に、ボタンを無効にします。アクティブなMDIChildrenがない場合は、ボタンを無効にします。子フォームを起動するときに、その子フォームのデータをテストしたいと思います。空白のフォームの場合は、ボタンを無効のままにしておきます。現在、MdiChildActivatedイベントハンドラーにコードがあります。御時間ありがとうございます。
2 に答える
アクティブ化イベントを使用して、すべてのアイテム/ボタンを無効にしました。MDIChildActiveイベントで、空白のフォームをテストします。空白でない場合は、アイテム/ボタンを有効にします。
MDI親フォームのMdiChildActivateイベントを使用します:http: //msdn.microsoft.com/en-us/library/system.windows.forms.form.mdichildactivate.aspx
そのページからのこのコメントに注意してください:
このイベントを使用して、アクティブ化されたMDI子フォームのステータスに基づいて、MDI子フォームの内容を更新したり、MDI親フォームで使用可能なメニューオプションを変更したりするなどのタスクを実行できます。
また、このイベントは、子が閉じられたときにも呼び出されることに注意してください(MSDNから): MDIアプリケーション内でマルチドキュメントインターフェイス(MDI)の子フォームがアクティブ化または閉じられたときに発生します。
つまり、このイベントでは、次のようなことができます。
menuButton.Enabled =(this.MdiChildren.Length> 0);
または、すべての子フォームで何らかの条件を確認する必要があり、子の1つでボタンを有効にする必要がある場合は、ボタンを有効にします。
void Form1_MdiChildActivate(object sender, EventArgs e)
{
foreach (Form child in MdiChildren)
{
if (IsToolbarButtonNeededForThisForm(child))
{
toolButton.Enabled = true;
break;
}
}
toolButton.Enabled = false;