2012-06-05 2 views
0

Если я выбираю больше одной ячейки в DataGridView, как я могу получить (в MsgBox) значение ячейки с самым высоким значением ColumnIndex (среди выбранных)?Найти самый высокий столбец в DataGridView

List<string> a = new List<string>(); 

foreach (DataGridViewCell cell in dgvC.SelectedCells) 
{ 
    a.Add(cell.Value.ToString()); 
} 

Итак, мне нужно отдохнуть ячейки в строке для заполнения, повторяя список сделанного выбора несколько ячеек.

+1

Сво http://WhatHaveYouTried.com? что такое режим выбора на DGV? –

+0

Мне нужно заполнить ячейки списком, но только ячейки, которые не выбраны, и от первого не выбранного до конца строки. – Bonaca

+0

, пожалуйста, покажите нам код, который у вас есть, спасибо. –

ответ

4

Если я выбираю более одной ячейки в DataGridView, как я могу получить (в MsgBox) значение ячейки с наивысшим ColumnIndex (среди выбранного)

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

var selectedCells =dgvC.SelectedCells; 

var MaxColumn = (from DataGridViewCell cell in selectedCells 
        orderby cell.ColumnIndex descending 
        select cell).FirstOrDefault(); 

MessageBox.Show(MaxColumn.Value.ToString());  

Следует отметить, что в зависимости от того, как пользователь сделал выбор (сверху вниз или снизу вверх) вы либо получить значение из первой строки или последней строки. Если это имеет значение, вы также должны заказать RowIndex

Другой способ - проверить первую и последнюю ячейки в коллекции и сравнить индексы. Нам нужно посмотреть на них, потому что в зависимости от того, как пользователь сделал выбор, изменится тот, у кого больше индекс столбца.

var selectedCells = dgvc.SelectedCells; 

var cellStart = selectedCells[0]; 
var cellEnd = selectedCells[selectedCells.Count -1]; 

if (cellStart.ColumnIndex > cellEnd .ColumnIndex) 
    MessageBox.Show(cellStart.Value.ToString()); 
else 
    MessageBox(cellEnd.Value.ToString()); 

Примечание: вы должны проверить нулевые значения, если AllowUsersToAddRow верно

+0

работает отлично. Благодарю. – Bonaca

Смежные вопросы