在C# WinForms中,DialogResult是一个枚举类型,用于指定对话框的返回值。它通常与模态对话框(modal dialog)一起使用,以指示用户是点击了“确定”按钮、“取消”按钮,还是关闭了对话框窗口。使用DialogResult可以帮助你根据用户的操作来执行不同的代码逻辑。
基本用法
当你显示一个模态对话框时(比如使用ShowDialog()方法),你可以通过检查对话框返回的DialogResult值来决定接下来做什么。
示例:使用MessageBox的ShowDialog方法
MessageBox是WinForms中内置的一个简单对话框,用于显示消息给用户。它有一个ShowDialog()方法,该方法会阻塞当前线程直到用户关闭对话框,并返回一个DialogResult值。
csharp复制代码
DialogResult result = MessageBox.Show("你确定要退出吗?", "退出确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
// 用户点击了“是”,执行退出操作
Application.Exit();
}
else
{
// 用户点击了“否”,不执行退出操作
MessageBox.Show("操作已取消。");
}
自定义对话框
对于自定义的对话框(继承自Form的类),你通常需要在对话框中定义一些按钮(比如“确定”和“取消”),并为这些按钮的点击事件设置逻辑,以返回不同的DialogResult值。
csharp复制代码
// 假设你有一个名为MyCustomDialog的自定义对话框类
MyCustomDialog dialog = new MyCustomDialog();
// 显示对话框并获取返回值
DialogResult result = dialog.ShowDialog();
if (result == DialogResult.OK)
{
// 用户点击了“确定”按钮
// 执行相应操作
}
else if (result == DialogResult.Cancel)
{
// 用户点击了“取消”按钮或关闭了对话框
// 执行相应操作
}
在自定义对话框类中,你需要在按钮的点击事件处理器中设置this.DialogResult的值。例如:
csharp复制代码
private void btnOK_Click(object sender, EventArgs e)
{
// 假设btnOK是“确定”按钮
this.DialogResult = DialogResult.OK;
// 关闭对话框
this.Close();
}
private void btnCancel_Click(object sender, EventArgs e)
{
// 假设btnCancel是“取消”按钮
this.DialogResult = DialogResult.Cancel;
// 关闭对话框
this.Close();
}
这样,当用户点击这些按钮时,对话框就会关闭,并返回相应的DialogResult值给调用者。