C#实现:选中DataGridView行后通过按钮(含F2快捷键)传值至另一窗体
实现方案
一、通过编辑按钮触发
- 给编辑按钮添加点击事件处理方法,核心逻辑是先判断是否有选中行,再提取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() }
- 在第二个窗体中,通过构造函数接收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快捷键触发
- 先设置主窗体的
KeyPreview为true(确保窗体优先接收键盘事件):
可以在窗体构造函数里设置,或者在设计器的属性面板里直接改:
public Form1() { InitializeComponent(); this.KeyPreview = true; }
- 给主窗体添加
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
相关产品推荐
相关产品推荐

