使用 "mahapps.metro" KeyUp 事件加倍
KeyUp event is doubling using "mahapps.metro"
完成项目:https://uploadfiles.io/wz8ji
遵循代码:
代码 C#:
public partial class MainWindow : MetroWindow
{
public MainWindow()
{
InitializeComponent();
}
private void Textbox_KeyUp(object sender, KeyEventArgs e)
{
if (textbox.Text != string.Empty)
{
this.ShowMessageAsync("This is the title", "Some message");
}
}
}
代码xaml:
<Controls:MetroWindow x:Class="Wpf.MainWindow"
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TabControl HorizontalAlignment="Left" Height="324" Margin="88,31,0,0" VerticalAlignment="Top" Width="605">
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5">
<TextBox
x:Name="textbox"
HorizontalAlignment="Left"
Height="23"
Margin="10,10,0,0"
TextWrapping="Wrap"
Text="TextBox"
VerticalAlignment="Top"
Width="120"
KeyUp="Textbox_KeyUp"/>
</Grid>
</TabItem>
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
</Grid>
</Controls:MetroWindow>
在我的文本框中,当我快速擦除并键入时,事件重复了。当我正常删除并键入“1”时,一切都是 fine.The 问题是当我删除并键入任何非常快的字符时。当我快速执行此操作时,事件重复了。
我也用这个:http://mahapps.com/
我在没有使用 "mahapps" 的情况下创建了另一个项目,它工作正常。
事情是这样发生的:
按下 退格键 并快速释放 + 1 键。
有什么解决办法吗?
嗯,我已经将你的代码提交给不同的测试,方法没有重复...
int i = 0;
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if(((TextBox)sender).Text != string.Empty)
{
System.Diagnostics.Debug.WriteLine("Hello " + ++i);
}
}
Verify that another active control has no associated keyboard event, that may be the problem.
我已经测试了你的代码,它运行良好
正如你在聊天中告诉我的那样,你快速按下退格键 + 1,好吧,错误是你的代码检测到只要 TextBox 不为空,任何键的脉动,所以,你必须做的是限制使用返回
private void Textbox_KeyUp(object sender, KeyEventArgs e)
{
if (textbox.Text != string.Empty && e.Key != Key.Back)
{
this.ShowMessageAsync("This is the title", "Some message");
}
}
完成项目:https://uploadfiles.io/wz8ji
遵循代码:
代码 C#:
public partial class MainWindow : MetroWindow
{
public MainWindow()
{
InitializeComponent();
}
private void Textbox_KeyUp(object sender, KeyEventArgs e)
{
if (textbox.Text != string.Empty)
{
this.ShowMessageAsync("This is the title", "Some message");
}
}
}
代码xaml:
<Controls:MetroWindow x:Class="Wpf.MainWindow"
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TabControl HorizontalAlignment="Left" Height="324" Margin="88,31,0,0" VerticalAlignment="Top" Width="605">
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5">
<TextBox
x:Name="textbox"
HorizontalAlignment="Left"
Height="23"
Margin="10,10,0,0"
TextWrapping="Wrap"
Text="TextBox"
VerticalAlignment="Top"
Width="120"
KeyUp="Textbox_KeyUp"/>
</Grid>
</TabItem>
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
</Grid>
</Controls:MetroWindow>
在我的文本框中,当我快速擦除并键入时,事件重复了。当我正常删除并键入“1”时,一切都是 fine.The 问题是当我删除并键入任何非常快的字符时。当我快速执行此操作时,事件重复了。
我也用这个:http://mahapps.com/
我在没有使用 "mahapps" 的情况下创建了另一个项目,它工作正常。
事情是这样发生的:
按下 退格键 并快速释放 + 1 键。
有什么解决办法吗?
嗯,我已经将你的代码提交给不同的测试,方法没有重复...
int i = 0;
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if(((TextBox)sender).Text != string.Empty)
{
System.Diagnostics.Debug.WriteLine("Hello " + ++i);
}
}
Verify that another active control has no associated keyboard event, that may be the problem.
我已经测试了你的代码,它运行良好
正如你在聊天中告诉我的那样,你快速按下退格键 + 1,好吧,错误是你的代码检测到只要 TextBox 不为空,任何键的脉动,所以,你必须做的是限制使用返回
private void Textbox_KeyUp(object sender, KeyEventArgs e)
{
if (textbox.Text != string.Empty && e.Key != Key.Back)
{
this.ShowMessageAsync("This is the title", "Some message");
}
}