如何在c#中的数据网格中选中复选框时将行详细信息显示到文本框中

本文关键字:详细信息 显示 文本 复选框 数据 网格 数据网 | 更新日期: 2023-09-27 18:20:10

我正在尝试选择从网格视图到网格视图中选中的复选框上的文本框的行。我得到了这个代码,但它不起作用。

private void button1_Click(object sender, EventArgs e) {
    int i = 0;
    List ChkedRow = new List <String>();
    for (i = 0; i <= dataGridView1.RowCount - 1; i++)
    {
        if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["Column1"].Value) == true)
        {
            ChkedRow.Add(i);
        }
    }
    if (ChkedRow.Count == 0)
    {
        MessageBox.Show("Select atleast one checkbox");
        return;
    }
    foreach (int k in ChkedRow)
    {
        textBox1.Text = dataGridView1.Rows[k].Cells[1].Value.ToString();
    }
}

如何在c#中的数据网格中选中复选框时将行详细信息显示到文本框中

您需要首先将Cell转换为DataGridViewCheckBoxCell,然后获得FormattedValue,以获得truefalseCheckBox值。

因此,使用您自己的代码,它可能看起来像这样:

private void button1_Click(object sender, EventArgs e) 
{
  List ChkedRow = new List <String>();
  for(int i=0; i < dataGridView1.Rows.Count; i++)
   {
     DataGridViewCheckBoxCell chkBox = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells[0];
     if ((Boolean)chkBox.FormattedValue)
        {
         ChkedRow.Add(i);
        }
   }
  if (ChkedRow.Count == 0)
  {
     MessageBox.Show("Select atleast one checkbox");
     return;
  }
  foreach (int k in ChkedRow)
  {
     textBox1.Text += dataGridView1.Rows[k].Cells[1].Value.ToString()+ " - ";
  }
}

您也可以将Multiline用于Textbox,但要确保它的高度足够高,以便您可以看到所有选定的值,如:

textBox1.Multiline = true;
foreach (int k in ChkedRow)
  {
     textBox1.Text += dataGridView1.Rows[k].Cells[1].Value.ToString()+ Environment.NewLine;
  }