我有下一期,我正在研究小型c#-wpf应用程序, 并且在加载时我正在禁用按钮,该按钮用于对点击执行某些操作,它看起来像这样:
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"
然后按回车键时,按钮应该只启用,但不仅启用了,它的调用自动成为他的事件_Click
,我不会知道为什么会发生这种情况,因为在这种情况下,如果我的按钮刚启用,也会调用事件_Click
,如果用户点击该按钮,则再次调用事件,所以实际上我的事件onclick
是两次打电话。
我的问题是,如果设置IsEnabled=true
,如何停止调用我的Click事件。当我设置IsEnabled=true
时,我只是希望启用此按钮,而我不想执行事件_Click
。
我只想在按下按钮时执行事件_Click
,因为它应该工作而不是IsEnabled=true
。
谢谢你们, 干杯
答案 0 :(得分:3)
按Enter键时发生单击事件,因为此按钮是表单中的默认控件。
如果您不想在Enter键上单击事件,则应该使此按钮不是默认值或不处理按下按钮时按Enter键(e.Handled = true
- >按下Enter键时)。
或尝试更改您的代码:
private void password_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key.Equals(Key.Enter))
{
if (password.Password == "drag0n")
{
e.Handled = true; // add this line
btnActivate.IsEnabled = true;
}
else
{
btnActivate.IsEnabled = false;
}
}
}