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 に答える