You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Forms模态对话框IDE正常,MSI安装后bindingSource事件失效

问题:IDE调试正常但MSI安装版中BindingSource.CurrentChanged事件未触发

简而言之

IDE调试期间,bindingSource.CurrentChanged事件触发正常,但通过MSI安装的Release编译版本中,该事件未触发——其他事件处理器表现符合预期。

功能目标

从自定义UserControl中启动一个自定义Windows对话框。对话框包含DataGridView,当前行变更时会更新同级多个TextBox控件。用户可修改文本后通过按钮关闭对话框,也可双击DataGridView目标行关闭。无论以何种方式关闭,对话框类的几个静态属性都会被设置;若.ShowDialog方法返回DialogResult.OK,宿主用户控件将使用这些属性值。

异常表现

  • 异常1:对话框在IDE的Debug和Release模式下均可正常启动关闭,但MSI安装后,对话框虽能正常启停,宿主用户控件却无任何更新,仿佛对话框的静态属性未被设置。
  • 异常2:安装版的对话框能正常显示DataGridView(说明数据绑定成功),但当前行变更时,关联的TextBox控件无变化,像是事件注册/冒泡机制未运行。

解决方案结构

Windows应用分为两部分:包含Start窗体的主程序,以及包含众多控件和对话框的依赖库。该依赖库本质是类库功能,但为了事件日志注册,被编译为.exe程序而非.dll。

困惑点

单人维护的Git仓库历史记录较少,上次重大修改是一年前将传统*.csproj改为SDK风格,本次仅为常规功能添加。Azure DevOps流水线有测试保证多数用户控件行为稳定,但未覆盖此特定对话框。目前无法在代码库中定位明确的问题根源。

启动UnnaDotHelperDialog的UserControl点击处理器

private void btnUnnaLookup_Click(object sender, EventArgs e)
{
    this.TextEntryInProgress = false;
    if (UnnaDotHelperDialog.ShowDialog(this.txtUnna.Text) == DialogResult.OK)
    {
        this.txtDescription.Text = UnnaDotHelperDialog.FormulatedDotShippingName;
        this.txtUnna.Text = UnnaDotHelperDialog.SelectedUnnaNumber;
        WasteFlattened wasteFlattened = (WasteFlattened)this.wasteFlattenedBindingSource.Current;
        wasteFlattened.Description = UnnaDotHelperDialog.FormulatedDotShippingName;
        wasteFlattened.UnnaNumber = UnnaDotHelperDialog.SelectedUnnaNumber;
        if (UnnaDotHelperDialog.SelectedErgNumber != null)
        {
            this.OnResourceGuideNumberSuggested(UnnaDotHelperDialog.SelectedErgNumber.Value);
        }
    }
}

自定义UnnaDotHelperDialog.ShowDialog工厂方法

/// <summary>
/// 传入宿主用户控件的搜索关键词
/// </summary>
public static DialogResult ShowDialog(string unnaSearchText)
{
    UnnaDotHelperDialog dlg = new UnnaDotHelperDialog();
    dlg.txtSearchUnna.Text = unnaSearchText;//在对话框顶部回显搜索关键词
    dlg.txtSearch_KeyDown(dlg.txtSearchUnna, new KeyEventArgs(Keys.Return));//执行搜索,填充DataGridView
    return dlg.ShowDialog();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:09:51