2012-06-26 24 views

回答

3

看了一段时间没有答复,这里是我的解决方案,我不认为它不够优化,但我认为它会做的工作

int columnIndex = dgvC.SelectedCells[0].ColumnIndex; 
bool sameCol = true; 
for(int i=0;i<dgvC.SelectedCells.Count;i++) 
    { 
     if(dgvC.SelectedCells[i].ColumnIndex != columnIndex) 
     { 
      sameCol = false; 
      break; 
      } 
    } 
if (sameCol) 
    { 
     MessageBox.Show("Same Column"); 
    } 
    else 
    { 
     MessageBox.Show("Not same column"); 
    } 

Ë DIT: 您也可以尝试:

int columnIndex = dgvC.SelectedCells[0].ColumnIndex; 
    if (dgvC.SelectedCells.Cast<DataGridViewCell>().Any(r => r.ColumnIndex != columnIndex)) 
    { 
     //Not same 
    } 
    else 
    { 
     //Same 
    } 
+0

好吧,我会试试这个。谢谢大家。 – Buena

+0

@Buena,不客气 – Habib

1

一些基本的东西像这应该工作:

 Boolean allCells = true; 
     int colIndex = dgvC.SelectedCells[0].ColumnIndex; 

     foreach (DataGridViewCell c in dgvC.SelectedCells) 
     { 
      if(c.ColumnIndex != colIndex) 
      { 
       allCells = false; 
      } 
     } 

     if(allCells) 
     { 
      //do stuff here 
     } 
2

可以使用的GroupBy以确保细胞是从同一列

if(dgvC.SelectedCells.Cast<DataGridViewCell>() 
      .GroupBy(c => c.ColumnIndex).Count() == 1) 
{ 
    foreach (DataGridViewCell c in dgvC.SelectedCells) 
    //your code 
} 
1

试试这一个。

for (int i=0; i < dgvC.SelectedCells.Count; i++) 
{ 
    int currentCellColumnIndex = dgvC.SelectedCells[i].ColumnIndex; 
    for (int j=i+1; j < dgvC.SelectedCells.Count-1; j++) 
    { 
     if(currentCellColumnIndex == dgvC.SelectedCells[j]) 
     { 
      //Same column 
      //dgvC.SelectedCells[i] and all dgvC.SelectedCells[j] have same column 

     } 
    } 
} 
相关问题