有两个窗体Form1,Form2
public class Form1
{
public void Set()
{
Form2 frm = new Form2();
if( frm.ShowDialog(this) ==DialogResult.OK)
{
............
}
}
}public class Form2
{
private void btnOK_Click(object sender, EventArgs e) //button控件,name为“btnOK”,Text为“确定”
{
.......
....... //一些代码
this.DialogResult = DialogResult.OK;
}
}
也没见在Form2的btnOK_Click的事件中写“this.close()”这样的语句,可是点Form2的“确定”按钮,Form2窗体也就关闭了。这是为什么了?是不是和“this.DialogResult = DialogResult.OK;”语句有关?
public class Form1
{
public void Set()
{
Form2 frm = new Form2();
if( frm.ShowDialog(this) ==DialogResult.OK)
{
............
}
}
}public class Form2
{
private void btnOK_Click(object sender, EventArgs e) //button控件,name为“btnOK”,Text为“确定”
{
.......
....... //一些代码
this.DialogResult = DialogResult.OK;
}
}
也没见在Form2的btnOK_Click的事件中写“this.close()”这样的语句,可是点Form2的“确定”按钮,Form2窗体也就关闭了。这是为什么了?是不是和“this.DialogResult = DialogResult.OK;”语句有关?
---------------------------
是的,这个效果和在按钮上设置DialogResult属性的效果是一样的,系统自动的处理了.
----------------------------------------------------
这个相当于一个返回值!如果是showdialog()打开的话,就不用this.close()了他会自动关闭的
if (fs.ShowDialog() == DialogResult.OK)
{
_ReadRun_Info = new ReadConfigure(System.Environment.CurrentDirectory + "\\Run_Info.xml");
Initialize();
this.Enabled = true;
this.Show();
this.WindowState = FormWindowState.Normal;
}
else
{
this.Close();
}frmStart.cs btnOK_Click private void btnOk_Click(object sender, EventArgs e)
{
try
{
_ReadRun_Info.SetNodeValue("COM_PORT", cobPort.Text);
_ReadComInfo.SetNodeValue("PORT", cobPort.Text);
_ReadRun_Info.SetNodeValue("PROTOCOL", cobProtocol.Text);
_ReadRun_Info.SetNodeValue("CLASS", cboClass.Text);
_ReadRun_Info.SetNodeValue("CHECK_TIME", cboCheckTime.Text);
_ReadRun_Info.SetNodeValue("UNIT", cboUnit.SelectedIndex.ToString());
_ReadRun_Info.SetNodeValue("SAFE_CODE", txtSafeCode.Text.Trim());
_ReadRun_Info.SetNodeValue("REPORT_HEAD", txtReport.Text.Trim());
_ReadComInfo.SetNodeValue("PORT", cobPort.Text);
if (chkStart.Checked)
{
_ReadRun_Info.SetNodeValue("AUTO_START", "1");
}
else
{
_ReadRun_Info.SetNodeValue("AUTO_START", "0");
}
if (chkOilType.Checked)
{
_ReadRun_Info.SetNodeValue("CUSTOM_TYPE", "1");
}
else
{
_ReadRun_Info.SetNodeValue("CUSTOM_TYPE", "0");
}
this.DialogResult = DialogResult.OK;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "OPW-SYSTEM(Start)", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx