You need to enable JavaScript to run this app. C#中如何从ShowDialog打开的对话框窗体向主窗体返回ID值
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何从ShowDialog打开的对话框窗体向主窗体返回ID值

C# 模态对话框向主窗体返回新增记录ID的方案

最简便的实现方式是给对话框窗体新增公共属性存储返回值,操作步骤如下:

1. 修改对话框窗体fDocForm的代码

首先在窗体类定义中新增公共只读属性,用于存储插入成功后的记录ID:

public partial class fDocForm : Form
{
    // 新增公共属性,类型可根据实际ID类型调整(如long/Guid/string等)
    public int InsertedRecordId { get; private set; }

    // 原有窗体代码...
}

修改按钮点击的业务逻辑,插入数据后给公共属性赋值:

private void button1_Click(object sender, EventArgs e)
{
    // 执行SQL插入逻辑,获取新插入记录的ID,假设存储到变量newRecordId中
    int newRecordId = 你的SQL插入操作返回ID的方法();

    // 给公共属性赋值
    InsertedRecordId = newRecordId;
    // 赋值DialogResult即可,无需调用Hide(),模态窗会自动关闭
    DialogResult = DialogResult.OK;
}

2. 修改主窗体的调用代码

模态窗关闭后,只要还持有对话框的实例引用,就可以直接读取公共属性的值:

fDocForm fDocForm = new fDocForm();
fDocForm.ShowDialog();

if(fDocForm.DialogResult == DialogResult.OK)
{
    // 直接读取对话框的公共属性获取返回的ID
    int resultId = fDocForm.InsertedRecordId;
    // 后续处理逻辑
}
else
{
    MessageBox.Show("null");
}

注意事项

  • 属性的set方法设置为private,仅允许窗体内部修改返回值,避免外部误改
  • 模态对话框关闭后不会立即销毁实例,只要主窗体还持有fDocForm的对象引用,就能正常读取属性值
  • 如果插入操作可能失败,可以提前做判断,失败时不赋值DialogResult为OK,主窗体就不会进入取值逻辑

内容的提问来源于stack exchange,提问作者MHD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 21:24:01