0

チェックボックスのチェック状態に基づいていくつかのコントロールを有効/無効にするWindowsフォームに取り組んでいます。これを監視するために、CheckedChanged イベントのイベント ハンドラーがあります。これは、まったく同じコードで他のフォームでも問題なく機能しましたが、ここでは正しく機能していません。チェックボックスがチェックされているかどうかに関係なく、チェックされている状態は常に false です。コードは次のとおりです。

    private void chkDisable_CheckedChanged(object sender, EventArgs e)
    {
        if (chkDisable.Checked)
        {
            DisableFormFields();
        }
        else
        {
            EnableFormFields();
        }
    }

私が言ったように、この正確なコードは 1 つの形式で正常に機能します。Checked 状態は、変更した内容に基づいて true または false に正しく設定されます。しかし、新しいフォームでは、チェックされているかチェックされていないかに関係なく、そのメソッドの Checked 状態は常に false です。イベントは問題なく発生し、メソッドで設定したブレークポイントにヒットしますが、Checked 状態は変わりません。何かアドバイス?

ありがとう!

4

2 に答える 2

3

eventHandlerchkDisable_CheckedChangedが正しい checkBox、つまりchkDisableチェックボックスに適用されていることを確認してください。

それでも問題が解決しない場合は、チェックボックス コントロールを削除して再度ドラッグし、イベントを適用します

キャスティングとショートカットを適用することは、問題を解決するための正しい方法論であってはなりません (これは私が個人的に考えていることです)。

于 2012-04-19T12:41:15.273 に答える
2

これを試して

private void chkDisable_CheckedChanged(object sender, EventArgs e)
{
        if (((CheckBox)sender).Checked)
        {
            DisableFormFields();
        }
        else
        {
            EnableFormFields();
        }
}
于 2012-04-19T12:44:29.127 に答える