private void CheckBox_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
SetValuesInDB( System.Security.Principal.WindowsIdentity.GetCurrent().Name,
DateTime.Today.Date);
}
现在我想在我直接点击复选框时,在数据库中设置我的id和当前日期的值。
如果某个其他事件触发此事件处理程序,我不想更新数据库中的这些值。 例如:每次加载时都会加载复选框,但取消选中此复选框的数据库值。 因此,每次触发此事件处理程序并更新数据库值。 我该如何照顾它?
答案 0 :(得分:5)
请改用CheckBox.Click事件。如果用户点击复选框或使用空格切换复选框,则会被触发。
答案 1 :(得分:0)
我不确定你想做什么。
如果您希望数据库和用户界面中的值始终是最新的,您可以尝试使用DataBindings ...
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;
}
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单击事件处理程序。