タイトル : Re^10: DataGridViewの選択した行を取得して修正したいのですが。 投稿日 : 2007/09/03(Mon) 11:12 投稿者 : 魔界の仮面弁士
> For i As Integer = 0 To DataGridView1.SelectedCells.Count - 1 > TextBox1.Text = DataGridView1.Rows(DataGridView1.SelectedCells(0).RowIndex).Cells(0).Value > Next > これで選択されたグリッドのデータが取得できますね。 それだと、いろいろとマズイです。 (1) 「選択行」を得るために、SelectedCells を利用している。 → 行を得たいのであれば、SelectedRows を使うべきかと。 (2) ループ内で、同一 TextBox に読み取っている。 → 複数行が選択されていた場合、これでは最後の行しか得られません。 サンプルゆえの事かも知れませんが、せめて ListBox の方が良いかも。 (3) ループ中で、何度も SelectedCells プロパティにアクセスしている。 → SelectedCells は、選択範囲のサイズが大きいと効率が低下します。 For Each に切り替えたり、一度変数に入れてからアクセスするなど、 使い方を見直すべきかと。 http://msdn2.microsoft.com/ja-jp/library/ha5xt0d9%28VS.80%29.aspx 《選択されたセルの数を得る場合》 .SelectedCells.Count を使うのではなく、そのかわりに .GetCellCount(DataGridViewElementStates.Selected) を利用します。 《選択された行の数を得る場合》 .SelectedRows.Count を使うのではなく、そのかわりに .Rows.GetRowCount(DataGridViewElementStates.Selected) を利用します。 《選択された列の数を得る場合》 .SelectedColumns.Count を使うのではなく、そのかわりに .Columns.GetColumnCount(DataGridViewElementStates.Selected) を利用します。 《セルの選択モードについて》 セル単位での選択が必要とされていない場合には、SelectionMode プロパティを FullRowSelect または FullColumnSelect に設定しておきます。 |