これは、コードの切り取りと貼り付けを避けるための「良いプログラミング」の質問です。プログラミングの指導者は、あなたがコードをカットアンドペーストしているなら、あなたはおそらくそれを間違っていると言いました。 私は半ダースのデータ入力画面を持つC#windowsフォームアプリケーションを持っています。フォームがデータ入力コントロールに変更されたときにユーザーがキャンセルボタンを押すと、変更の破棄を確認する機能を実装しています。このコードをすべてのフォームのbutton_Cancel_Clickメソッドに切り取って貼り付けることは望ましくありません。キャンセルボタンメソッドを別のクラスに移動する方法
「Are You Sure」の質問は別のクラスに移動しましたが、別のクラスのフォームを閉じてコンパイルすると、「this.Close()」の「this」が何であるかわからないを参照してください。
これはいいですが、それは取得すると私はちょうどコードを複製する必要がありますか?事前に おかげで デビッド
private void buttonCancel_Click(object sender, EventArgs e)
{
// Check and warn users of changes to the data before close.
if (dataChanged)
{
bool discardChanges = CancelForm.AreYouSure();
if (discardChanges)
{
this.Close();
}
}
else
{
this.Close();
}
}
私は、基本クラスから継承フォームを実装する場合、 'Cancel'ボタンなど' buttonCancel_Clickのmethod'、 'DataChanged'プロパティでForm''から継承された*抽象的な*基本クラスを使用してお勧めします。 –
私は論理を扱う関数を使うことをお勧めします: '(ValidateChangesMade(dataChanged)){ this.Close(); } '、またはロジックをCancelFormクラスに追加することです: 'if(CancelForm.ValidateChangesMade(dataChanged)){ this.Close(); } ' – MrApnea
本当にあなた次第ですが、私が通常やっているのはできるだけMVCロジックに従っているから、変更したり、プログラムをWebアプリケーションに変換したりする必要がある場合は、インターフェイスを変更するだけです。このロジックに続いて、私はこのメソッドを別のクラスに置くのではなく、別々のフォームに保存することをお勧めします。これはプログラムのインターフェイスにのみ影響し、それを別のクラスに移動すると、 –