DataGridView 选定行的列值到文本框


您好,需要帮助获取从 datagridview 到文本框的值,我有一个 datagridview 从 SQL 获取数据,它计算 4 列和从 sql 检索的行数,我有 4 个文本框,我希望 datagridview 选定行的列值到文本框。

请就此提出建议。

解决方案1

您可能想要回复 DataGridView.SelectionChanged 事件[^]。
在其处理程序中检查是否已选择单行,然后从该行获取值并将它们放入文本框中。

C#
private void DataGridView1_SelectionChanged(object sender, EventArgs e)
{
  if( DataGridView1.SelectedRows.Count = 0 )
  {
    TextBox1.Value = DataGridView1.SelectedRows(0).Cells(0).Value;
    TextBox2.Value = DataGridView1.SelectedRows(0).Cells(1).Value;
    TextBox3.Value = DataGridView1.SelectedRows(0).Cells(2).Value;
    TextBox4.Value = DataGridView1.SelectedRows(0).Cells(3).Value;
  }
}

该代码尚未经过测试,可能包含拼写错误。

确保 DataGridView.SelectionMode 属性[^] 被设定为 FullRowSelect 为了这个工作。

您可以使用 DataGridView.MultiSelect 属性[^] 以确保一次只选择一行。

解决方案3

你好,现在一切正常

C#
private void dgviewSearch_CellcontentClick(object sender, DataGridViewCellEventArgs e)
{
int i;
i = dgViewSearch.SelectedCells[0].RowIndex;
textBox3.Text = dgViewSearch.Rows[i].Cells[1].Value.ToString();
textBox4.Text = dgViewSearch.Rows[i].Cells[3].Value.ToString();
}

非常感谢您的帮助,我期待在 datagridview 上对带有 ,(逗号) 的文本框进行多重选择,例如 (2001,2002,2003)

解决方案2

注册网格的MouseClick事件并使用以下代码。

C#
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
    DataGridViewRow dr = dataGridView1.SelectedRows[0];
    textBox1.Text = dr.Cells[0].Value.ToString();
     // or simply use column name instead of index
    //dr.Cells["id"].Value.ToString();
    textBox2.Text = dr.Cells[1].Value.ToString();
    textBox3.Text = dr.Cells[2].Value.ToString();
    textBox4.Text = dr.Cells[3].Value.ToString();
}

并在加载事件中添加以下行

C#
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

解决方案8

私人无效dgvAllUsers_CellContentClick(对象发送者,DataGridViewCellEventArgs e)
{

if (e.RowIndex >= 0)
{
DataGridViewRow 行 = this.dgvAllUsers.Rows[e.RowIndex];

textId.Text = row.Cells[“idUser”].Value.ToString();
textFullName.Text = row.Cells[“FullName”].Value.ToString();
文本用户名.文本 = 行.单元格[“UserName”].Value.ToString();
文本密码.文本 = 行.单元格[“Password”].Value.ToString();
文本地址.文本 = 行.单元格[“Address”].Value.ToString();
textGender.Text = row.Cells[“Gender”].Value.ToString();
文本联系人编号.文本 = 行.单元格[“ContactNumber”].Value.ToString();
ComboUserType.SelectedText = row.Cells[“UserType”].Value.ToString();
}
}

解决方案9

始终使用 GridView1_CellEnt 事件,因为如果您使用箭头键移动单元格或使用鼠标单击,这对两者都有用。
并始终使用 if (dataGridView1.SelectedCells.Count > 0) 否则您必须选择完整的行。
私有无效dataGridView1_CellEnter(对象发送者,DataGridViewCellEventArgs e)
{
if (dataGridView1.SelectedCells.Count > 0) // 确保用户至少选择 1 行
{

DataGridToTextboxes(e.RowIndex);

}
}

私有无效DataGridToTextboxes(int x)
{

字符串 Item1 = dataGridView1.Rows[x]。细胞[1].值+字符串.空;

// 字符串 SrNo = selectedRows.Cells[0].值+字符串.空;
// 字符串 Item1 = selectedRows.Cells[1].值+字符串.空;

字符串 MinRange = dataGridView1.Rows[x]。细胞[2].值+字符串.空;
字符串 MaxRange = dataGridView1.Rows[x]。细胞[3].值+字符串.空;

字符串 MinStable = dataGridView1.Rows[x]。细胞[4].值+字符串.空;
字符串 MaxStable = dataGridView1.Rows[x]。细胞[5].值+字符串.空;

txtItem.Text = 项目1;
TextMinRange.Text = MinRange;
TextMaxRange.Text = MaxRange;
TextMinStable.Text = MinStable;
TextMaxStable.Text = MaxStable;
}

コメント

タイトルとURLをコピーしました