проверьте, сколько строк охватывает выборка DataGridView - PullRequest
0 голосов
/ 07 января 2019
DataGridView.SelectedRows

Кажется только для подсчета строк, которые были полностью выбраны.

Если я выберу несколько ячеек, например, отдельный столбец DataGridView.SelectedRows, кажется, всегда возвращает 0 (если существует более одного столбца).

Как получить количество строк, которое охватывает выбор пользователя?

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Одним из способов является итерация каждой ячейки каждой строки и проверка свойства .Selected ячейки, хотя после публикации я увидел ответ LarsTech, который, вероятно, более эффективен, так как рассматривает только выбранные ячейки:

//Variable to hold the selected row count
int selectedRows = 0;
//iterate the rows
for(int x = 0; x < DataGridView.Rows.Count; x++)
{
   //iterate the cells
   for(int y = 0; y < DataGridView.Rows[x].Cells.Count; y++)
   {
        if(DataGridView.Rows[x].Cells[y] != null)
           if(DataGridView.Rows[x].Cells[y].Selected)
           {
              //If a cell is selected consider it a selected row and break the inner for
              selectedRows++;
              break;
           }
   }


}
0 голосов
/ 07 января 2019

Полагаю, вам придется считать их однозначно:

HashSet<int> rowIndexes = new HashSet<int>();
foreach (DataGridViewCell cell in dgv.SelectedCells) {
  if (!rowIndexes.Contains(cell.RowIndex)) {
    rowIndexes.Add(cell.RowIndex);
  }
}

selectedRowCount = rowIndexes.Count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...