我試圖製作一個WinForms程序,使得TextBox通常隱藏(Visible = false),直到用戶開始在鍵盤上鍵入,此時TextBox應該變爲可見並且鍵盤輸入應該進入TextBox。WinForms KeyDown事件在第一次使用時丟失鍵盤輸入
這裏的程序,減少到了關鍵部分:
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作爲附加標籤。