读书人

怎么判断窗体是否打开

发布时间: 2012-02-19 19:43:38 作者: rapoo

如何判断窗体是否打开
VB2005的环境

有两个窗体Form1, Form2

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

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

请问VS2005有没有什么新的方法来判断?

[解决办法]
if (a.Visible)
{
// 窗体是Show的。
}
else
{
// 窗体是Hide的。
}
[解决办法]
Sorry,写成C#了
你改成VB.NET就好了。
IF a.Visble THEN
// 窗体是Show的。
ELSE
// 窗体是Hide的。
END IF
[解决办法]

VB.NET code
Dim a As New Form2 a.ShowDialog()
[解决办法]
探讨
Sorry,写成C#了
你改成VB.NET就好了。
IF a.Visble THEN
// 窗体是Show的。
ELSE
// 窗体是Hide的。
END IF

[解决办法]
try it
VB.NET code
Dim a As Form2'在Form1中的按钮A中:if a is nothing then a=New Form2 a.Show()
[解决办法]

VB.NET code
    Dim a As Form2    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        If a Is Nothing Then a = New Form2        a.Show()    End Sub
[解决办法]
VB.NET code
dim a as Form2a.show
[解决办法]
VB.NET code
dim a as form=form2a.show
[解决办法]
原来是说重复点击。。。
也就是说LZ在按钮点击的时候才new。。。
汗。。。没说清楚哦。。。呵呵。
5楼正解。

[解决办法]
VB.NET code
Form2.show()
[解决办法]
VB.NET code
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Form2.Show()        Form2.Focus()    End Sub
[解决办法]
这样是否就能满足你了呢

C# code
    public partial class Form1 : Form    {        Form2 form2;        public Form1()        {            InitializeComponent();        }        private void btn_show2_Click(object sender, EventArgs e)        {            if (form2 == null)            {                form2 = new Form2();                form2.BringToFront();                form2.Show();            }            else            {                if (form2.IsDisposed)                {                    form2 = new Form2();                }                form2.BringToFront();                form2.Show();            }        }    }
[解决办法]
呵呵,我也搞成C#的了,你自己改成VB.NET吧
[解决办法]
用true和false来判定,当打开时一个时就设置为一个值.这样说懂吗,不懂就加QQ问我469840643
[解决办法]
我说明下 我的代码
VB.NET code
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Form2.Show()        Form2.Focus()    End Sub
------解决方案--------------------


Form2 f = Form2.GetInstanc();
f.show();


......................

class Form2
{
private static Form2 instance = null;

public static Form GetInstance()
{
if(instance == null) instance = new Form2();
return instance;
}
}


System.Diagnostics.Process[] objProcess = System.Diagnostics.Process.GetProcessesByName("当前窗口的进程名");
if (objProcess.Length > 1)
{
// 将句柄指向当前窗口
// 这里我没有试过,楼主可以自己试试。
}
else
{
Application.Run(new 你要打开的窗口());
}
[解决办法]
foreach (Form frm in this.MdiChildren)
...{
if (frm is WorkerList)
...{
frm.WindowState = FormWindowState.Normal;
frm.Activate();
return;
}
}

WorkerList wl = new WorkerList();
wl.MdiParent = this;
wl.Show();
[解决办法]
05里不需要再用mdi了
[解决办法]
11楼方法可行,已经测试过了

探讨
VB.NET code Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.Show()
Form2.Focus()
End Sub

[解决办法]
没有这么复杂

bool blnIsHave = false;

foreach (Form var in Application.OpenForms)
{
if (var.GetType().ToString() == "类名")
{
blnIsHave = true;
break;
}
}
[解决办法]
用findwindow?
[解决办法]
我不明白你为什么说第一次打开会出错。
直接写FORM2.show在05里系统自动实例化
是不是说你不知道form2是什么?
form2就是你需要打开的那个form的名字.....
如果你那个名字叫form_aaa
那你应该写
form_aaa.show
[解决办法]
强烈建议 既然我把代码写在这 肯定都是经过测试的
希望各位不要单凭已有的概念来判断
版本更新了 功能上也肯定跟大家原有的了解不同
至少去测试下
[解决办法]
请先判断窗体是否存在,不存在,肯定没有显示
IF Form Is Nothing THEN

然后判断窗体是否显示,如果Form.Visble = False,
只要显示即可.


[解决办法]
不懂,帮顶
[解决办法]
用过23楼的方法。
有MDI窗体就用20楼的方法。

VB.NET code
Dim f As Form Private Sub TSMIDBSvSetting_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSMIDBSvSetting.Click        For Each f In Me.MdiChildren            If TypeOf f Is FrmSqlLoginUI Then                f.Activate()                Exit Sub            End If        Next        f = New FrmSqlLoginUI        f.MdiParent = Me        f.Show()    End Sub
[解决办法]
Dim a As Form2
'在Form1中的按钮A中:
if a is nothing then a=New Form2
a.Show()
[解决办法]
LZ 解决了吧
再帮你顶一下
[解决办法]
用一个全局变量,记录窗体

public a As Form2
在调用时判断:


if a is nothing then
a=new Form2
end if
a.Show()
a.active...()

[解决办法]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.Show()
Form2.Focus()
End Sub
方法好,我就是用的方法,
[解决办法]
环境:VB.NET2005
[code=VB.NET][/code]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


[解决办法]
If IsNothing(frmUpDown) Then
Dim frmDown As frmUpDown = New frmUpDown
frmDown.Show()
Else
frmUpDown.Activate()
frmUpDown.Show()
End If
[解决办法]
学习
[解决办法]
在正常情况下,如果点击当前button 启动了一个form 那么可以使用3种方式来防止勿操作。

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

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

第三就是上面很多朋友的方法都可行, 首先判断子窗体有没有创建,使用Created方法 或使用 application.openforms 属性,检测是否有开启,如果有开启者 [子form].Focus ()

读书人网 >VB Dotnet

热点推荐