0

DataGridView で複数のセルを選択した場合、(選択したセルの中で) ColumnIndex が最も高いセルの値を (MsgBox で) 取得するにはどうすればよいですか?

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

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

したがって、いくつかのセルを選択して作成されたリストを繰り返して、行の残りのセルを入力する必要があります。

4

1 に答える 1

4

DataGridView で複数のセルを選択した場合、(選択した中で) 最も高い ColumnIndex を持つセルの値を (MsgBox で) 取得するにはどうすればよいですか?

これを行う 1 つの方法は、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 で注文する必要があります

もう 1 つの方法は、コレクション内の最初と最後のセルを調べて、インデックスを比較することです。ユーザーがどのように選択したかによって、列インデックスが大きい方が変わるため、両方を調べる必要があります。

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 が true の場合は、Null 値を確認する必要があります。

于 2012-06-05T22:51:41.363 に答える