C#复选框eventhandler

时间:2009-01-07 21:43:20

标签: c# checkbox

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

    }

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

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

2 个答案:

答案 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单击事件处理程序。