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

基于DGV选中行数据自动填充文本框的实现问题

解决方案

你已经用BindingSource作为绑定中间层,有两种方案可以实现点击行同步填充文本框的需求,优先推荐第一种,完全不需要额外写事件代码:

方案一:文本框绑定到同一BindingSource(推荐)

你之前把文本框直接绑到DataSet的Tool表才会导致无法同步,只要把所有要联动的文本框的数据源统一指向你创建的SBind实例即可:

  • 打开文本框的属性面板,找到「数据」分类下的(DataBindings),展开后点击Text属性右侧的下拉按钮
  • 依次选择「其他数据源」→「项目数据源」→ 选中你定义的SBind实例(不要直接选DataSet下的Tool表),再选择对应要绑定的列名即可
    绑定完成后,点击DataGridView任意行时,BindingSource的当前选中项会自动同步,所有绑定的文本框会自动刷新对应值。

方案二:手动监听点击事件赋值

如果需要自己控制赋值逻辑,给DataGridView添加CellClick事件,代码如下:

注意:需要把你代码里定义的SBind从局部变量改成窗体的类级别字段,否则事件里无法访问。

private void toolDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
    // 跳过点击表头的情况
    if(e.RowIndex < 0) return;

    // 从绑定源获取当前选中行数据
    if(SBind.Current is DataRowView currentRow)
    {
        ToolDataSet.ToolRow toolRow = (ToolDataSet.ToolRow)currentRow.Row;
        // 按照需求给对应文本框赋值即可,示例如下:
        description_Textbox.Text = toolRow.Description;
        vendor_Textbox.Text = toolRow.Vendor;
        cost_Textbox.Text = toolRow.Cost.ToString("F2");
        serial_Textbox.Text = toolRow["Serial #"].ToString();
        // 剩余字段按照上面的格式补全即可
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:03