setfocus的一直在button上不能转移到form上

vicancy 2009-12-01 11:46:47
我在程序里添加了如下的语句用来测试窗体是否SetFocus了
void Form1_MouseDown(object sender, MouseEventArgs e)
{
MessageBox.Show(this.Focus().ToString ());
}
如果是一个空窗体,或者窗体中含有PictureBox的时候,点击窗体显示是true
Form1 form=new form();
form.show();
form.setfocus();
如上是form的生成代码。

但是如果在空窗体中加入button,这个我是在Form1类中用InitializeComponent()调用C#自带的生成控件代码的
然后点击窗体显示就一直是false,焦点一直在Button上

不解
求问
...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vicancy 2009-12-02
  • 打赏
  • 举报
回复
不好意思 不是setfocus 是focus
form.focus()
如果换成picturebox控件 则是true
如果是button控件 则是false
qibie 2009-12-02
  • 打赏
  • 举报
回复
button 是否设置为默认按钮

可以放其它控件测试 一下是不是有同样的问题??
vicancy 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 goto_code 的回复:]
Button和picturebox的原理不太一样,前者有点特殊
你试试
把Button的tabindex设置成界面最大者
[/Quote]
设置成最大的也没有用

我要实现的是让窗体接收键盘事件
加了一个按钮之后窗体focus了却还是不能接收
然后我只能将窗体的keypreview改成true才能接收
很奇怪为什么添加按钮后,如果keypreview=false, form.focus()了却还是不能接收键盘事件,而添加picturebox却可以
vicancy 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qibie 的回复:]
button 是否设置为默认按钮

可以放其它控件测试 一下是不是有同样的问题??
[/Quote]
怎么看是否设置为默认按钮?
goto_code 2009-12-02
  • 打赏
  • 举报
回复
Button和picturebox的原理不太一样,前者有点特殊
你试试
把Button的tabindex设置成界面最大者
vicancy 2009-12-02
  • 打赏
  • 举报
回复
尽管不知道为什么button总是被聚焦
但是我将form窗体的属性keypreview改成true 也就是窗体总是在control接收key之前接收key
这样就解决了窗体不能接收keypress的问题
SysTray控件用法详解 VB SYSTRAY 托盘图标 用VB6自带的systray.ocx控件实现托盘图标程序 : 补充: 然后在自己的VB程序中添加改控件(工程-部件-浏览)。   最好把这个ocx放到C:\WINDOWS\system32。   改控件的属性InTray属性用来设置是否显示在托盘中,True为显示在托盘,False为不显示。TrayIcon属性是在托盘中显示的图标式样。TrayTip属性是鼠标移到改控件上面显示的提示文字。如果要使程序最小化时显示到托盘,如下:   Private Sub Form_Resize()    If Me.WindowState = vbMinimized Then    cSysTray1.InTray = True    Me.Visible = False End If   End Sub   点击托盘图标后让程序显示出来,如下:   Private Sub cSysTray1_MouseDown(Button As Integer, Id As Long)    Me.WindowState = vbNormal    Me.Visible = True    cSysTray1.InTray = False    Me.SetFocus   End Sub '单击关闭不退出程序 Private Sub Form_Unload(Cancel As Integer) 主程序.Hide Cancel = False End Sub '单击关闭不退出程序 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = 1 主程序.Hide End Sub ’tui为窗体菜单-退出选项名称 Private Sub tui_Click()’快捷键设ALT+F1 End End Sub '注:"主程序"代表一个窗体(Form),窗体菜单-退出选项需设置快捷键ALT+F1 '这个控件有一个小小的问题,如果托盘菜单有退出选项,不能直接用"End 语句",否则在编译后运行期间用户选择退出后,操作系统会报错,以上使用发送按键方法避免出错 ,当然还有其他避免出错方法。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