VS2010 C# .Net 4.1
我正在处理一个用户必须选择或输入初始数据的表单ComboBox
。Tab
使用下面的代码(这需要一些时间来推断),如果数据正确,我会在用户按下键时启用“编辑”按钮,否则该按钮被禁用,它会移动到下一个按钮。
此代码有效,但副作用是当我设置为 truePreviewKeyDown
时事件再次发生。IsInputKey
这会调用两次验证。该KeyDown
事件仅被调用一次,并且IsInputKey
在第二次调用时再次为 false,因此我确实需要再次检查验证。
我想了解为什么并可能避免它。
private void comboBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
if (e.KeyData == Keys.Tab) {
if (ValidationRoutine()) {
e.IsInputKey = true; //If Validated, signals KeyDown to examine this key
} //Side effect - This event is called twice when IsInputKey is set to true
}
}
private void comboBox1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == Keys.Tab) {
e.SuppressKeyPress = true; //Stops further processing of the TAB key
btnEdit.Enabled = true;
btnEdit.Focus();
}
}