C# winfrom 关于窗体状态的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:36:22
if (Program.frm.Visible)如窗体一是隐藏的话.
{
Program.frm.Show();窗体一出现
this.Close();窗体二关闭.
}
else
{
Application.Exit(); /*在窗体事件 FormClosed中,关闭此窗体,虽为子窗体也将程序结束*/
}

这个是我随便写的,因为窗体一用的是Hide()隐藏的.如何在窗体二中得到别的窗体的状态尼?请高手回答,谢谢.

if (Program.frm.Visible)如窗体一是隐藏的话.
这句就错了,少了一个"!"

得到窗体状态可以,你可以在第一个窗题Program.frm.Show();窗体一出现
的时候,把自己传给第二窗体Program.frm.Show(this);
那么进去的时候就能当参数访问了。

不过最好的办法是”广播消息“

要想得到其他窗体的状态,必须其他窗体为共享的,如何实现共享,可以将目标窗体设为静态的.
如:
写一个类在类中写
public static Form2=new Form2();

如果你想显示form2,那么直接类名.Form.show();
通过类名.Form2.Form.Visible是否为true可以判断这个窗体的状态,当然这只是一部分做法.

这个问题的根源是你没搞清楚多窗体之间如何运作.

多个窗体之间的参数传递与数据共享(附:UML图)
http://hi.baidu.com/jonnysuen/blog/item/3bc66c3c1c67cbe73c6d9753.html

这是我回答的类似问题。

这个得看你说的是什么类型的状态了.如果是最大最小化这样的是有自己带的方法的.如果是你说的这个自己随便写的状态显然没有现成的方法
通常是定义一个枚举用来表示状态.这个代码LZ能写出来,那么这个枚举LZ应该也会写.

把窗体一传给窗体二,或把窗体一的状态公开出来