0

選択した dgvCells が同じ列にある場合にのみ何かをしたい:

foreach (DataGridViewCell c in dgvC.SelectedCells)
if (c.ColumnIndex is the same) // how to say this ?
4

4 に答える 4

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

編集:あなたも試すことができます:

    int columnIndex = dgvC.SelectedCells[0].ColumnIndex;
    if (dgvC.SelectedCells.Cast<DataGridViewCell>().Any(r => r.ColumnIndex != columnIndex))
    {
        //Not same
    }
    else
    {
        //Same
    }
于 2012-06-26T05:07:13.433 に答える
2

GroupByを使用して、セルが同じ列からのものであることを確認できます

if(dgvC.SelectedCells.Cast<DataGridViewCell>()
            .GroupBy(c => c.ColumnIndex).Count() == 1)
{
   foreach (DataGridViewCell c in dgvC.SelectedCells)
     //your code
}
于 2012-06-26T05:09:04.640 に答える
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
        }
于 2012-06-26T05:06:48.240 に答える
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

         } 
    }
}
于 2012-06-26T05:12:39.920 に答える