0

MDI のぎこちなさから逃れるために、子コントロールを含むタブ コントロールを持つ単一のフォームにリファクタリングしたい子フォームを持つ MDI フォームがあります。

FormClosing子フォームを子コントロール (またはユーザー コントロール) に変換すると、一部の子フォームが使用するイベントが失われることがわかります。

一部の機能を処理するためにオーバーライドできますDisposeが、場合によっては終了イベントをキャンセルしたいことがあります。また、フォームが閉じていない場合でも、コントロールが閉じられる前にこのイベントが呼び出されるようにしたいので、コントロールをフォームの閉じるイベントに配線することはオプションではありません。

コントロール クラスでイベントを再現するきれいな方法はありますFormClosingか、それとも子フォームをタブ コントロールに追加するときにフォームとして保持する必要がありますか?

編集: もう少し明確にするControlClosingために、変更を保存したい場合にユーザーにプロンプ​​トを表示するために、ユーザー コントロールが閉じられる前に (必ずしもホスト フォームが閉じられるとは限りません)、ユーザー コントロールのようなものを上げる方法を探しています。ユーザーが標準のはい/いいえ/キャンセルを選択できるようにします。

コントロールをホストするフォームを閉じることをオーバーライドするつもりはありません。

4

2 に答える 2

0

試してみてくださいParentChanged、またはおそらくVisibleChanged

于 2012-04-25T23:44:13.513 に答える
0

タブ コントロールで子フォームを作成する限り (TagPage ごとに 1 つの子フォームを配置すると仮定します)、TabPage 全体または TabPage 内のオブジェクトのみを削除して、子フォームを破棄できます。

TabControl1.TabPages.Remove(TabPage1)

また

TabPage1.Controls.Remove(ChildForm)
于 2012-04-26T04:09:33.673 に答える