在一个具有focus的textbox上按 上 enter键,
处理程序如下。 protected override bool ProcessDialogKey(Keys keyData)
{
if ( keyData == Keys.Enter)
{
MessageBox.Show(ActiveControl.Name);
//keyData = Keys.Tab;
}
return base.ProcessDialogKey(keyData);
}为何总是Winform上我放的splitContainer1呢?
处理程序如下。 protected override bool ProcessDialogKey(Keys keyData)
{
if ( keyData == Keys.Enter)
{
MessageBox.Show(ActiveControl.Name);
//keyData = Keys.Tab;
}
return base.ProcessDialogKey(keyData);
}为何总是Winform上我放的splitContainer1呢?
我的Form上我有两个splitContainer, Show出来的Name总是splitContainer1。
这样的话,像下面这类代码不是有问题?????
//protected override bool ProcessDialogKey(Keys keyData)
//{
// if (//( ActiveControl is TextBox || ActiveControl is ComboBox || ActiveControl is DateTimePicker) &&
// keyData == Keys.Enter)
// {
// MessageBox.Show(ActiveControl.Name);
// //keyData = Keys.Tab;
// }
// return base.ProcessDialogKey(keyData);
//}
/// </summary>
/// <param name="msg"></param>
/// <param name="keyData"></param>
/// <returns></returns>
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ( ((ActiveControl is TextBox)) && (keyData == Keys.Up || keyData == Keys.Down || keyData == Keys.Enter))
{
if (keyData == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{TAB}");
return true;
}
if (keyData == Keys.Down)
System.Windows.Forms.SendKeys.Send("{TAB}");
else
SendKeys.Send("+{Tab}");
return true;
}
else
return base.ProcessCmdKey(ref msg, keyData);
}
有谁能说说ActiveControl属性倒底会在什么时候改变?
具有Focus的控件怎么不是Activecontrol?