2016-09-14 13 views
-1

私は私のフォーラムで継承している基本フォームクラスを持っています。継承されたフォームでコードを実行する前に、ベースフォームからコードを実行することは可能ですか?私は彼らが基本クラスで閉じたいかどうかを確認するチェックがあり、ポップアップフォームにはいを言うまで実行する必要はありません。どうすればこれを達成できますか?フォーム終了イベント

答えて

0

私が望む正確な振る舞いを得るために、私は基本終了イベントで2つのイベントを追加しました。 1つはチェックの直後、もう1つはコードが実行された後です。その後、InheritedクラスのFormClosingイベントを置き換えて両方のイベントを使用しました。このアプローチにより、私は自由度が増し、mybaseを呼び出すことができました.OnFormClosing

1

サブクラスでイベントを処理する代わりに、OnFormClosingメソッドをオーバーライドします。次に、基本クラスの実装を選択するようにすることができます。その後、あなたのものをしてください。すでにお使いのベースクラスでFormClosingイベントにtrueまたはfalseにe.Cancelプロパティを設定していると仮定すると、

Protected Overrides Sub OnFormClosing(e As System.Windows.Forms.FormClosingEventArgs) 
    MyBase.OnFormClosing(e) 
    'my stuff 
End Sub 
+0

これらのソリューションを使用すると、私のプログラムはcloseイベントを2回実行します。これは正常ですか? –

2

、あなただけの継承された形でe.Cancel値をチェックする必要があります:

Protected Overrides Sub OnFormClosing(e As FormClosingEventArgs) 
    MyBase.OnFormClosing(e) 

    If Not e.Cancel Then 
    MessageBox.Show("Doing Stuff") 
    End If 
End Sub 
+0

これらのソリューションの両方で、私のプログラムはcloseイベントを2回実行します。これは正常ですか? –

+0

@DotNetProgrammerはい、それはベースクローズコードを実行し、継承したベースクローズコードを実行します。あなたのコードがどのように見えるのか分からないので、助けが必要な場合はコードを投稿してください。 – LarsTech

+0

投稿したコードとほぼ同じです。それはMessageBoxを実行し、再度来て、再度メッセージボックスを表示します。私はブール値を追加して継承クラスの後で基本クラスを2回目に実行するようにすることができます。 –

関連する問題