2016-11-18 21 views
2

私は、Entity Frameworkを使用してWinForms(C#)を作成しています。アプリケーションWinFormsデータベースへの自動保存(対保存ボタン)

現在のところ、私はあなたが望んで期待しているのと同じように動作する、私のフォームに大きなファンシーな保存ボタンを持っています。

ユーザーが各フィールドを変更すると自動的に保存するようにアプリケーションを変更するように求められました。

それぞれのコントロールのValue_Changedイベントにコードを追加することで、これを行うことができます。しかし、より簡単な方法はありますか?このフォームには多数のコントロールがあります。複数のコントロールタイプ(Text、DropDown、CheckBox、RadioButton)のOnChangeイベントをオーバーロードする方法はありますか?

+0

'INotifyPropertyChanged'は私の最初の考えであり、直後にすべてが遅くなるようなワウです。私は、ナビゲーションとサスペンドでセーブを行うことができると思いますが、セーブボタンは削除され、各フィールドの後には保存されません。各フィールドの変更後に保存する理由を知っていますか? – JaredStroeb

+0

これはかなり広い質問です。 –

+0

フォームが非アクティブになっているか閉じているときにデータを保存するのに十分であるかどうかを尋ねることができます。はるかに簡単になります。なぜこのような要求が出てきたのか分かりませんが、提案するのが害ではありません。フォームが閉じられたらsaveを呼び出すだけでなく、x秒/分ごとに保存します。 –

答えて

0

フォームのコンストラクタで、すべての子コントロール(this.Controls)を再帰的にループし、(同じ)コールバックメソッドをそれぞれのValueChangedイベントに追加します。それは将来のフォームへの変更にかかわらず、フォームの各コントロールに関連付けられます。

using System; 
using System.Diagnostics; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      foreach (Control c in this.Controls) 
      { 
       c.Validated += C_Validated; 
      } 
     } 

     private void C_Validated(object sender, EventArgs e) 
     { 
     Debug.Print($"{sender.GetType().FullName} had Validated event called"); 
     } 
    } 
} 
関連する問題