DataGridViewでの追加行の表示について

このQ&Aのポイント
  • VB2005で作成した非バインドのDataGridViewにおいて、追加行の表示に関する問題が発生しています。
  • デフォルトでは新規行が1行だけ空白表示であり、その下はグレーで何もない状態です。
  • 画面いっぱいにグリッドの行の枠を表示して、どこからでも入力できるようにしたいという要望がありますが、設定や回避策が見つからず困っています。有料のツールを購入することも検討しています。
回答を見る
  • ベストアンサー

DataGridViewでの追加行の表示について

VB2005で作成。 DataGridViewを非バインドで作成しました。 追加行のプロパティもtrueにしています。 通常そのまま作成すると新規行が1行だけ空白表示で その下はグレーで何もない状態です。 画面いっぱい(グリッドの画面)にグリッドの行の枠を 表示してほしいとの要望がありました。 つまりデフォルトでグリッドの画面いっぱいにexcel表示のように グリッドの枠を表示してどこからでも入力できるほうが良い ということを言われました。 それが設定か何かをするだけで、簡単できると 思っているので調べてますが、方法が まったく見つからない状態で困っています。 わたしは無理なんじゃないの?と思ってます。 考えているのは、 ・自分である程度の行を最初に無理やり追加して  その行数でイベント(削除、追加、データ保存時など)で  コントロールする。手間がかかりますが仕方ない。 ・設定するプロパティがある(ぜひご教授ください) ・他に回避策がある。(ぜひご教授ください) ・有料のツールにあれば買う。(今あるもので済ませたいので避けたい) 何か良い方法がないでしょうか?よろしくお願いします。

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

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

コントロールの大きさ未満で表示しきれてしまうデータの場合にExcelのようにデータが無い部分のグリッドを表示させるような機能は無かったと思います 自前である程度の行数のダミーを先に追加しておいてやる方法でしょう

honhor1100
質問者

お礼

redfox63さん。回答ありがとうございます。 返事が遅くなり申し訳ありません。 回答される人がいらっしゃらないため、 ここを見に来ることをあきらめました。 久しぶりに確認に来ました 回答のとおりのダミーを先に追加する対応で 済ませました。 ありがとうございました。

