{
if (keyData == Keys.Enter &&
((
!(ActiveControl is System.Windows.Forms.TextBox) ||
!((System.Windows.Forms.TextBox)ActiveControl).AcceptsReturn)
))
{
foreach (Control c in this.Controls)
{
if (c.Focused) //c is focused
{
MessageBox.Show(c.Name);
break;
}
}
SendKeys.SendWait("{Tab}");
return true;
}
if (keyData == (Keys.Enter | Keys.Shift))
{
SendKeys.SendWait("+{Tab}");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
各位大侠,我在以上代码中判断光标所在位置获取控件名称,但是不请作用:
foreach (Control c in this.Controls)
{
if (c.Focused) //c is focused
{
MessageBox.Show(c.Name);
break;
}
}
就是这里,请高手指点
7 个解决方案
#1
用this.ActiveControl试试
#2
貌似 不行 大哥能否给个实例
#3
分太低没人帮忙吗?
#4
你的代码显示是用驾车键激发的啊,按回车键就会显示它的名称了
#5
请问怎么显示呢?
#6
首先你需要设置窗体的属性:
然后你编写窗体的 keyPress事件 代码如下
我在VS2008下测试可以获取
this.KeyPreview = true; //将窗体中的按键注册到窗体
然后你编写窗体的 keyPress事件 代码如下
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
string activeControlName = this.ActiveControl.Name; //获取当前活动控件的控件名
}
}
我在VS2008下测试可以获取
#7
程序执行后不进入Form1_KeyPress事件里面来啊
#1
用this.ActiveControl试试
#2
貌似 不行 大哥能否给个实例
#3
分太低没人帮忙吗?
#4
你的代码显示是用驾车键激发的啊,按回车键就会显示它的名称了
#5
请问怎么显示呢?
#6
首先你需要设置窗体的属性:
然后你编写窗体的 keyPress事件 代码如下
我在VS2008下测试可以获取
this.KeyPreview = true; //将窗体中的按键注册到窗体
然后你编写窗体的 keyPress事件 代码如下
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
string activeControlName = this.ActiveControl.Name; //获取当前活动控件的控件名
}
}
我在VS2008下测试可以获取
#7
程序执行后不进入Form1_KeyPress事件里面来啊