C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DataGridViewにて選択された列の取得


(過去ログ 74 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■43070 / inTopicNo.1)  DataGridViewにて選択された列の取得
  
□投稿者/ 山ちゃん (3回)-(2009/10/28(Wed) 12:04:29)

分類:[.NET 全般] 

VS2008−C#です。

実現したい事はDataGridViewにて選択された列の各セルの値、Tagの値を取得してそれぞれ処理をしたいです。

DataGridViewのプロパティ
selectionMode FullColumnSelect
MultiSelect False

現状、私の知識の中では、以下の方法しか思いつきません。
@DataGridViewの選択列の取得
 colIndex = dgv.SelectedColumns[0].Index
ADataGridViewの行をループさせる。
 for(int rowIndex=0;dvg.count < rowIndex;rowIndex)
B@のIndex値とAのループ値で セルの値、Tagの値を取得して処理を行う
 dgv.Row(rowIndex).Col(colIndex).Value

●質問
効率的な方法がありますか?

■選択列の取得方法

選択されている列を調べるには
以下のような方法で取得できるのは調べて分かりました。
foreach (DataGridViewColumn c in dgv.SelectedColumns)
{
Console.WriteLine(c.Index);
}

しかしMultiSelect = Falseで複数列の選択はできないようにしています。
●質問
その際、以下のような方法で選択列を取得してもいいのでしょうか?
気にしている点は、[0]で固定にしている点です。
int colIndex = dgv.SelectedColumns[0].Index;
引用返信 編集キー/
■43071 / inTopicNo.2)  Re[1]: DataGridViewにて選択された列の取得
□投稿者/ 魔界の仮面弁士 (1370回)-(2009/10/28(Wed) 12:20:42)
2009/10/28(Wed) 15:19:51 編集(投稿者)
No43070 (山ちゃん さん) に返信
>  for(int rowIndex=0; dvg.count < rowIndex     ; rowIndex  )
ではなく、
    for(int rowIndex=0; rowIndex < dgv.Rows.Count; rowIndex++)  
ですよね。

> dgv.Row(rowIndex).Col(colIndex).Value
これは、
   dgv.Rows[rowIndex].Cells[colIndex].Value
   dgv[colIndex, rowIndex].Value
のどちらの事でしょうか?


> 効率的な方法がありますか?
選択範囲が 単一列に限定されているのであれば、
  foreach (DataGridViewCell cell in dgv.SelectedCells)
が利用できるかも知れません。


> その際、以下のような方法で選択列を取得してもいいのでしょうか?
> 気にしている点は、[0]で固定にしている点です。
> int colIndex = dgv.SelectedColumns[0].Index;
この場合、固定値 [0] で取得する前に件数判定が必要かと思います。
単一選択なので .SelectedColumns.Count が 2 以上になる事は無くとも、0 になる可能性はありますよね。

引用返信 編集キー/
■43085 / inTopicNo.3)  Re[2]: DataGridViewにて選択された列の取得
□投稿者/ 山ちゃん (5回)-(2009/10/28(Wed) 19:55:10)
No43071 (魔界の仮面弁士 さん) に返信

ご返答ありがとうございます。

foreach (DataGridViewCell cell in dgv.SelectedCells)
の方法に関しては検証してみます。

.SelectedColumns.Count = 0 確かにありますね。
言われてみて、はぁ!と思いました。

ありがとうございました。

> 2009/10/28(Wed) 15:19:51 編集(投稿者)
>
> ■No43070 (山ちゃん さん) に返信
>> for(int rowIndex=0; dvg.count < rowIndex ; rowIndex )
> ではなく、
> for(int rowIndex=0; rowIndex < dgv.Rows.Count; rowIndex++)
> ですよね。
>
> > dgv.Row(rowIndex).Col(colIndex).Value
> これは、
> dgv.Rows[rowIndex].Cells[colIndex].Value
> dgv[colIndex, rowIndex].Value
> のどちらの事でしょうか?
>
>
>>効率的な方法がありますか?
> 選択範囲が 単一列に限定されているのであれば、
> foreach (DataGridViewCell cell in dgv.SelectedCells)
> が利用できるかも知れません。
>
>
>>その際、以下のような方法で選択列を取得してもいいのでしょうか?
>>気にしている点は、[0]で固定にしている点です。
>>int colIndex = dgv.SelectedColumns[0].Index;
> この場合、固定値 [0] で取得する前に件数判定が必要かと思います。
> 単一選択なので .SelectedColumns.Count が 2 以上になる事は無くとも、0 になる可能性はありますよね。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -