mainform:
private flag=0;MainForm_Closing: 置flag =1;ChildForm_Closing: 置flag =2;这样就可以判断了
private flag=0;MainForm_Closing: 置flag =1;ChildForm_Closing: 置flag =2;这样就可以判断了
解决方案 »
- 如何采集音乐和歌曲?
- 邮件发送怎么样检测邮箱是否真实存在
- dll文件不再应用程序根目录下,在不修改程序的情况下如何调用。
- winform打包问题
- 关于winfrom里面 关闭窗体的问题30分
- 请问如何用C#,实现 excel 同一个单元格内的 字体大小 不同呀
- 有关线程结束的问题,大家帮帮忙啊
- 问个GDI+的问题,如果画翻转的图片?
- .net4.0中,wcf的数据契约上可以不用写DataContract和DataMember标签了么?
- 我想問在C#中,我用string[] drives=Directory.GetLogicalDrives();已經得到我機器上的邏輯磐的磐符,但是我怎嗎知道這些磐符中那些是軟
- 请各位帮个忙 (有关Word插件)给点思路(能给出具体的代码 更好罗!!)
- 帮忙:解决一下计算字段问题
this.Visible=false;
e.Cancel=true;如何判断是用户关闭还是应用程序在关闭,我想可以通过发消息传入不同参数来解决吧
{
//为真时是用户操作关闭
if(this.Focus())
{
this.Visible=false;
e.Cancel=true; }
}
没测试就写上去是没有一点责任心的!
我想在子窗体被用户点击关闭按钮时不销毁, 而是隐藏起来,省去再次打开时重新加载数据并显示。
因此有:
private void ChildForm_Closing(...)
{
this.Visible=false;
e.Cancel=true;
}在主窗体的Closing函数里显示一个确认对话框,如下:
private void MainForm_Closing(.....)
{
DialogResult r=MessageBox.Show( this, "文档已修改,是否保存?");
if( r == DialogResult.Cancel )
e.Cancel=true;
else
e.Cancel=false;}而主窗体在调用Closing事件处理函数之前,是会调用子窗体的Closing事件函数的,
因此显示确认对话框时,当前的子窗体已经被调用Closing()函数了,就是已经被隐藏了。
但是此时程序还未关闭, 这不是希望看到的。 不知道有什么方法可以解决此问题? 或者实现这样的功能?
e.Cancel=true;
不能直接调用Application.Exit()。 http://community.csdn.net/Expert/topic/3648/3648493.xml?temp=.1477777文章没有什么用啊。
static public bool IsMdiClosed = false;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_CLOSE)
主窗体类名.IsMdiClosed = true;
base.WndProc (ref m);
}在子窗体就可以利用这个标志做你要做的事情了
{
if (m.Msg == WM_CLOSE)
主窗体类名.IsMdiClosed = true;
base.WndProc (ref m);
//最好把这句加上,免得出错
if (m.Msg == WM_CLOSE)
主窗体类名.IsMdiClosed = false;
}
bool flag = false;
private void Form2_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(this.flag)
{
this.Visible=false;
e.Cancel = true;
Debug.WriteLine("用户操作"); }
else
{
e.Cancel = true;
Debug.WriteLine("不是用户操作");
}
}
protected override void WndProc(ref Message m)
{
if(m.Msg == 16)
{
this.flag = true;
}
else
{
this.flag = false;
}
base.WndProc (ref m);
}
form1中:
private void Form1_Load(object sender, System.EventArgs e)
{
this.IsMdiContainer = true;
frm = new Form2();
frm.MdiParent = this;
frm.Show();
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(DialogResult.No == MessageBox.Show("是否关闭","系统提示",MessageBoxButtons.YesNo, MessageBoxIcon.Warning))
{
e.Cancel = true;
}
else
{
Application.Exit();
}
}
楼主看看是不是你想要的效果