一个主窗体Mainform点击X的时候弹出了子窗体RemindForm函数如下
this.FormClosing+=new FormClosingEventHandler(MainForm_FormClosing);
void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
/*第二种方案*/
DialogResult result = RemindForm.ShowRemindForm();
子窗体有个静态方法:
public static DialogResult ShowRemindForm()
{
using( RemindForm remind = new RemindForm())
{
return remind.ShowDialog();
}
}
问题是:我点击子窗体上的X的时候Mainform也跟着自动关闭了,搞不懂为什么,求指教!!
其实我就是要做类似于QQ退出的这个功能但在子窗体如图中各种事件绕晕了
为什么会关闭我就懒得说了,我只告诉你如何在Closing事件中阻止关闭:
void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true; // 取消关闭
}
在子窗体中写还是主窗体写呢
@十四: 主窗体
@Launcher: 我陷入了怪圈谢谢你!!如果在子窗体中点击某个按钮让主窗体关闭或者最小化呢 如何控制
@十四: 首先你得拿到主窗体的引用,可以通过子窗体的 Parent 或 MdiParent 来取得,或者在创建子窗体的时候作为参数赋值给子窗体。然后你就可以在子窗体中调用父窗体的Close来关闭窗体,或设置WindowState = Minimized 来最小化窗体。
@Launcher: 后面这个用praent 失败了,可否有具体点的例子。中间转换e.Cancel =false true搞晕了
@十四:
namespace WindowsFormsAnswer { public partial class MainForm : Form { public MainForm() { InitializeComponent(); this.FormClosing += new FormClosingEventHandler(MainForm_FormClosing); } void MainForm_FormClosing(object sender, FormClosingEventArgs e) { // 显示关闭系统确认对话框 AboutBox dlg = new AboutBox(); // 如果用户点击了取消,则不关闭。 if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) e.Cancel = true; } } }
@Launcher: 多谢,如今已经搞定了。