Form.ShowDialog()返回值的问题???

本文详细介绍了如何设置DataSourceSet窗体的返回值。主要讲述了两种方式:一是通过设置窗体上按钮的DialogResult属性;二是直接通过代码设置this.DialogResult。这两种方式均可使Form.ShowDialog()返回期望的值。

问题:

DataSourceSet是一个Windows窗体,我要定义一个该窗体的类对象
DataSourceSet DataSourceSetForm = new DataSourceSet();
if(DataSourceSetForm.ShowDialog() == DialogResult.OK)
{.......}
请问:DataSourceSetForm.ShowDialog()的返回值(DialogResult的枚举值),系统是根据什么判断窗体的返回值(DialogResult.OK,还是DialogResult.Cancel....)?
请帮我详细解释一下,谢谢???

解答:

你可以在窗體關閉前設定DialogResult啊!
例如﹕點擊OK按鈕﹐設this.DialogResult=DialogResult.OK

1:你可以给窗体上的按纽设置DialogResult属性来让窗体返回,比如:
Button b;
b.DialogResult = DialogResult.OK;

2:你可以手动的通过代码来设置,比如:

this.DialogResult = DialogResult.OK;

如上的两种方式都可以使Form.ShowDialog()返回DialogResult.OK的值,或指定的值.

namespace _2 { public partial class Form2 : Form { // 添加重新登录标志 public bool ShouldRelogin { get; private set; } = false; private string username; private string connectionString = "Data Source=localhost;Initial Catalog=学习管理助手;Integrated Security=True;"; private OpenFileDialog openFileDialog1 = new OpenFileDialog(); private WebBrowser webBrowser1 = new WebBrowser(); // 统一使用带参构造函数 public Form2(string username) { InitializeComponent(); this.username = username; // 初始化控件 openFileDialog1.Filter = "所有文件 (*.*)|*.*"; webBrowser1.Dock = DockStyle.Fill; panel1.Controls.Add(webBrowser1); // 显示当前用户名(可选) this.Text = $"用户管理 - {username}"; } private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) { } // 修复 DeleteUserAccount 方法 private bool DeleteUserAccount() { if (string.IsNullOrWhiteSpace(username)) { MessageBox.Show("用户名无效,无法执行操作", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; // 修复:改为 return false } using (SqlConnection conn = new SqlConnection(connectionString)) { try { conn.Open(); string query = "DELETE FROM T_User WHERE Uname = @Username"; using (SqlCommand cmd = new SqlCommand(query, conn)) { cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = username; int rowsAffected = cmd.ExecuteNonQuery(); if (rowsAffected > 0) { MessageBox.Show($"账号 {username} 已成功注销", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information); return true; } else { MessageBox.Show($"未找到用户 {username}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } } catch (SqlException sqlEx) { MessageBox.Show($"数据库错误: {sqlEx.Message}", "SQL错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } catch (Exception ex) { MessageBox.Show($"操作失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } } } // 添加 ShowLoginForm 方法 private void ShowLoginForm() { ShouldRelogin = true; this.Close(); } private void 退出登录ToolStripMenuItem_Click(object sender, EventArgs e) { if (DialogResult.Yes == MessageBox.Show("确认退出吗", "消息", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { ShowLoginForm(); // 使用统一方法 } } private void 注销账号ToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult confirm = MessageBox.Show($"确定要永久删除账号 {username} 吗?", "确认删除", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (confirm == DialogResult.Yes) { if (DeleteUserAccount()) { ShowLoginForm(); // 使用统一方法 } } } // 添加窗体关闭事件处理(可选) protected override void OnFormClosing(FormClosingEventArgs e) { base.OnFormClosing(e); // 如果需要重新登录,不取消关闭操作 if (ShouldRelogin) return; // 其他关闭逻辑(如确认退出) if (e.CloseReason == CloseReason.UserClosing) { var result = MessageBox.Show("确定要退出程序吗?", "退出确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.No) { e.Cancel = true; } } } private void 打开ToolStripMenuItem1_Click(object sender, EventArgs e) { // 显示打开文件对话框 if (openFileDialog1.ShowDialog() == DialogResult.OK) { // 获取选中的文件路径 string filePath = openFileDialog1.FileName; try { // 在 WebBrowser 控件中显示文件 webBrowser1.Navigate(filePath); } catch (Exception ex) { MessageBox.Show("打开文件时出错:" + ex.Message); } } } private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e) { FormUpdatePwd_User form = new FormUpdatePwd_User(); form.ShowDialog(); } private void panel1_Paint(object sender, PaintEventArgs e) { } private void 修改ToolStripMenuItem_Click(object sender, EventArgs e) { } } }form2怎么改?实现注销成功后关闭form2窗口,回到form1
最新发布
07-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值