C#Button为什么不能设置焦点
我暂时想到的一种方法是用enabled,如下面的例子:
首先所有的不希望焦点停留的按钮设置tabstop属性为false,如有button1和button2不希望获得焦点
button1TabStop = false;
button2TabStop = false;
然后按照原来的重载Click事件如下:
button1Click += new EventHandler(button_click);
button2Click += new EventHandler(button_click);
然后事件响应函数为:
private void button_click(object sender, EventArgs e)
{
Button button = (Button)sender;
//按钮动作代码
//
//
buttonEnabled = false;//这步和下面那步一起可以失去焦点
buttonEnabled = true;
}
就可以使得那个按钮失去焦点了,不过焦点还是会付给第一个tabstop属性为true的控件(之前设置了false就不会)
用上面的方法比较麻烦,可以用另外一种方法,例如你的KeyPress事件不要在form上面,可以是在一个label上,label的内容为空(label1Text = ""),就是在界面是是看不见隐藏的,在程序的form的构造函数里label1Focus()使得程序一开始label1就获取焦点,然后在按钮Click事件的最后写一句label1Focus()就可以把焦点设到要获取KeyPress事件的label1上了(按钮就会失去焦点到label1上),再按照楼主原来的设计就可以了~~~
WindowManager控件要慎用 除非要实现类似360悬浮框那种应用退出还存在的需求 可以用透明样式的activity 在serviced出该背景透明 activity屏蔽back按钮
可以采用API中的消息处理,拦截键盘消息,如果不是方向键,再将消息扔出去。最好重定义窗体的消息处理程序WindowProc。
附件中没有定义WindowProc,而是通过无限循环来做的,但是有可能会有漏掉。可能不太合你用,但是可以研究研究。
以上就是关于C#Button为什么不能设置焦点》全部的内容,包括:C#Button为什么不能设置焦点》、Android 悬浮框 获得焦点并屏蔽按键、VB中如何禁止用方向键移动按钮焦点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)