次の問題がありますが、小さなC#-wpfアプリケーション に取り組んでいます。クリックするといくつかのアクションを実行するためにussualyボタンが無効になっていますC#Button IsEnabledの場合、クリック時のトリガーイベント
public MainWindow()
{
InitializeComponent();
this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
if (String.IsNullOrEmpty(password.Password))
{
btnActivate.IsEnabled=false;
}
}
とどこかに私は例えば、私のパスワードフィールド、チェックしています:
private void password_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key.Equals(Key.Enter))
{
if (password.Password == "drag0n")
{
btnActivate.IsEnabled = true;
}
else
{
btnActivate.IsEnabled = false;
}
}
}
をそして、私の問題は、ユーザーが"drag0n"
を入力し、Enterキーを押しますと、ボタンがちょうど有効にする必要があり、次のですが、このようなその有効化だけでなく、その呼び出しを自動的にイベント_Click
、私はなぜそのようなことが起こっているのかわかりません。その場合、私のボタンが有効になっている場合は_Click
というイベントが呼び出され、ユーザーがそのボタンをクリックすると再びイベントが呼び出されるので、実際には私のイベントonclick
が呼び出されます二度。
私の質問は、IsEnabled=true
を設定すると、私のClickイベントの呼び出しを止める方法です。 IsEnabled=true
を設定すると、そのボタンを押すことが有効になりたいので、イベント_Click
を実行したくありません。 _Click
イベントは、ボタンが押されたときにのみ実行したい場合は、IsEnabled=true
には動作しません。 Enterキーを押すと、このボタンはフォームのデフォルトの制御であるため、
みんなありがとう、 乾杯
は、デフォルトとしてマークボタンですか?もしそうなら、押されたEnterのためにClickイベントが自動的に発生しているかもしれません。ボタンの 'IsDefault'プロパティをfalseに設定してみてください。または、したくない場合は、ボタンを有効にしたときに 'e.Handled'をtrueに設定すると、KeyEventのバブリングが停止します。 – GregaMohorko