2

我有一个包含多列和多行的 datagridview。第一列包含一个复选框。我希望用户能够选择多个复选框,然后执行操作。例如,如果他们选择了第 1 行和第 2 行中的复选框,则可以选择第 1 行和第 2 行中其他列的数据并将其传递到消息框。

我知道我需要使用 checkbox_changed 事件来做到这一点。但是我无法确定如何为多行执行此操作?

4

4 回答 4

5

在按钮点击事件上做:

static int SelectColumnIndex = 0;
PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;
    foreach(DataGridViewRow row in MyDataGridView.Rows)
    {
      if(row.Cells[SelectColumnIndex].Value!=null &&
             Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)
      {
        foreach(DataGridViewCell cell in row.Cells)
        {
          if(cell.OwningColumn.Index!= SelectColumnIndex)
          {
            data+= (cell.Value + " ") ; // do some thing
          }
        }
        data+="\n";
      }
   }
   MessageBox.Show(data, "Data");
}
于 2009-07-02T14:08:46.927 回答
1

如果你想让用户点击一个按钮来执行动作,那么你需要处理的是按钮的 Click 事件,而不是 CheckBox Changed 事件......当按钮被点击时,只需遍历你的所有行DataGridView 并在选中复选框的行上执行操作。

于 2009-07-02T14:05:15.343 回答
1
static int SelectColumnIndex = 0;

PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;    

    foreach(DataGridViewRow row in MyDataGridView.Rows)     
    {
        if(row.Cells[SelectColumnIndex].Value != null 
            &&
         Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)       
        {
            foreach(DataGridViewCell cell in row.Cells)        
            {
                if (cell.OwningColumn.Index != SelectColumnIndex)                               
                {
                    data+= (cell.Value + " ") ; // do some thing           
                 }
            }

            data+="\n";
        }
    }

    MessageBox.Show(data, "Data");
}
于 2011-06-01T04:32:22.417 回答
0

我认为你不需要任何事件我通过这段代码解决了这个问题:

//In Fill DataGridViewEvent :
        DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxColumn();
        ChCol.Name = "CheckedRow";
        ChCol.HeaderText = "انتخاب";
        ChCol.Width = 50;
        ChCol.TrueValue = "1";
        ChCol.FalseValue = "0";
        dg.Columns.Insert(0, ChCol);

// In Button Event put these codes:

            try
            {
                MessageBox.Show(row.Cells[2].Value.ToString() + " --> " +
                row.Cells["CheckedRow"].Value.ToString());
            }
            catch
            {
                // Nothing Act
            }


enter code here

此参数的输出: ItemID --> 0 // 对于未检查的值 ItemID --> 1 // 对于检查的值

现在您可以过滤返回 1 作为您操作的值的行我测试了这段代码,它对我有用

于 2014-01-18T19:16:36.817 回答