関連するQ&A

  • DataGridViewの行追加について。

    初めまして、VB初心者ですが皆様よろしくお願いいたします。 今、VB2005でDataGridViewを使用した入力システムを作成しています。 1~10行目まで入力したデータに対して、5行目に新規行を追加したいのですが。 この場合、現在入力されている5~10行目のデータを、6~11行目に退避した後 「DataGridView1.Rows.Add(DataGridView1.Focus」で5行目に新規行を追加すればいいのでしょうか? うまくいかず悩んでいます。 ご教授よろしくお願いいたします。

  • DataGridViewへの新規行追加について(VB2008)

    VB2008ExpressEdition,DBはAccess2003の環境にて小規模な業務アプリの開発を行っている者です。 VBを使用してまだ2週間足らずですので、初歩的な質問かもしれませんが、よろしくお願いします。 テーブルの内容を明細表示し、登録ボタンを押すとDB更新を 行うような簡単なマスタメンテナンス画面があるとします。 明細表示のため、フォーム上にDataGridViewを作成、 DataSouceプロパティを指定し、型付きDataSetをBindさせました。 AllowUserToAddRowsプロパティはTrueとし、DataGridView上への 新規行追加も可能としてあります。 このとき、プログラムを動作させ複数行新規追加を行うと、 2行目の行追加のタイミングで、 「データの登録時にエラーが発生しました。 列「〇〇」は一意であるように制約されています。 値〇は既に存在します。」 というエラーになってしまい、行追加が1行以上行えません。 新規行追加時、エラー対象とされている列はDefault値Nullと なっており、その値Nullの行を複数作成する操作なので キー重複でこのようなエラーとなっているかと思いますが、 自分としてはこのようなエラーを出さず、 画面上では明細を複数行新規追加を可能としたいのです。 (キー値は最終的に更新時にマスタから値を取得、採番してカラムにセットし登録する。 また、キー重複チェックも後でロジックを組んで行う。) このエラーチェックを行わないようにする設定、 もしくは回避方法等ありますでしょうか?

  • GridViewに行追加するには?

    ObjectDataSourceをGridViewにバインドしてGridViewを表示しています。GridViewは1画面に20行固定で表示したいのですが、表示するデータが20行に満たない場合でも空白行を追加して、20行表示にしたい。空白行を追加するにはどうすればよろしいでしょうか? GridView1.Controls[0].Controls.AddAt(INDEX,GridViewRow)で追加できそうなのですが、GridViewRowの作成方法がわかりません。 よろしくおねがいします。

  • DataGridViewに関して

    開発環境:Visual Basic 2008 あるデータをDataGridViewにて表示させていますが、その際に、データのグループ 単位でグリッド線をを太く、あるいは色を変化させる事ができないかと考えています。 DataGridView全体のグリッド線の色を変化させるような事は可能かと思われますが、 データを表示する過程で、規則性のない(グループ単位)で、行のグリッド線を変更する ような事は可能でしょうか? 教えて下さい。 よろしくお願いします。

  • DataGridViewで行選択して、対応するDataTableの行を得るには?

    いつもお世話になっております。VB2005環境です。 DataGridViewの行を選択したときに、そのソースであるDataTableの同じ行のデータを参照するには、どうしたらいいでしょうか。DataTableのデータをまるごとDataGridViewに表示しているわけではないので、必要に応じて直接DataTableから取得したいです。とても初歩的な質問だと思うのですが・・・。 DataGridView1.DataSource = DataTable  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ Dim r As Integer = DataGridView1.CurrentCell.RowIndex Dim str As String str = DataTable.Rows(r)("項目名") MsgBox(str)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ このように行インデックスを取得してやってみたのですが、これだとDataGridView上でソートすると行番号が変わってしまい、DataTable側の対応する行のデータが得られません。 もう少し詳しく現状を書くと、まずCSVファイルからデータをロードして、DataTableに渡しています。そして、その内容をDataGridViewに表示しているのですが、表示する内容はデータテーブル通りの構造ではなく、表示する必要がある項目だけを選んで、1つずつカラムを追加してバインドいます。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ’自動で列を追加しないようにする DataGridView1.AutoGenerateColumns = False ’データソースを指定する DataGridView1.DataSource = DataTable ’1つ1つ順番などを変えながら列を追加していく Dim column1 As New DataGridViewTextBoxColumn() DataGridView1.Columns.Add(column1) column1.Name = "Date" column1.HeaderText = "日付" column1.DataPropertyName = "F4" Dim column2 As New DataGridViewTextBoxColumn() DataGridView1.Columns.Add(column1) column1.Name = "Locatoin" column1.HeaderText = "場所" column2.DataPropertyName = "F1" ・ ・ ・  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ こんな感じでなので、表示されていない列のデータについては、必要に応じて直接DataTableから取得したいと思います。アドバイスよろしくお願いいたします<(_ _)>

  • VB2005 DataGridViewでの非バインド文字列のこと

    VB2005でDataGridViewを使ってプログラムをしているのですが。  DataTableとBiding(リンク?)しているDataGridViewで。 DataTableとバインドしてない項目X(非バインド列)をDataGridViewに新たに追加して。 例えば、DataTableの項目Yが1だと項目Xも1という風に表示させたいのですが。 一度目はうまく表示されるのですが。その画面を閉じてまた開いたら表示されないのですが。 どうしたら良いでしょうか?アドバイスをお願いします。 開発環境: XinXP Pro SQL Server2005 Express VS2005 Pro VB2005

  • C#かVB DataGridView

    C#かVB DataGridView DataGridView(1)に1~10までの列が、 DataGridView(2)に11~20までの列 DataGridView(3)に21~28までの列があるとして 今このまま画面にDataGridView3つ表示させると3つともにフォーカスが存在してると思うのですが これをフォーカスがあてているものにだけフォーカスを表示させるようにしたいのです。Enterを連打して1~28までいくようにしたいです。今10までいったらDataGridView (2)に20までいったらDataGridView(3)に移動させてますが各グリッドにフォーカスが残っていて 不自然です。おしえてください

  • DataGridViewがクラッシュする

    VB2005を使用しています。 DataGridViewコントロールで、以下のようなコードを実行した際に、 DataGridViewコントロール自体が大きな赤い×の表示になることがあります。 (必ず発生するわけではありません。) 'クリア DataGridView1.Columns.Clear() 'DataSetをDataGridViewに格納 DataGridView1.DataSource = dtData '空の列を追加する DataGridView1.Columns.Add("NOP", "") '最終列の幅をFillにする DataGridView1.Columns("NOP").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill '編集不可にする For i = 0 To DataGridView1.Columns.Count - 1 DataGridView1.Columns(i).ReadOnly = True Next i '行幅は変更できないようにする DataGridView1.AllowUserToResizeRows = False '行Headerを非表示にする DataGridView1.RowHeadersVisible = False 'セルの選択方法は行毎にする DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect '1行のみ選択にする DataGridView1.MultiSelect = False '追加行は表示しない DataGridView1.AllowUserToAddRows = False '列幅を自動リサイズさせる DataGridView1.AutoResizeColumns() 'DataGridViewのフォントサイズを変更する DataGridView1.Font = New Font(DataGridView1.Font.Name, 11) '行高さを自動リサイズさせる DataGridView1.AutoResizeRows() 'Headerのアライメントを中央にする DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 同時に、次のメッセージボックスが表示されます。 「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。 [続行]をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。 [終了]をクリックすると、アプリケーションは直ちに終了します。 オブジェクト参照がオブジェクトインスタンスに設定されていません。」 どうすればこのような現象を回避することができるのでしょうか? どうかご教授ください。

  • DataGridViewで行の展開みたい事がしたい

    1列目のセルに+記号を表示させて+記号をクリックしたら 行が増えて展開される様なイメージのグリッドを作りたいです。 + Office ↑これをクリックしたら - office | |-word |-excel |-access |-powerpoint とOfficeが展開される様なイメージでグリッドの行が現れるようにしたいです また、その逆に閉じるようなイメージでグリッドの行が減るようにしたいです 表示されるようなグリッドを作成したいです どうコーディングすればきれいな展開ができるようになるでしょうか +記号や|記号、-記号も画像の方がきれいになると思いますが。 そのコーディングも載せていただけるとありがたいです。 新米プログラマなためうまく説明できませんがよろしくお願いいたします。

  • C# DataGridViewの行をDeleteキーで削除したい

    お世話になっています。 只今DataGridViewを使用した表を作成しています。 入力によってDBへ追加、編集するところまで行きました あとは削除だけと思っていたのですがうまくいきません。。。 行ヘッダを選択してDeleteキーを押下すると 選択された行を削除する処理に繋げたいのですが キーイベントを拾ってくれません・・・ あちこちのサイトを見て回りましたが 解決方法が見つからず・・・ プロパティにて、AllowUserToDeleteRowsをtrueにしていますが、それだけでは出来ないのでしょうか? よろしくお願いします。