急急急急,C#高手请帮帮小弟!

[复制链接]
查看11 | 回复9 | 2014-2-19 11:55:14 | 显示全部楼层 |阅读模式
我想在主窗口限制调用另一个 window 窗口出现的次数!
只想它显示一次,按第二次的时候就提示“你已经打开窗口”
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
The main window should have a variable pointing to the secondary window. Check if the second window is NOT null and 提示“你已经打开窗口”.
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
publicbool cs;
if(cs!=false)
{
form2.Show();
}
else
{
MessageBox.Show("窗口已经打开&quot

;
}
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
写了代码,但是没有达到效果!怎么回事!
我想用一个cs变量来限制它!
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
to use a variable, try this:
//try to use descriptive variable.
public bool formIsOpen = false;
if(!formIsOpen)
{
form2.Show();
formIsOpen = !formIsOpen //toggle the flag
}
else
{
MessageBox.Show("窗口已经打开&quot

;
}
But this code does not really work because the user can close the second form, and your varible isFormOpen is still true....
The best way is still check if (form2 == null)
if (form2!== null){
MessageBox.Show("窗口已经打开&quot

;
}
else{
form2.Show()
}
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
如果采用的多文档模式可以在打开窗体之前在父窗体中查找是否有同类型的窗体如果有则激活这个窗体而不是打开!这样就可以始终打开一次!
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
Thank you . ButI find a best way to do it.
public static bool OpenForm=true;
if(OpenForm==true)
{

Form4 form4 = new Form4 ();

form4.Show ();
OpenForm=false;

}
然后在 Form4 中 使用事件 Closed
Form1.OpenForm=ture //Form1 是主窗口
这样我就限制它只能调用一次。
不过我把
public static bool OpenForm=true;
这句改成
public bool OpenForm=true;
它就会用问题,调用一次关闭后总会把 OpenForm的值附为 false
有点不明白,为什么要用静态变量才可以?
谢谢!
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
静态变量就是全局变量!程序一开始就分配存储空间,直到程序退出才释放!所以你哪个计数器用静态变量才可以!
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
但是用静态变量会占用比较多的内存!
能不能在我的那段代码中改用其它的呢!
#region 判断子窗体是否有实例
private bool ExistChildForm(string strFormName)
{
foreach(Form formChild in this.MdiChildren)
{
if (formChild.Name.ToString() == strFormName)
{
formChild.BringToFront();
return true;
}
}
return false;
}
#endregion
这种方法是另外一个朋友教我的,但是~~~~~~~~~~~~~~~
初学 SQL和 C# 所以不太明白!
回复

使用道具 举报

千问 | 2014-2-19 11:55:14 | 显示全部楼层
你朋友这个方法才是正解


我第一次已经给你说了 但是没有给出代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行