我正在编写一个 C# WinForms 应用程序,.NET 4.0。
我在 Form
上有一个 WinForms Control
。用户开始使用键盘输入内容后,会出现另一个 Control
。该 Control
是某种文本输入。我想将用户输入发送到该Control
。当然,在它获得焦点后,它会接收所有用户键盘输入。但是当用户在 Control
出现之前开始输入时,我必须在调用它的 Show
和 Focus 后将第一个
方法。KeyDown
事件传递给该控件
SendKeys.Send method是一种做类似事情的方法。但这太复杂了,而且似乎不安全。我只有一个来自 KeyEventArgs
的 KeyData
属性的 Keys
枚举值,我想使用它,而不是将其转换为一些奇怪的字符串.
有什么好的方法可以将 KeyDown
事件从一个控件传递到另一个控件吗?
最佳答案
您可以在Form
上使用PreviewKeyDown
。
假设您要将键盘输入发送到 TextBox textBox1
:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.PreviewKeyDown+= Form1_OnPreviewKeyDown;
textBox1.Visible = false;
}
private bool _textboxEnable = false;
private void Form1_OnPreviewKeyDown(object sender, PreviewKeyDownEventArgs previewKeyDownEventArgs)
{
if (!_textboxEnable) textBox1.Visible = true;
if (!textBox1.Focused) textBox1.Focus();
}
}
关于c# - 将 KeyDown 事件传递给其他控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27507946/