如何判断窗体是否打开
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()
[解决办法]
[解决办法]
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楼方法可行,已经测试过了
[解决办法]
没有这么复杂
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 ()