2016-11-18 73 views
2

我正在寫一個WinForms(C#)使用實體框架。應用程序WinForms自動保存到數據庫(與保存按鈕)

目前,我在窗體上有一個很棒的保存按鈕,其工作方式與您希望的一樣。

我被要求更改應用程序以便在用戶更改每個字段時自動保存。

我知道我可以通過將代碼添加到每個控件中的Value_Changed事件來完成此操作。但有沒有更簡單的方法?此表單上有大量控件。爲多種控件類型(Text,DropDown,CheckBox,RadioButton)重載OnChange事件的一些方法?

+0

'INotifyPropertyChanged'是我的第一個想法,緊接着哇,這將放慢一切。我想保存可以在導航和暫停,但刪除保存按鈕,並沒有保存每個字段後。你知道爲什麼他們希望在每次現場更換後保存它嗎? – JaredStroeb

+0

這是一個相當廣泛的問題。 –

+0

您可以詢問在表單變爲不活動狀態或關閉狀態時是否保存數據。會使它更容易。我不知道爲什麼這個要求出現了,但建議並沒有傷害。或者每隔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"); 
     } 
    } 
}