【发布时间】:2011-02-01 15:57:04
【问题描述】:
我正在尝试制作一个 WinForms 程序,以便 TextBox 通常隐藏(可见 = false),直到用户开始在键盘上输入,此时 TextBox 应该变得可见并且键盘输入应该进入 TextBox .
这是程序,简化为基本部分:
using System.Windows.Forms;
namespace TestTextEditPopup
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
textBox1.Visible = false;
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData != Keys.Escape)
return base.ProcessCmdKey(ref msg, keyData);
textBox1.Visible = false;
return true; // Key has been processed
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
textBox1.Visible = true;
textBox1.Focus();
}
}
}
这是一系列的屏幕截图:
首先我在键盘上按了“a”。这确实会导致 TextBox 变得可见并获得焦点,但“a”显然在某处丢失了。
然后我按 Esc。这正确地使 TextBox 再次不可见。
然后我按“b”。这一次(以及所有,或至少几乎所有后续时间)它工作了 - TextBox 变得可见,获得焦点,并且键盘输入没有丢失 - 它显示在 TextBox 中。
关于为什么它第一次不起作用的任何建议?或者完成我想做的事情的替代方法?
谢谢。
编辑:只需将 KeyPress 添加为附加标签。
【问题讨论】:
标签: c# winforms keypress keydown