2012-06-05 9 views
0

如果我在DataGridView中選擇多個單元格,我如何獲得(在MsgBox中)具有最高ColumnIndex的單元格的值(在所選內容中)?查找DataGridView中最高的ColumnIndex

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