protected override bool IsInputKey(Keys keyData)
{
switch (keyData)
{
case Keys.Right:
case Keys.Left:
case Keys.Up:
case Keys.Down:
return true;
case Keys.Shift | Keys.Right:
case Keys.Shift | Keys.Left:
case Keys.Shift | Keys.Up:
case Keys.Shift | Keys.Down:
return true;
}
return base.IsInputKey(keyData);
}
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
switch (e.KeyCode)
{
case Keys.Left:
case Keys.Right:
case Keys.Up:
case Keys.Down:
if (e.Shift)
{
}
else
{
}
break;
}
}
事实上,下面的更有效:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.HWnd == TbxDisplayText.Handle && keyData == Keys.Down)
{
if (LbxDataList.Items.Count > 0)
{
LbxDataList.SelectedIndex = 0;
LbxDataList.Focus();
}
return true;
}
if (msg.HWnd == LbxDataList.Handle)
{
if (LbxDataList.Items.Count > 0)
{
switch (keyData)
{
case Keys.Down:
LbxDataList.SelectedIndex = Math.Min(LbxDataList.SelectedIndex + 1, LbxDataList.Items.Count - 1);
return true;
case Keys.Up:
LbxDataList.SelectedIndex = Math.Max(LbxDataList.SelectedIndex - 1, 0);
return true;
case Keys.Enter:
if (LbxDataList.SelectedItem == null)
{
break;
}
SelectedItem = (KeyValuePair<string, string>)LbxDataList.SelectedItem;
CloseListBox();
//如果是DataGridView中的控件
RemoveDropDownFilterInCell();
PublishSelectedItemChangedMessage(this, null);
return true;
}
}
}
return base.ProcessCmdKey(ref msg, keyData);
}