1

次の問題に関するガイダンスをいただければ幸いです。どのMDIParentイベントでアイテム/ボタンを無効にする必要がありますか?アクティベート?プログラムの起動時に、ボタンを無効にします。アクティブなMDIChildrenがない場合は、ボタンを無効にします。子フォームを起動するときに、その子フォームのデータをテストしたいと思います。空白のフォームの場合は、ボタンを無効のままにしておきます。現在、MdiChildActivatedイベントハンドラーにコードがあります。御時間ありがとうございます。

4

2 に答える 2

0

アクティブ化イベントを使用して、すべてのアイテム/ボタンを無効にしました。MDIChildActiveイベントで、空白のフォームをテストします。空白でない場合は、アイテム/ボタンを有効にします。

于 2010-04-27T20:01:11.443 に答える
-1

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;
于 2010-04-27T19:57:05.113 に答える