[英]C# how do I prevent tab key press when textbox is empty
下面的代碼工作正常,但是當我的 textbox.text 為空時如何停止 Tab 鍵,我如何將 if 邏輯放在 ProcessCmdKey 事件中?
bool a = true;
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab && !a)
{
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
如果要抑制 Tab 移動,請覆蓋ProcessTabKey()並返回 true。 如果您希望它僅適用於文本框,您可以檢查this.ActiveControl 。
這是一個僅抑制“SelectTextBoxes”列表中列出的文本框的 Tab 的版本:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SelectTextBoxes = new List<TextBox>() { textBox1, textBox2, textBox3 }; // list the textboxes here
}
private List<TextBox> SelectTextBoxes = new List<TextBox>();
protected override bool ProcessTabKey(bool forward)
{
Control ctl = this.ActiveControl;
if (ctl != null && ctl is TextBox)
{
TextBox tb = (TextBox)ctl;
if (SelectTextBoxes.Contains(tb) && tb.Text.Length == 0)
{
return true;
}
}
return base.ProcessTabKey(forward); // process TAB key as normal
}
}
修改代碼如下:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab && string.IsNullOrEmpty(textbox.Text))
return true;
return base.ProcessCmdKey(ref msg, keyData);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.