gpt4 book ai didi

C# If Button IsEnabled,点击触发事件

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:36 25 4
gpt4 key购买 nike

我有下一个问题,我正在处理小型 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 上执行。

谢谢大家,干杯

最佳答案

当您按下 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;
}
}
}

关于C# If Button IsEnabled,点击触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com