1

MDIの子の内部で使用されているユーザーコントロールがあります。これを行うことで、閉じたときのMDI子の可視性を変更しています。

private void MDIChild_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
    this.Visible = false;
}

しかし、MDIフォームの可視性をtrueに変更すると、フォームのロードが発生していなくても、ユーザーコントロールのロードイベントが発生します。ただし、これは通常のWindowsフォームの場合には発生しません。

基本的に、場合によってはMDI子のクローズ機能を無効にする必要があります。

これを行う方法はありますか?

4

1 に答える 1

2

UserControlLoadイベントのMSDNドキュメントから

UserControlがMDI子フォームの一部である場合、子フォームが表示されるたびにLoadイベントが発生します。この場合、Loadイベントハンドラーではなく、任意の1回限りの初期化コードをUserControlに配置する必要があります。

したがって、MDIフォームを表示すると、この基準が満たされます。つまり、この場合、UserControlのLoadイベントに依存している場合は、代わりにそれを別のメソッドに移動し、MDIフォームが表示されたときにそれを明示的に呼び出す必要があります。

于 2012-10-17T09:22:55.813 に答える