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

    }

现在,只有当我直接单击复选框时,我才想在数据库中设置我的 id 和当前日期的值。

如果其他一些事件触发此事件处理程序,我不想更新数据库中的这些值。例如:每次加载时,复选框被选中,但该复选框的数据库值未选中。因此,每次触发此事件处理程序并更新数据库值时。我该如何照顾它?

4

2 回答 2

4

请改用 CheckBox.Click 事件。如果用户单击复选框或使用空格来切换复选框,它就会被触发。

于 2009-01-07T21:58:04.007 回答
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;

}

否则,您可能希望仅在用户完成操作时将值写入数据库。例如关闭表单的事件处理程序或 okButton 单击事件处理程序。

于 2012-10-29T15:58:08.043 回答