如何让一个窗体始终处于另一个窗体上层

Dreamia 2008-08-25 05:14:51
我设计了一个程序,其中有frmMAIN是主要内容窗体,frmEDIT是属性窗口,该属性窗口不在TaskBar上面显示,并且也不是MDI子窗体。
因为该窗口没有在Taskbar上面,所以我希望,当该窗体打开的时候,只要切换到该程序,该窗体就处于frmMAIN的上层。
换个说法,我希望该程序激活的时候,frmEDIT就获得焦点,处于frmMAIN上层,而frmMAIN失去焦点。
我在网上找了,只找到如何让窗体位于所有窗体的最上层,这不是我要的。
...全文
220 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SYSSZ 2008-08-26
  • 打赏
  • 举报
回复
'将frmEDIT设为启动窗体
Private Sub Form_Load()
frmEDIT.Hide
frmMAIN.Show
frmMAIN.ZOrder (1)
End Sub
Private Sub Command1_Click()'frmMAIN上的按钮
frmEDIT.Show
End Sub
Tiger_Zhao 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 Dreamia 的帖子:]
我希望该程序激活的时候,frmEDIT就获得焦点,处于frmMAIN上层,而frmMAIN失去焦点。[/Quote]
如果你指的激活是只需要启动是一次,那么在 Form_Load 中执行。
如果是指焦点切换时的行为,为什么不要模态显示?
幻影时空 2008-08-26
  • 打赏
  • 举报
回复
呵呵~~ 它是把代码放到了窗体激活的事件里了
而问题是你如何要把这个 打开frmEdit窗体的代码放在哪里呢? 是在某个按钮操作之后呢?还是..? 如果是呢~~

我觉得, 就你把代码放置对应的事件中就好了~~

比如说有Command1_Click事件

Private Sub Command1_Click()
frmEdit.Show vbModeless, Me
End Sub


不就可以了嘛~~
Dreamia 2008-08-26
  • 打赏
  • 举报
回复
似乎有出入
加了这个语句,frmEDIT就自动打开了,而且始终处于最顶层,无法关闭。一关闭,马上又自动打开。
而我想要的效果是,如果frmEDIT处于打开状态,才处于最顶层。
LWMWORK 2008-08-26
  • 打赏
  • 举报
回复

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const SWP_SHOWWINDOW = &H40

Private Sub Command1_Click()
Print "ok"
End Sub

Private Sub Form_load()
Dim retValue As Long
retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX, Me.CurrentY, 300, 200, SWP_SHOWWINDOW)
End Sub
xixihaha_2011_098 2008-08-26
  • 打赏
  • 举报
回复
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const HWND_TOPMOST = -1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H8


Private Sub Form_Load()

SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE
End Sub
shenkan007 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Tiger_Zhao 的回复:]
frmMAIN 中

VB codePrivate Sub Form_Activate()
frmEdit.Show vbModeless, Me
End Sub
[/Quote]
IDtoID 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Tiger_Zhao 的回复:]
frmMAIN 中

VB codePrivate Sub Form_Activate()
frmEdit.Show vbModeless, Me
End Sub
[/Quote]


学习下.....
xks 2008-08-26
  • 打赏
  • 举报
回复
....
canylove 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 SYSSZ 的回复:]
'将frmEDIT设为启动窗体
Private Sub Form_Load()
frmEDIT.Hide
frmMAIN.Show
frmMAIN.ZOrder (1)
End Sub
Private Sub Command1_Click()'frmMAIN上的按钮
frmEDIT.Show
End Sub
[/Quote]
Tiger_Zhao 2008-08-25
  • 打赏
  • 举报
回复
frmMAIN 中
Private Sub Form_Activate()
frmEdit.Show vbModeless, Me
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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