- 締切済み
DataGridView 複数選択で行番号の取得
Visual Basic 2008 を使っています。 DataGridViewで複数の行を選択したとき、それぞれが何行目なのかを取得するにはどうしたらいいでしょうか? 具体的には、複数選択されている行の0列目の値をテキストボックスに表示するという動作を行いたいです。 自分で書いたコードをペーストしておきます。 Dim count As Integer = Me.DataGridView1.SelectedRows.Count For count = 0 To count - 1 Dim test As String test = Me.DataGridView1.Rows(?何行目か).Cells(0).Value Me.TextBox4.Text = test & "が選択されています。" & vbCrLf & zenkai Dim zenkai As String = Me.TextBox1.Text Next
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- MARU4812
- ベストアンサー率43% (196/452)
最初の質問文で > 具体的には、複数選択されている行の0列目の値をテキスト > ボックスに表示するという動作を行いたいです。 と書いてあるのが0行目だと伝わったんでしょう。 ・・・私も最初そう読みましたから。 選択行の取得からインデックス0で取り出しても見た目の0行目 とは食い違うので、ソートして0行目だけ取り出すサンプルコード ですね。選択行は全て取得できているので、そのまま全部取り出す コードに変えてください。 中学生レベルの英語能力で、何を命令しているかの概要を掴む事は 数日の勉強で可能なはずです。安易に結論を出し、回答者の責任に する前に、自分でよく検証してください。
- MARU4812
- ベストアンサー率43% (196/452)
> 上のコードをボタン1のクリックにイベントにコピペしてみたの > ですが、ボタン1を押すと実行画面が勝手に終了してしまいました・・・。 そんな動作の原因になるコードじゃないですね。 実行画面が勝手に終了するのは別の問題ではないでしょうか。 > プログラミングを習って三ヶ月ほどなのでコードなど全然読めない > のですが、私がやりたいこととは少し違うかなと思いました。 中学生レベルの英語能力で、何を命令しているかの概要を掴む事は 数日の勉強で可能なはずです。安易に結論を出し、回答者の責任に する前に、自分でよく検証してください。
- tsukasa-12r
- ベストアンサー率65% (358/549)
SelectedRows(0) が選択されている行の中での先頭行かと思ったらそういうわけじゃないんですね。 とりあえず、SortedList を使って行番号でソートしてから0番目を取得するようにしてみました。 Dim sl As New System.Collections.Generic.SortedList(Of Integer, DataGridViewRow) Dim r As DataGridViewRow For Each r In Me.DataGridView1.SelectedRows sl.Add(r.Index, r) Next r = sl.Values(0) Dim test As String = r.Cells(0).Value & "(" & r.Index.ToString() & "行目)" MessageBox.Show(test)
補足
早速の回答ありがとうございます 上のコードをボタン1のクリックにイベントにコピペしてみたのですが、ボタン1を押すと実行画面が勝手に終了してしまいました・・・。 プログラミングを習って三ヶ月ほどなのでコードなど全然読めないのですが、私がやりたいこととは少し違うかなと思いました。 1列 2列 3列 4列 ―――――――――――――― 1行| aa jj kk kk 2行| BB jj kk kk ←選択 3行| cc gg ll oo ←選択 4行| EE ii pp yy ←選択 5行| ff tt rr ww 6行| qq uu uu uu このように、ドラッグで2行と3行と4行が選択されているとき(Ctrlでの複数選択のときも) テキストボックスに BBが選択されています ccが選択されています EEが選択されています と表示したいのですが、可能でしょうか?
補足
実行画面が終了してしまうのは他の部分に問題があったからでした、申し訳ありませんでした。 実行してみたところ、三つの行を選択しましたが、選択した行の一番上の行の左端の値のみ取得できました。 選択した行分のそれぞれの左端の値がほしいと思っています。(三つの行を選択したら三つの値が得られ、五つ選択したら五つの値が得られる)