• ベストアンサー

C#:DataGridViewの行取得

C#のプログラムにて、DataGridViewを使用しています。1列目の複数のセルを選択できるようにしており、その行の番号を知りたいのですが、うまくとれません。1つであれば、 dataGridView.SelectedCells[0].RowIndex が使えるのですが、複数の場合、どのようにすればよいのでしょうか? どうか、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

複数選択した場合 SelectedCellsコレクションに選択したセルが登録されます listBox1.Items.Clear(); foreach( DataGridViewCell oCell in dataGridview1.SelectedCells) { listBox1.Items.Add( oCell.RowIndex + ":" + oCell.Value ); } といった具合か listBox1.Items.Clear(); for( int n =0;n < dataGridview1.SelectedCells.Count; n++) { DataGridViewCell oCell = dataGridView1.SelectedCells[n]; listBox1.Items.Add( oCell.RowIndex + ":" + oCell.Value ); } といった具合で取得できると思いますよ

pyontanrie
質問者

お礼

ありがとうございました!できました。 本当に感謝しております。

関連するQ&A

  • DataGridView 複数行同時変更について

    お世話になっております。 現在C#でアプリケーションを作成しています。 その中でDataGridViewを用いて、 1.セルを複数行同時にドラッグ選択 2.値を変更 3.選択した複数行に値を反映 ということを行いたいのですが、 値の反映が1.で選択した最下行にしか行われません。 (CellValueChangedに1回しか飛んでこない、EventArgsにRowIndexだけでRowIndexesみたいなのがない) 解決するにはどうすればよいでしょうか? 御存知の方いらっしゃいましたら教えてください。 宜しくお願いします。

  • DataGridViewの複数の指定行を取込には

    Win2003SERVER(R2)+SRLServer2000+VB.NET2008の 組合せでやっています。 VBは初心者です。 今、DataGridView1で下記の様なデーターがフォームに 表示されています。 A B C 1 11 AAA 2 22 BBB 3 33 CCC 5 55 DDD 6 66 EEE この画面でCtrlキーを押しながら Aの列の 1 3 5の列を選択しました。 その状態でBotan1を押したとき Bの列の 11 33 55 を変数 B(1) B(2) B(3) に呼込みたいのですが どうしたらいいのでしょうか 1行だけの場合、 B(1)=Me.DataGridView1(1, Me.DataGridView1.CurrentCell.RowIndex).Value をで良いと思っていますが 複数の場合はどうしたらいいのでしょうか。 ご存知の方、教えてください。

  • DataGridViewで列、行、セルの選択

    [環境] Windows7 Professional Visual Studio 2010 Professional お世話になります。 上記環境下にて、DataGridViewを用いたプログラムを 作っております。 そこで、タイトルの件なのですが DataGridViewの一番左(行ヘッダー)をクリックすると行選択、 一番上(列ヘッダー)をクリックすると列選択、 セルをクリックするとセル選択できるようにしたいと思っています。 しかし、DataGridViewのセル選択はSelectionModeという プロパティで制御しているようでして、以下の5種類の選択方法しかないようです。 (1) CellSelect 1 つ以上の個別のセルを選択できます。 (2) FullRowSelect 行のヘッダーまたは行内のセルをクリックすることによって行全体が選択されます。 (3) FullColumnSelect 列のヘッダーまたは列内のセルをクリックすることによって列全体が選択されます。 (4) RowHeaderSelect 行のヘッダー セルをクリックすることによって行が選択されます。個別のセルは、そのセルをクリックすることによって選択できます。 (5) ColumnHeaderSelect 列のヘッダー セルをクリックすることによって列が選択されます。個別のセルは、そのセルをクリックすることによって選択できます。 要するに、 (1)…セル選択のみ可能 (2)…行選択のみ可能(セルクリック時は行選択扱い) (3)…列選択のみ可能(セルクリック時は列選択扱い) (4)…行選択とセル選択のみ可能 (5)…列選択とセル選択のみ可能 ということなので、私の望む、 ・行選択と列選択とセル選択が可能 という制御は無理なのでしょうか。 ご存知の方いましたら、ご教示の程お願い致します。

  • DataGridViewで、選択した行の値を取得したい。

    VB2005環境です。 VB2005で、選択した行の、特定の列から値を取って、 テキストボックスに出力したいと思っています。 Itemプロパティかと思い、 TxtBox1.Text = Me.DataGridView1.Item _(0,Me.DataGridView1.CurrentRow.Index).ToString と記述してみました。1列目の、選択した行と交わるセルの 値が取れるかと思いきや、うまく取得できません。 方法を教えていただけないでしょうか? よろしくお願いします。

  • DataGridViewで1行全てを選択状態にするには

    VB.NETのDataGridViewについての質問です。 DataGridViewでセルを選択した時に、そのセルの行を全て選択したいのですが、その方法がわからず困っています。 単純な方法を試してみたのですが Private Sub DataGridView_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView.CellClick DataGridView.CurrentCell = DataGridView.Rows(e.RowIndex).Cells(-1) End Sub この方法ですと、Cells(-1)の所で境界外となって上手くいかないようです。 何か良い方法がありましたら、ご教授願います

  • C# DataGridView特定セルの入力フォーム変更について

    C# DataGridView特定セルの入力フォーム変更について C# DataGridViewについての質問です。 DataGridViewで1列目のコンボボックスを選択した値によって、その行のみ 2列目の入力フォームを変更したいのですが、その様なことは可能でしょうか? 例.1行目1列目コンボボックス「a」選択時、1行目2列目コンボボックス表示   2行目1列目コンボボックス「b」選択時、2行目2列目テキストボックス表示   3行目1列目コンボボックス「c」選択時、3行目2列目チェックボックス表示 列全体の入力フォームを変更する処理なら分かるのですが、特定のセルのみ変更する 方法が分かりません。 もし可能であれば実現方法も教えて頂けると非常に助かります。 宜しくお願いします。

  • Visual C# の DataGridViewの行や列を増やすにはどうすればいいんでしょうか

    こちらであってるかどうかも分かりません超初心者です。 Visual C# のコントロールの一つ DataGridViewを使いたいんですが、 普通に行や列を増やすのはできるんですが、 例えば適当なテキストボックスに 4 と 7 を記入したら 4行7列の DataGridViewを作りたいと考えているんですが、どうやればいいのかまったく分かりません。 ネットで調べてもどうすればいいか分かりません ご存じの方どうか教えてください、よろしくお願いします

  • 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

  • DataGridViewの行ごとにヘッダを取り付けたい

    DataGridViewの行ごとにヘッダを取り付けたい DataGridViewコントロールを使用しています。 出来れば(見栄えを良くするために)、図の矢印で指し示す部分に文字列を表示させたいです。 列にはカラムヘッダが存在しますが、行でも似たようなことをしたいのです。 やり方がわかる方、教えていただけませんか? よろしくお願いします。

  • DataGridViewの特定のセルで選択状態を保ちたい VB2005

    DataGridViewの件で質問したいのですが。 よろしくお願いします。 VB2005で、DataGridViewの特定のセルでカーソルがとどまる(選択状態)ようにしたいのですが 思ったように動いてくれません。例えば、下のようなDataGtridViewがあったとして, 例 ------------------ |ID | X | Y | ------------------ |001| 100 | | ------------------ |002| 150 | | ------------------ |003| 105 | | ------------------ ID が002の行で、Y列のセルにカーソルが入りXと違う数を入力したら、メッセージを 表示させて、そのセルにカーソルがとどまる処理を作りたいのですが。下の行のセルに 移動してしまいます。  DataGridView_CellEndEditイベントやDataGridView1_CellValueChangedなどで カーソルがとどまる処理をしているつもりなのです下の行に移動してしまいます。 DataGridViewの初期設定の問題でしょうか? Private Sub DataGridView1_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged Dim DgvRow As Integer '行をセット DgvRow = e.RowIndex ' X と Yが異なれば、メッセージ表示 If DataGridView1("X", e.RowIndex).Value <> DataGridView1("Y", e.RowIndex).Value Then MsgBox("X <> Y", MsgBoxStyle.OkOnly) Me.DataGridView1.CurrentCell = Me.DataGridView1("Y", DgvRow) ' これも駄目だった ↓ 'Me.DataGridView1.CurrentCell = Me.DataGridView1("Y", e.RowIndex - 1) End If End Sub アドバイスいただけたら幸いです。よろしくお願い致します。 開発環境 VB2005 Visual Studio 2005 Standard Edition(SP1) Windows XP Pro SP2

専門家に質問してみよう