当我使用 KeyUp 事件时 MessageBox 没有关闭
MessageBox doesn't close when I use KeyUp event
我的表单有一个用于输入的文本框,一个用于保存的列表视图。
用户在文本框中输入数字,并输入回车,程序检查输入数字的长度和重复项
文本框 KeyUp 事件
private void txb_MList_num_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (check_MList_dup())
{
lstv_MList.Items.Add(txb_MList_num.Text);
allList.Add(txb_MList_num.Text);
txb_MList_num.Text = "";
}
}
}
check_MList_dup()
private bool check_MList_dup()
{
bool OK = true;
if (txb_MList_num.TextLength < 11)
{
MessageBox.Show("Input more text(length = 11)");
return false;
}
else
{
for (int i = 0; i < allList.Count; i++)
if (allList[i].Equals(txb_MList_num.Text))
{
MessageBox.Show("It's duplication.");
return false;
}
}
return OK;
}
但是用户输入关闭 MessageBox,程序再次显示 MessageBox...在使用鼠标之前。
我用断点调试,当MessageBox出现时事件没有发生
但是删除断点,MessageBox重复了
我用e.KeyCode == Keys.Enter && this.Focused
但 this.Focused
总是 return false
.
如何关闭 MessageBox?
您可以尝试使用txb_MList_num
.KeyDown
事件
根据 MSDN:-
"KeyDown event Occurs when a key is pressed while the control has focus."
您可以使用 PreviewKeyDown:
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.IsKeyDown(Key.Enter))
{
// Do your staff here...
}
}
我的表单有一个用于输入的文本框,一个用于保存的列表视图。
用户在文本框中输入数字,并输入回车,程序检查输入数字的长度和重复项
文本框 KeyUp 事件
private void txb_MList_num_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (check_MList_dup()) { lstv_MList.Items.Add(txb_MList_num.Text); allList.Add(txb_MList_num.Text); txb_MList_num.Text = ""; } } }
check_MList_dup()
private bool check_MList_dup() { bool OK = true; if (txb_MList_num.TextLength < 11) { MessageBox.Show("Input more text(length = 11)"); return false; } else { for (int i = 0; i < allList.Count; i++) if (allList[i].Equals(txb_MList_num.Text)) { MessageBox.Show("It's duplication."); return false; } } return OK; }
但是用户输入关闭 MessageBox,程序再次显示 MessageBox...在使用鼠标之前。
我用断点调试,当MessageBox出现时事件没有发生
但是删除断点,MessageBox重复了
我用e.KeyCode == Keys.Enter && this.Focused
但 this.Focused
总是 return false
.
如何关闭 MessageBox?
您可以尝试使用txb_MList_num
.KeyDown
事件
根据 MSDN:-
"KeyDown event Occurs when a key is pressed while the control has focus."
您可以使用 PreviewKeyDown:
private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.IsKeyDown(Key.Enter))
{
// Do your staff here...
}
}