• 締切済み

C#2010でのdatagridviewについて

C#2010でプログラミング中です。 DetaGridViewに登録済みの内容から任意の1行の内容(文字列)を取得したいのです。 セルを1個ずつ指定して取得することは現在可能です。 ですが、 rows.addで1行を設定できるのだから、1行を配列変数に一気に取得できるのではと考えています。 できるなら、どう言った記述をすれば可能になるのでしょうか(もしかしたら無理)。 どうぞよろしくお願いします。

みんなの回答

noname#251971
noname#251971
回答No.1

質問内容は、 データソースの指定は行わずに 直接DataGridViewにデータを追加する利用方法をしていて、 後でまたDataGridViewから直接データ(文字列)を取得したい。 ループ等で1セルづつ取り出すのはできるが、 もっと簡単に一括取得したい。 という意図かと解釈いたしました。 (間違っていたらすみません) 直接そのような取得を行うメソッドやプロパティはありませんが、 ループの代わりにLINQのメソッドを利用して たとえば以下のような形でstringの配列として取得することは可能です。 var dataRow = dataGridView1.Rows[0]; var rowStrings = dataRow.Cells.Cast<DataGridViewCell>().Select(cell => cell.Value.ToString()).ToArray(); DataGridViewへの追加できるデータは文字列や数値だけではありませんので、 常に上記で良いとは限りませんが、質問内容からはデータが文字列のみとお見受けしました。 # 質問内容とはずれますが、 # DataGridViewを利用するならばやはりデータソースを指定して利用するのが良いかとは思われます。 # 作ろうとしているものの規模や用途などによるかとは思いますが。 # 適切なデータソースを設定していれば、データ自体は弄らずにソートや条件によるフィルタもできますし、 # データ管理と表示の分離にもなります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DataGridViewに関して

    開発:Visual Basic 2008 考え方の質問になってしまうかもしれませんが教えて下さい。 Datagridviewを用いて、データの入力をさせたいと考えています。 但し、入力だけでなく画面にある表示ボタンを押した際には、テーブルに格納されている データを検索しに行き、その内容を表示させたいと考えています。 Datagridviewはフォームに貼り付け、各項目を一つずつ作成してあります。 しかし、この場合、以下のような記述をすると(そもそも記述が違うかと思われますが・・・)、 もともと作成してある項目(列)にデータがセットされず、新規で列を作ってしまいます。 《記述内容》 '変数の宣言 Dim dtSet As DataSet = New DataSet("PRODUCTS") Dim dtTable As DataTable 'データセットにテーブルを追加する dtTable = dtSet.Tables.Add("A_TBL") 'テーブルにフィールドを追加する '.Add("フィールド名", フィールドの型)で追加します dtTable.Columns.Add("AAA", Type.GetType("System.String")) Dim data_row As DataRow = dtTable.NewRow() data_row("AAA") = PIN_AAA dtTable.Rows.Add(data_row) 'DataGridにデータを表示する G_BBB.DataSource = dtSet.Tables(0) そもそもDatagridviewを用いて、入力や表示を行うにはどのような形にするのが 良いのでしょうか? Datasetとか使う? 教えて頂きたいと思います。 よろしくお願いします。

  • 【C# DataGridViewについて】

    C#であるWindowsFormアプリケーションを作っているのですが imagelistに格納されている画像群をDataGridViewで表示しようと for (int y = 0; y < gy; ++y) { DataGridViewRow row = new DataGridViewRow(); for (int x = 0; x < gx; ++x) { DataGridViewImageCell imageCell = new DataGridViewImageCell(); imageCell.Value = imageList.Images[y * gx + x]; row.Cells.Add(imageCell); } dataGridView1.Rows.Add(row);//ここが問題 } としたところ、印をつけたところで、「System.InvalidOperationException」 なる例外が発生し、止まってしまいました。(デバッグで実行時) エラーの詳細を見ると、「空のDataGridViewに行を追加することはできません」 と書いてありました。 仕方なく列を追加する形にしようとしても、CellsがDataGridViewColumnにはないからImageCellをColumnにAddできないし、困っています。 どうすればよいでしょうか?

  • Excel VBA Cells 絶対参照 書き方

    Excel VBAにてお尋ねいたします。 Excel VBAにてCellsを使用してセル範囲を指定させていただく際に、絶対参照($A$1:$E$10など)を使用する場合はどのように記述すればよろしいでしょうか? Cellsを使用するのは、セル範囲が毎回異なるため、範囲指定に変数を使用しているためです。 相対参照でしたら、Range(Cells(1,1),Cells(Rows<行番号の変数>,Cols<列番号の変数>))といった記述かと思いますが、絶対参照の場合はどのように記述すればよろしいでしょうか?

  • VBA:セルの空白を検索

    A列を上から検索して(とりあえず100行まで)最初の空白セルのアドレスを取得したいです。 Dim CellAd As Range Set CellAd = Range("A1:A100").CurrentRegion.Find(What:="ABC") If CellAd Is Nothing Then Exit Sub Else MsgBox CellAd.Address End If 以上のコードで、A列にABCがあればそのアドレスを$A$15のような形で表示できました。 検索したいのは空白なのですが、どのように指定すればよいでしょうか。 What:=""やNullではダメだったので(自分、「Null」を勘違いしてるかもしれません)。 また、ここでは取得したアドレスをmsgboxで表示させているだけですが、 実際は取得したアドレスの行番号のみを取得して変数Add1に入れ、 以降のコードのセル範囲指定として使いたいです。 「1行目からAdd1行目までをコピーする」のように。 私のレベルでは、 ・範囲指定はRange("A1:A100")のように、「""」でくくらなければ使えない ・変数は""の中に入れたら文字列として扱われる との認識があるのですが、 このようなコードは可能でしょうか。

  • datagridviewに行追加し、値を入れたいです。VB.NET 

    'データグリッドの選択された値を変数frowに代入する。 frow = DataGridView1.SelectedCells.Item(0).Value 'データグリッドの選択された値を変数srowに代入する。 srow = DataGridView1.SelectedCells.Item(1).Value 'データグリッドに新しい行を追加する。 KYU70000_1.DataGridView1.Rows.Add(DataGridView1.Rows) KYU70000_1.DataGridView1.Rows.Add(DataGridView1.Rows) '選択された値をKYU70000_1のデータグリッドに代入する。 frow = KYU70000_1.DataGridView1.SelectedCells.Item(0).Value ←ここがインデックスが範囲を超えています、となります。 srow = KYU70000_1.DataGridView1.SelectedCells.Item(1).Value どうすれば良いのでしょうか?教えてください。意味が分かりません。

  • VBAで列範囲、行範囲の指定方法の質問です。

    例えば、3行目から5行目を選択する記述、Rows("3:5").Select の記述で行番号を変数で指定することができますか? 要求側で   r1=3   r2=5 と指定してサブルーティンに渡し、 Rows("3:5").Select と同じ効果を期待したいのです。 なお、指定範囲が1行の場合は、次の記述で実現しています。 Sub 列の選択(Sheet as Ojbect, RowNo)   Sheet.Rows(RowNo).Select End Sub アクティブ シートへの処理なので、別にWorkSheet オブジェクトの指定は不要だと思うのですが、次の記述ではエラーで成功しません。 Sub 列の選択(RowNo)   Rows(RowNo).Select End Sub 結論として次のような Subroutine の作成が希望です。 Sub 複数列の選択(Sheet as Object, Row1, Row2) ・・・ End Sub

  • VBAのRows.Selectについて

    すみません。知っていれば教えてください。 Rows.Selectで、行をしてしたいと考えています。 行番号は変数gyouに代入されています。 そこで、普通であれば、Rows("4:4").select で指定できると思うのですが、今回、Rows("gyou:gyou").select にしたいです。 ただ、””でくくっているので、Gyouを数字ではなく文字列で認識するらしく、型がちがいますというエラーがでてきます。 どうすれば、変数で指定できのでしょうか? すみませんが、教えてください。

  • VB.netでのExcelデータの読み込み

    プログラミング初心者です。VB.net2003を使っています。 エクセルでBの列のセルデータを読み込みたいのですが、Bの列の3行目のセルから同列の最後のデータが入っているセルまでを1つずつ順番に取得して、それを配列に代入するにはどうすれば良いのでしょうか? 初歩的な質問で申し訳ないのですがよろしくお願いします。

  • DataGridViewで指定したセルに書き込み

    こんばんは。 VB2008のDataGridViewで指定したセルに書き込みをする方法はありますか? 例えば(2,1)と指定して1行目2列目に「Hello」と書き込む感じです。 どなたか知っている人が教えてください。

  • 助けなてください。

    コードが書けず困ってます。ExcelでVBAのコードで以下の作業が出来ずに困ってます。 複数選択したセルの行を取得して 各行の指定したセルを変数に格納、または配列を使い別ブックに貼り付ける 選択した行をコピーし別ブックに貼り付けたいのですが、項目の位置が違うため行ごと貼り付けれないのと、変数に格納して変数を使い回したいと言う上司の要望により配列で別ブックに貼り付けたいのですが 複数選択した行をセルごとに変数に格納させるのがよく分かりません。 全くコードが書けずにいます。 どなたか、VBAコードを教えていただけないでしょうか。 出来れば小学生にも分かるくらい、まるまるもらえると助かります。 心ある方助けていただけましたら幸いです。 よろしくお願いします。