2009-07-02 74 views
2

我有一個datagridview多列和行。 第一列包含一個複選框。 我希望用戶能夠選擇多個複選框,然後執行操作。 例如,如果他們選擇第1行和第2行中的複選框,則可以選擇第1行和第2行中其他列的數據並將其傳遞到消息框中。C#Datagridview複選框選中事件 - 多行?

我知道我需要使用checkbox_changed事件來做到這一點。然而,我有困難解決如何做到這一點多行?

回答

5

在按鈕的Click事件做:

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"); 
} 
1

如果您希望用戶點擊一個按鈕來執行該操作,那麼您需要處理的是按鈕的Click事件,而不是CheckBox Changed事件......單擊該按鈕時,只需通過您的DataGridView的所有行,並使用複選框在行上執行操作。

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"); 
} 
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的值,爲您的操作 我測試此代碼行和它爲我

工作