都道府県穴埋めゲーム

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

A 回答 (3件)

最初の質問文で


> 具体的には、複数選択されている行の0列目の値をテキスト
> ボックスに表示するという動作を行いたいです。
と書いてあるのが0行目だと伝わったんでしょう。
・・・私も最初そう読みましたから。

選択行の取得からインデックス0で取り出しても見た目の0行目
とは食い違うので、ソートして0行目だけ取り出すサンプルコード
ですね。選択行は全て取得できているので、そのまま全部取り出す
コードに変えてください。

中学生レベルの英語能力で、何を命令しているかの概要を掴む事は
数日の勉強で可能なはずです。安易に結論を出し、回答者の責任に
する前に、自分でよく検証してください。
    • good
    • 1

> 上のコードをボタン1のクリックにイベントにコピペしてみたの


> ですが、ボタン1を押すと実行画面が勝手に終了してしまいました・・・。
そんな動作の原因になるコードじゃないですね。
実行画面が勝手に終了するのは別の問題ではないでしょうか。

> プログラミングを習って三ヶ月ほどなのでコードなど全然読めない
> のですが、私がやりたいこととは少し違うかなと思いました。
中学生レベルの英語能力で、何を命令しているかの概要を掴む事は
数日の勉強で可能なはずです。安易に結論を出し、回答者の責任に
する前に、自分でよく検証してください。

この回答への補足

実行画面が終了してしまうのは他の部分に問題があったからでした、申し訳ありませんでした。

実行してみたところ、三つの行を選択しましたが、選択した行の一番上の行の左端の値のみ取得できました。
選択した行分のそれぞれの左端の値がほしいと思っています。(三つの行を選択したら三つの値が得られ、五つ選択したら五つの値が得られる)

補足日時:2011/12/19 21:44
    • good
    • 0

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が選択されています

と表示したいのですが、可能でしょうか?

補足日時:2011/12/19 19:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報