1、在子窗体的OnClosing中写代码,来显示主窗体
2、并非mdi的主窗体就不能设背景图片。
2、并非mdi的主窗体就不能设背景图片。
解决方案 »
- 父窗体combobox的数据怎样在子窗体的combobox出现
- OOP的一个问题
- log4net的log4net.ILog.info()
- 新手,求一些c#开发常用的小工具
- 如何固定页面字体大小,使其对用<fond>标签定义的文字也有效?
- 难度问题....如何读取有多个相同类型的节点的XML文档呢?
- 紧急求助一个在excel中画曲线图的问题!
- ???大家能提供一点关于语音聊天的c#文章和代码么?
- 新实例的DataTable如何为它添加一个DataRow?
- 关于防火墙的编程问题?!(300分)
- 初学ASP。NET,问一简单问题
- Anders Hejlsberg 谈 C# 3.0(Cw (That's C Omega))
---〉OnClosed
form2.ShowDialog();//底下直接写上你的打开Form1的代码就行了。他会在Form2关闭才执行Form1的
form1.Show();
---〉OnClosed
public form1 frmOwner;然后在Form1中将this赋给Form2中的该变量。在Form2的关闭事件(Closing那个事件)中写:frmOwner.Show()就可以了。
我弄错了,如 birdxxxx(爱上老鼠的猫) 的方法可行。
新窗口构造函数:
public class Form2 : System.Windows.Forms.Form
{
private Form1 frmMain;
public Form2(Form1 form)
{
frmMain = form;
}
新窗口关闭时:
private void Form2_Closed(object sender, System.EventArgs e)
{
frmMain.Visible = true;
}
}
打开新窗口:
private void button1_Click(object sender, System.EventArgs e)
{
this.Visible = false;
Form2 form = new Form2(this);
form.ShowDialog();
}
你的解答:
在Form1的打开Form2的窗体事件中写:
form2.ShowDialog();//底下直接写上你的打开Form1的代码就行了。他会在Form2关闭才执行Form1的
form1.Show();
有效,我再问一个问题。如果我用Show方法,但我要打开多个窗口,即每个LinkLabel打开一个窗口,但同一个窗口只打开一个,不允许重复,这种情况下主窗口是一直显示的。
我试过类似Form1 theForm1 = new Form1(),一开始就声明了theForm1,当要打开theForm1的时候判断theForm1是不是null,但发现theForm1打开后再关闭以后theForm1就不再是null了,请问该怎么办呢?
用theForm1.Dispose();
这样取到的theForm1才是null
form1.Closed+=new eventhandle(this.form_Closed);
form2.Closed+=new eventhandle(this.form_Closed);
在事件里处理
form_Closed(sender, e)
{
if (sender is form1) //form1关闭 处理
if (sender is form2) //form2关闭 处理
}
不过这部分我到现在都无法深入理解,只有浅显的认识。
{
theMonitorForm = new Operation();
theMonitorForm.GetGuid = this.userguid;
theMonitorForm.DisplayUserInfo();
theMonitorForm.VisibleChanged += new EventHandler(this.VisibleChanged);
theMonitorForm.Show();
// this.Hide();
// theMonitorForm.ShowDialog();
// this.Show();
} private void frmMain_VisibleChanged(object sender, System.EventArgs e)
{
if(sender == theMonitorForm)
{
theMonitorForm = null ;
}
}
错误信息:
事件“System.Windows.Forms.Control.VisibleChanged”只能出现在 += 或 -= 的左边
至于怎么样在子窗体中使用主窗体,你只要将主窗体的引用传递给子窗体就可以了,这个可以在子窗体的构造函数里完成
bool IsOpen=false;//窗体关闭在载入事件中将它设为ture就是打开了,关闭事件中设为false就是关闭了。
你在程序的任何地方判断这个值就行了。
问题:怎么知道打开的窗口什么时候被关闭呢?注:本来想把主窗口的IsMdiContainer设成true,结果发现如果设成true窗口就不能用背景图片了,而且主窗口的大小不能太大,不能全屏,不能改变大小(为了美观),但子窗口却是需要全屏的,所以把主窗口的IsMdiContainer设成true感觉不太好。问题已经解决,答案如下:谢谢birdxxxx(爱上老鼠的猫)!
你的解答:
在Form1的打开Form2的窗体事件中写:
form2.ShowDialog();//底下直接写上你的打开Form1的代码就行了。他会在Form2关闭才执行Form1的
form1.Show();
有效,我再问一个问题。
请注意,这才是我现在问的问题!
Begin---------------------------------------------------------------------------------
如果我用Show方法,但我要打开多个窗口,即每个LinkLabel打开一个窗口,但同一个窗口只打开一个,不允许重复,这种情况下主窗口是一直显示的。
我试过类似Form1 theForm1 = new Form1(),一开始就声明了theForm1,当要打开theForm1的时候判断theForm1是不是null,但发现theForm1打开后再关闭以后theForm1就不再是null了,请问该怎么办呢?
End-----------------------------------------------------------------------------------
也就是说在主窗口打开子窗口的时候,如果子窗口式null 就new(),如果不是null,就show()。
同时在子窗口closing事件中, e.cancel=true; this.hide();