gpt4 book ai didi

c# - Keydown 事件触发两次

转载 作者:太空狗 更新时间:2023-10-29 20:47:29 25 4
gpt4 key购买 nike

在 Windows 商店应用程序上,我有这个简单的文本框

<TextBox Name="TextBoxUser" HorizontalAlignment="Right" Width="147" Margin="20,0,0,0" KeyDown="TextBox_KeyDown" /

它有一个与之关联的 KeyDown 事件。

        private async void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Enter)
{
Debug.WriteLine("LA");
}
}

这个函数的输出是:


LA
LA

虽然我只按了一次 Enter,但它打印了 2 次。有什么原因还是我做错了什么?

最佳答案

这应该只会触发一次事件,所以如果它触发两次,我会检查一些事情。

检查您是否没有处理父控件上的按键按下事件。这可以是面板或包含窗口。事件将通过可视化树向下冒泡。例如,文本框上的按键按下也将是包含文本框的窗口上的按键。

要阻止这种情况发生,您可以将事件标记为已处理,如下所示;

e.Handled = true;

要检查的另一件事是您没有两次订阅该事件。 XAML 将执行与以下操作相同的操作;

TextBoxUser.KeyDown += TextBox_KeyDown

所以请检查你的代码中没有这个。

您可以检查 sender 和 e.OriginalSource 属性以查看从何处触发事件。

关于c# - Keydown 事件触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22012948/

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