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

C#实现:选中DataGridView行后通过按钮(含F2快捷键)传值至另一窗体

实现方案

一、通过编辑按钮触发

  1. 给编辑按钮添加点击事件处理方法,核心逻辑是先判断是否有选中行,再提取ID并传递到第二个窗体:
private void btnEdit_Click(object sender, EventArgs e)
{
    // 检查DataGridView是否有选中行
    if (dataGridView1.SelectedRows.Count == 0)
    {
        MessageBox.Show("请先选择一行数据");
        return;
    }

    // 获取选中行的ID值(替换"ID"为你实际的列名)
    // 如果ID是数值类型,比如int,用Convert.ToInt32()转换
    string selectedId = dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString();

    // 实例化第二个窗体,通过构造函数传递ID
    Form2 editForm = new Form2(selectedId);
    editForm.ShowDialog(); // 按需选择Show()或ShowDialog()
}
  1. 在第二个窗体中,通过构造函数接收ID并用于查询:
public partial class Form2 : Form
{
    private string _targetId;

    // 带参数的构造函数
    public Form2(string id)
    {
        InitializeComponent();
        _targetId = id;
        // 初始化时执行查询逻辑
        LoadTargetData();
    }

    private void LoadTargetData()
    {
        // 这里用_targetId执行你的查询操作,比如从数据库获取对应数据
        // 示例:
        // string query = $"SELECT * FROM YourTable WHERE ID = '{_targetId}'";
        // 执行查询并绑定到控件
    }
}

二、通过F2快捷键触发

  1. 先设置主窗体的KeyPreview为true(确保窗体优先接收键盘事件):
    可以在窗体构造函数里设置,或者在设计器的属性面板里直接改:
public Form1()
{
    InitializeComponent();
    this.KeyPreview = true;
}
  1. 给主窗体添加KeyDown事件处理方法,判断是否按下F2,然后复用按钮的逻辑:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.F2)
    {
        // 直接调用编辑按钮的点击事件,避免重复写逻辑
        btnEdit_Click(sender, e);
    }
}

注意事项

  • 如果你的ID是数值类型(比如int、long),记得把代码里的类型转换改成对应方式,比如int selectedId = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["ID"].Value);
  • 如果DataGridView允许多选,你可以根据需求调整逻辑:比如只取第一行,或者提示用户只能选一行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:07:33