如何在没有按下输入C#WPF的情况下检测我的键盘
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在没有按下输入C#WPF的情况下检测我的键盘相关的知识,希望对你有一定的参考价值。
如何将此代码更改为主动检测键盘。现在它显示我按下输入后写的内容。如何在不输入密钥的情况下显示我可以写的内容。
XAML:
<StackPanel>
<TextBlock Width="300" Height="20">
Type some text into the TextBox and press the Enter key.
</TextBlock>
<TextBox Width="300" Height="30" Name="textBox1"
KeyDown="OnKeyDownHandler"/>
<TextBlock Width="300" Height="100" Name="textBlock1"/>
</StackPanel>
C#:
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
textBlock1.Text = "You Entered: " + textBox1.Text;
}
}
或者可能是一些不同的方式来创建它?
答案
textBlock1.Text = "You Entered: " + **textBox1.Text**;
不要使用直接控制属性,相反使用MVVM和绑定。
“绑定的UpdateSourceTrigger属性控制将更改的值发送回源的方式和时间。”
http://www.wpf-tutorial.com/data-binding/the-update-source-trigger-property/
另一答案
如果我正确理解了这个问题,你需要挖掘PreviewKeyDown事件:
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.G)
{
e.Handled = true;
}
}
或者,您可以使用Keyboard类。实际上,Keyboard类可以在代码中的任何位置使用:
private void SomeMethod()
{
if (Keyboard.IsKeyDown(Key.LeftCtrl))
{
MessageBox.Show("Release left Ctrl button");
return;
}
//Do other work
}
另一答案
您可以直接绑定文本:
<StackPanel>
<TextBlock Width="300" Height="20">
Type some text into the TextBox and it will appear in the field automatically.
</TextBlock>
<TextBox Width="300" Height="30" Name="textBox1" />
<TextBlock Width="300" Height="100" Name="textBlock1" Text="{Binding Text, ElementName=textbox1}"/>
</StackPanel>
这样您就不需要任何代码隐藏。
编辑
如果你想要更复杂的东西,试试这个。在您的项目中实现一个新类,如下所示:
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return $"You entered: {value ?? "nothing"}";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
然后将绑定更改为
<Window.Resources>
<local:MyConverter x:Key="MyConverter"/>
</Window.Resources>
<StackPanel>
<TextBox Name="txtEdit" />
<TextBlock Text="{Binding Text, Converter={StaticResource MyConverter}, ElementName=txtEdit}" />
</StackPanel>
不要忘记窗口的资源。
这是一个屏幕视频,显示它在行动:
以上是关于如何在没有按下输入C#WPF的情况下检测我的键盘的主要内容,如果未能解决你的问题,请参考以下文章