[请问]如何使窗体获得焦点?——困扰了好久了,微软中文新闻组都没有,高手帮帮忙阿!

lxspine 2006-03-14 07:35:04
使用MDI子窗体时,点击父窗体的某个控件(如TextBox)子窗体会失去焦点,即使再次点击焦点依然在原先的父窗体控件上,子窗体的MouseDown和MouseMove事件可以响应,但KeyDown和MouseWheel不能响应了(有焦点时是正常的)。此时子窗体的标题栏依然是高亮,但察看Focused属性已经是false了。

在子窗体的MouseDown中加入
bool bolFocus=this.MdiParentForm.Focus();
得到bolFocus为false,父窗体获取焦点失败。

在父窗体中定义子窗体映像frmChildForm,在出现这种情况后运行
bool bolFocus=frmChildForm.Focus();
得到也为false。
使用select()函数也是这样的结果,请问是什么原因呢?

请问该如何解决呢?谢谢!!
...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxdl1981 2006-03-15
  • 打赏
  • 举报
回复
更好的办法:
ChildForm_MouseEnter(...)
{
this.BringToFront();
}
wxdl1981 2006-03-15
  • 打赏
  • 举报
回复
在子窗体的MouseMove事件中使子窗体置前
dayasky 2006-03-15
  • 打赏
  • 举报
回复
原来是winform,进错门了,呵呵
lxspine 2006-03-15
  • 打赏
  • 举报
回复
还是没有找到原因,不过想了个蹩脚的方法:
点击子窗体时判断一下Focused;若为false则
this.Hide();
this.Show();

呵呵,屏幕闪一下焦点就回来了。不过挺汗的。

在好多地方都问了,都没有人回。在想是不是.net的问题。

问另一个方面的问题:
MDI子窗体不是父窗体的控件,那么他和其他控件之间的焦点的层次是什么样呢?
lxspine 2006-03-15
  • 打赏
  • 举报
回复
BringToFront()是把控件叠放顺序提前,并不能使其具有焦点,而且MDI子窗体不是父窗体的控件,在父窗体空间获取焦点时,子窗体仍是高亮的,只是Focused成了false了。

110,536

社区成员

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

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

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