日期:2014-05-19  浏览次数:20709 次

实在不会了,请教:当两个窗体之间的关系不同时......
winForm

有两个窗体frmA、frmB,当frmB获取焦点时:
1.如果frmB是frmA的子窗体,则frmA与frmB会同时显示为激活状态;
2.如果frmB与frmA不存在父子关系时,则frmB显示为激活状态,而frmA为非激活状态。

现在我想实现这样一个现象:frmB与frmA不存在父子关系,但是当frmB获取焦点时,两窗体都显示为激活状态,请问该怎样实现呢?

谢谢。

查看了form类的   WndProc过程,发现了这一部分代码:
Select   Case   m.Msg
Case   &H86
                        If   Me.IsRestrictedWindow   Then
                                MyBase.BeginInvoke(New   MethodInvoker(AddressOf   Me.RestrictedProcessNcActivate))
                        End   If
                        MyBase.WndProc((m))
                        Return

但是,看了很久也没看明白。

再次请高手指教一下。
再次谢谢!

------解决方案--------------------
两个窗口都为激活状态??!
第一次听说!
------解决方案--------------------
frmB获得焦点的时候,检查是否有frmA的事例,如果有则一起获得焦点
通过程序集的方法可以实现
------解决方案--------------------
这种功能用异形窗体来做应该比较现实...

两个窗体都去掉边框,根据情况来套不同的图片,用于表示激活与非激活...

嗯.至于LS说可以用程序集的方法实现,这个我也想知道...

继续关注! 请指教...

^o^
------解决方案--------------------
如果两个窗口都为激活的情况下,最上面的窗口是用来模拟窗口直接画出来的(本质上,并不是真正的窗口),这样才可以实现双窗口激活,前面不抢后面窗口的焦点。
------解决方案--------------------
又学习了一把。
------解决方案--------------------
Private Sub frmA_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim frm As frmB= New frmB
frm.Show(Me)
End Sub
------解决方案--------------------
两窗体都显示为激活状态,理解错了?难道两窗体都有焦点?
------解决方案--------------------
类似悬浮状态的QQ窗体么?
------解决方案--------------------
只有写类似浮动窗体控件才可以实现,普通的窗口是不可以的

------解决方案--------------------
重构标题栏,记得以前看过这方面的源码,上百度找一下很多的.
------解决方案--------------------
protected override bool ShowWithoutActivation
{
get
{
return true;
}
}
------解决方案--------------------
up