tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 に設定しておきます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。