有两个窗体,form1,form2,在form1中button1有一个单击的方法 private void button1_Click(object sender, EventArgs e)
{
Form1 f2 = new Form2();
DialogResult dr = f2.ShowDialog();
if (dr == DialogResult.OK)
{
MessageBox.Show("OK");
}
else
MessageBox.Show("Cancel");
}现在form2中有两个方法.
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
} private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
}如果只单击这两个按纽,返回的结果当然 ok 或是 cancel 了.现在有个问题,就是在你关闭窗口时,即关右上角的叉时,返回 cancel了.请用最少的代码完成这一任务.
{
Form1 f2 = new Form2();
DialogResult dr = f2.ShowDialog();
if (dr == DialogResult.OK)
{
MessageBox.Show("OK");
}
else
MessageBox.Show("Cancel");
}现在form2中有两个方法.
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
} private void button2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
}如果只单击这两个按纽,返回的结果当然 ok 或是 cancel 了.现在有个问题,就是在你关闭窗口时,即关右上角的叉时,返回 cancel了.请用最少的代码完成这一任务.
FormClosing你得设置吧,否则点关闭那个叉,怎么返回cancel?如果你设置了 FormClosing ,默认在DialogResult 后会再次调用 FormClosing .这个不能解决.
this.DialogResult = DialogResult.Cancel;
{this.DialogResult = DialogResult.Cancel;
}
{
if (MessageBox.Show("退出", "?", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK) e.Cancel = true; }
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (MessageBox.Show("确定要关闭","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information) != DialogResult.OK)
{
e.Cancel = true;
}
base.OnFormClosing(e);
}