0

我正在尝试从 gridview 中选择行到在 gridview 中选中的 chekbox 上的文本框。我得到了这段代码,但它不起作用。

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();

    }
}
4

1 回答 1

0

您需要先将 to 转换CellDataGridViewCheckBoxCell,然后获取FormattedValueto 以获取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;
  }
于 2013-06-27T11:59:44.783 回答