2009-01-07 36 views
0
private void CheckBox_CheckedChanged(object sender, EventArgs e) 
    { 
     CheckBox chk = (CheckBox)sender; 
     SetValuesInDB(System.Security.Principal.WindowsIdentity.GetCurrent().Name, 
         DateTime.Today.Date); 

    } 

現在我想設置我的ID和當前日期在數據庫中的價值只有當我直接點擊複選框。C#複選框eventhandler

我不想更新數據庫中的這些值,如果其他事件觸發此事件處理程序。 例如:每次加載時,複選框被選中,但該複選框的數據庫值未被選中。因此,每次觸發該事件處理程序並更新數據庫值時都是如此。 我該如何照顧它?

+0

你可以嘗試更好地解釋你的問題。當你說「每次加載複選框時......」你指的是什麼加載?你是否曾經直接調用這個方法? – BFree 2009-01-07 21:53:22

回答

5

改爲使用CheckBox.Click事件。如果用戶點擊複選框或使用空格來切換複選框,它會被觸發。

0

我不確定你想要做什麼。

如果你想在數據庫中,用戶接口的價值是始終保持最新,你可以嘗試數據綁定...

internal class MyDataSource { 

    public bool MyBooleanValue { 
     get { return ReadValueFromDB("MyUser", "MyBool"); } 
     set { SaveValueToDB("MyUser", value); } 
    } 

} 

... 

internal class MyControl { 


    internal MyControl() { 
     dataSource = new MyDataSource(); 

     InitializeComponents(); 

     myCheckbox.DataBindings.Add(
      "Checked", dataSource, "MyBooleanValue" 
     ); 
    } 

    private MyDataSource dataSource; 

} 

否則你可能希望在只在數據庫中寫入值用戶完成一項操作。如關閉窗體事件處理程序或okButton單擊事件處理程序。