如何判断窗体是否打开

bowlingljf 2009-05-08 03:54:26
加精
VB2005的环境

有两个窗体Form1, Form2

在Form1中的按钮A中:
Dim a As New Form2
a.Show()

重复点击按钮A会打开多个Form2,请问在打开之前能否先判断a是否打开,如果已经打开则激活a并显示到最前面。

请问VS2005有没有什么新的方法来判断?
...全文
5105 74 打赏 收藏 转发到动态 举报
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
wshjmjxy 2012-06-20
  • 打赏
  • 举报
回复
好像有一个Active属性
lhjsj 2011-08-23
  • 打赏
  • 举报
回复
学习中
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 terrylhw1983 的回复:]

if (a.Visible)
{
// 窗体是Show的。
}
else
{
// 窗体是Hide的。
}
[/Quote]

果断有用!
yuzhoufeng888 2011-01-27
  • 打赏
  • 举报
回复
其实只要保证点击按钮后不重复弹出新窗口而不用重新修改里面的内容的话上面的好几种办法都是可行的。思路也很清晰,首先判断实例是否已经被建立,如果建立就激活,否则,建立该实例!
tc8210 2010-12-15
  • 打赏
  • 举报
回复
受益非浅
tackxiang 2010-08-18
  • 打赏
  • 举报
回复
似乎还有其他的方法,比如说,在点完后将buttonX.enabled=false是不是也可以起到你想要的效果呢?
ElfSundae 2010-06-30
  • 打赏
  • 举报
回复
看见是推荐贴才点进来的。。不知道楼主解决了这个问题没,我的方法如下:



Public Class MainForm

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
If My.Forms.Form2 Is Nothing Then
My.Forms.Form2.Show()
Else
My.Forms.Form2.Focus()
End If
End Sub

End Class


MainFomr 里的Button1 要打开 Form2
xiaolinvfp 2010-06-15
  • 打赏
  • 举报
回复
楼主不厚道,我的方法是可以的,我自己都是这样用,居然不给分.
xiaolinvfp 2010-06-11
  • 打赏
  • 举报
回复
Dim frmXsZdy As New frmXsZdy
If My.Application.OpenForms.Item("frmXsZdy") Is Nothing Then
frmXsZdy.objGrid = Me.Ugrid_Mx
frmXsZdy.Show()
Else
My.Application.OpenForms.Item("frmXsZdy").WindowState = FormWindowState.Normal
My.Application.OpenForms.Item("frmXsZdy").Activate()
End If

我是这样来判断的
my13513480001 2010-05-07
  • 打赏
  • 举报
回复
重复点击
占位学习!
wangzi1188 2009-06-02
  • 打赏
  • 举报
回复
http://www.cheahoo.com
tong04 2009-05-30
  • 打赏
  • 举报
回复
不懂为什么推荐
VB里有现成的函数,一行就搞定,为什么搞这么复杂
qiqundelang 2009-05-20
  • 打赏
  • 举报
回复
浏览
wangjuenhui520 2009-05-18
  • 打赏
  • 举报
回复
在正常情况下,如果点击当前button 启动了一个form 那么可以使用3种方式来防止勿操作。

第一是使用showdialog 方法,使用户只能操作子窗体,这样就避免的用户应为勿操作引起的数据丢失或其他问题。

第二是在产生子窗体打开的时间上下功夫,比如LZ当前使用的是button 那么可以在打开后让button的enabled =false
再子窗体关闭后再让enabled = true

第三就是上面很多朋友的方法都可行, 首先判断子窗体有没有创建,使用Created方法 或使用 application.openforms 属性,检测是否有开启,如果有开启者 [子form].Focus ()
zhuweiping2003 2009-05-18
  • 打赏
  • 举报
回复
学习
hbutwzc 2009-05-18
  • 打赏
  • 举报
回复
If IsNothing(frmUpDown) Then
Dim frmDown As frmUpDown = New frmUpDown
frmDown.Show()
Else
frmUpDown.Activate()
frmUpDown.Show()
End If
古今多少事 2009-05-17
  • 打赏
  • 举报
回复
环境:VB.NET2005
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New Form2
If a.Created = True Then
MsgBox("Form2已经在运行!")
Me.Close()
Else
If Form2.Created = True Then
MsgBox("Form2已经在运行!")
Else
Form2.Show()
End If
End If

End Sub
End Class

ldshyjqdan 2009-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 TerryLhw1983 的回复:]
Sorry,写成C#了
你改成VB.NET就好了。
IF a.Visble THEN
// 窗体是Show的。
ELSE
// 窗体是Hide的。
END IF
[/Quote]

RIGHT
shaozhi_2724 2009-05-16
  • 打赏
  • 举报
回复
顶了
bowlingljf 2009-05-16
  • 打赏
  • 举报
回复
现在不可以对贴子加分了?从管理中进去半天也没找到加分的地方。哪位朋友知道怎么给贴子加分?
加载更多回复(50)

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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