关于窗体显示的问题求教

lgllps 2008-05-05 12:39:39
有二个窗体form1 form2 ,在form1中有一个按钮,代码为:

sub command1_click()
form2.show 1
end sub

这样存在的问题是,如果此时对 form2 最小化,form2的图标只显示在屏幕左上角,不在任务栏;特别麻烦的是,form1始终占在桌面上,影响做其他事情。

为解决form1霸占桌面的问题,对代码进行了改进:

sub command1_click()
form1.visible=false
form2.show 1
form1.visible=true
end sub

这样,只要打开form2,form1就不见了,解决了霸占桌面的问题。可接着又有问题了,就是如果对 form2 最小化,任务栏什么都没有,必须退出其他程序,才能从左下角找回form2的图标。

为此,特向各位大师求教,恳望指点迷津:我希望在form2.show的时候,在任务栏显示form2的图标,以便从任务栏对form2进行最小化切换;而且form1隐藏,不占住桌面,请问该如何实现?
...全文
116 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tim_zhang 2008-05-06
  • 打赏
  • 举报
回复
在Form2上也增加个窗体按钮,
执行如下:
Form2.Visible = False
Form1.Show 1
Form2.Visible = True
wfzhu2000 2008-05-06
  • 打赏
  • 举报
回复
呵呵,高人真多
lsftest 2008-05-06
  • 打赏
  • 举报
回复
这个问题的要求本身就无聊,可以用其它方法替代的,不过楼主一定要这样也有办法:
form1:
Private Sub Command7_Click()
Form2.Show 1
End Sub

form2:
Private Sub Form_Activate()
Dim dwsty As Long
dwsty = GetWindowLong(Form2.hwnd, GWL_EXSTYLE)
dwsty = dwsty Or WS_EX_APPWINDOW And Not WS_EX_TOOLWINDOW
dwsty = SetWindowLong(Form2.hwnd, GWL_EXSTYLE, dwsty)
Form1.Visible = False
Form2.Visible = False
Form2.Visible = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
Form1.Show
End Sub

form1隐藏后form2会出现在任务栏,需要的api声明等自己加。
moyifeng 2008-05-05
  • 打赏
  • 举报
回复
用 form2.show
后面不要带参数
这样2个窗体都可以最小化
舉杯邀明月 2008-05-05
  • 打赏
  • 举报
回复
如果Form2显示时,Form1可以隐藏,可以用8楼的代码。

但是,两个窗体都应该是:
ShowInTaskBar = True
chne2004 2008-05-05
  • 打赏
  • 举报
回复
这个确实比较难办
tanjiunnya 2008-05-05
  • 打赏
  • 举报
回复
Form1 的 ShowInTaskBar = FALSE
-----------------------------
Form1 的 CommandButton

Form1.Hide
Form2.Show

==============================

Form2 的 ShowInTaskBar = TRUE

------------------------------

Form2 的 Unload 事件

Form1.Show ' 关闭Form2的时候,即刻显示Form1
舉杯邀明月 2008-05-05
  • 打赏
  • 举报
回复
这不太好办.........
舉杯邀明月 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenjl1031 的回复:]
设置2个窗体的ShowInTaskBar=true
[/Quote]
smoked 2008-05-05
  • 打赏
  • 举报
回复
form1代码

public CurrentState as Long

private sub command1_click()
currentstate=me.windowstate
me.windowstate=1
form2.show
end sub

form2代码

private sub form_unload(cancel as integer)
form1.windowstate=form1.currentstate
end sub

如果一定要使两个窗体保持层次关系,form1代码中
form2.show
改为
form2.show ,me
不要用模式窗体
杨哥儿 2008-05-05
  • 打赏
  • 举报
回复
把两个窗体分别做成两个应用程序不就行了.
zzyong00 2008-05-05
  • 打赏
  • 举报
回复
是啊,何必非得用模态方式显示呢?
东方之珠 2008-05-05
  • 打赏
  • 举报
回复
设置2个窗体的ShowInTaskBar=true

7,763

社区成员

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

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