• ベストアンサー

visualbasic datagridview

VisualBasic 2013 を利用してWindows Formアプリケーションを構築しております。 DataGridViewを配置してデータベースよりデータ抽出した結果を表示しております。 表示レコードが複数行存在する場合にはスクロールバーが表示されているのですが、スクロールバーの表示が小さいため以下のような方式で制御できないかと考えております。 ★実現したいこと  ボタン「↑」を配置しボタンクリックで上側へのスクロール制御  ボタン「↓」を配置しボタンクリックで下側へのスクロール制御 大変お手数お掛けいたしますがご存じの方がいらっしゃいましたらご教授のほどよろしくお願いいたします。 以上です。

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5643)
回答No.1

こんな感じでしょうか。 上側へのスクロール If DataGridView1.FirstDisplayedScrollingRowIndex - 10 > 0 Then DataGridView1.FirstDisplayedScrollingRowIndex -= 10 Else DataGridView1.FirstDisplayedScrollingRowIndex = 0 End If 下側へのスクロール If DataGridView1.FirstDisplayedScrollingRowIndex + 10 < DataGridView1.Rows.Count Then DataGridView1.FirstDisplayedScrollingRowIndex += 10 Else DataGridView1.FirstDisplayedScrollingRowIndex = DataGridView1.Rows.Count - 1 End If スクロール単位を10行にしています。 変数または定数を定義して、10のところを書きかえて試してみてください。

関連するQ&A

  • Visualbasic DatagridView

    Visualbasic 2013 を利用して Windows Formアプリケーションを開発しております。 Form上にPanelを配置し、その中にDatagridViewを配置しております。 ※Anchorを「Top, Left, Right」と指定しております。 このような場合、フォームデザイナで他のコントロールのデザインを編集してリビルドするとDatagridViewのサイズが変化してしまいフォームのサイズよりも大きくなる事象が発生しております。 大変お手数お掛けいたしますが、何か原因/対策などわかる方がいらっしゃいましたらご教授頂けますと幸いです。

  • DataGridView スクロール時の描画速度

    Visualbasic 2013 でWindows Form アプリを開発しております。 DataGridViewにOracleのテーブルより抽出した結果を 10,000レコードを表示する必要があります。 ※DataTableをバインドしてDataGridViewのDataSourceに指定しています。 表示自体は問題なく実装できているのですが、 スクロール時の描画が遅いため実運用では支障がでると考えられます。 スクロール時の描画速度を向上する施策として何か分る方が いらっしゃいましたらご教授頂けますと幸いです。 現時点では以下のような実装としております。 ・DoubleBufferedを有効にしております。 ・1レコードごとにデータ妥当性チェックを行っております。  ※DataTableの全行ループしチェックNGの場合セルの背景色を赤色にしています。

  • DataGridViewの値を別フォームに

    こんにちは。 1つ教えて頂けないでしょうか。 Form1にDataGridViewがあり、どれか1行ダブルクリックすると Form2にForm1のDataGridViewの7列目の値の条件で抽出した結果を Form2のDataGridViewに表示したいのです。 Form1からの受け渡しデータはForm2のテキストボックス(条件)に表示させ 受け渡されて来たときは表示ボタンをクリックしなくてもForm2の DataGridViewは表示したいのです。 それぞれのFormは作成し、Form1は Private Sub dgv_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellDoubleClick Dim f As New Form2 f.txt条件 = Me.DataGridView.SelectedRows(0).Cells(7).Value f.ShowDialog() End Sub とコーディングしました。 Form2は表示されるのですが、データの受け渡しができていないし f.txt条件 = Me.DataGridView.SelectedRows(0).Cells(7).Valueの部分でキャストできませんのエラーに なります。 DataGridViewの選択した値を別のフォームに渡し、そのまま別フォームのDataGridViewを表示させたいのですが。 わかる方おられましたら、教えて頂けないでしょうか。 大変申し訳ありませんが、どうぞよろしくお願いします。

  • DataGridViewに画像ボタンを配置したい

    DataGridViewに画像ボタンを配置したい VB.net 2010 pro .Net FrameWork4にて開発をしています。 DataGridView にカレンダーを表示させようと考えております。 動作としてはセルにボタンを配置し、クリックした際にカレンダーを表示します。 その際に、ボタンに画像を表示したいのですが プロパティを探ってみたのですが Image等々の設定値が見当たりませんでした。 DataGridViewに画像ボタンを配置するサンプル等々良いサイトがあれば 教えてください。 よろしくお願い致します。

  • 別フォームからdatagridviewの削除

    vb.netで、form1のdatagridviewを、form2のボタンをクリックした際に、datagridviewのrowを削除したいのですが、newでform1を参照して、datagridviewのrowを削除しようとしたのですが、form1のdatagridviewの情報をform2で取得できなくて、実行時エラーになってしまい困っています。 form1のdatagridviewのデータは、csvファイルを接続して、loadイベントで表示させるようにしています。 わかるかたいらっしゃいましたら、教えていただけると助かります。 宜しくお願いいたします。

  • DataGridView のSUB制御

    Windows 7 Professional に、Microsoft Visual Basic 2010 Express をインストールしました。 今までEXCELやAccessのフォームを使って作成していたVBAプログラムを移植しようと考えています。 その中で、いろいろ試しているうち、妙な現象に悩まされています。 例として、プロジェクト内にForm3を作成します。 そのForm3の中にDataGridView1を設置します。 Form3内のForm3_Load や、ボタンのプロシージャーに Me.DataGridView1.DataSource = ○○ や、 Me.DataGridView1(0, 0).Style.BackColor = Color.Orange 等を記述して実行すると、うまくデータソースを読み込んだり、指定のセルが塗られたりします。 ところが、 Module1 を作成し、そこに Public Sub test01 を作成して、 Form3.DataGridView1.DataSource = ○○ と記述し、call で test01を呼び出すと、全く表示されません。 Form3.DataGridView1(0, 0).Style.BackColor = Color.Orange などは、インデックスの範囲エラーと出てしまいました。 おかしいと思い、ブレークポイントを指定して、ステップ実行したところ call で呼び出されたtest01をステップしている最中に、 Debug.Print(Form3.DataGridView1.Columns.Count) を通過したところでは、カウント数がデータソースの行数になりますが、test01 のend sub まで実行して、form3のプロシージャーに戻ったところにも、Debug.Print(Me.DataGridView1.Columns.Count)を仕掛けて通過させたところ、イミディエイトウィンドウに表示された値は0でした。 つまり、呼び出したプロシージャー内では値をセットしたのに、戻った途端、それがすべて消えてしまった事になります。 VBAでこのような現象にぶつかった事がないので、ご質問ですが、Visual Basic 2010 では、sub の記述で、Form上のコントロールを制御する事はできないのでしょうか? Public Sub からFrom上の、特にDataGridViewを制御するのに、なにか必要な事があったら、教えてください。

  • C# datagridviewの使い方

    vs community2017 ver15.1でC#を独学しています。 親フォームで取得したデータを子フォームにあるdatagridviewで表示させたいのですが、うまくいきません。 子formのdesigner.csでstaticをpublicにしています。 public System.Windows.Forms.DataGridView dataGridView1; public System.Windows.Forms.DataGridViewTextBoxColumn Column1; public System.Windows.Forms.DataGridViewTextBoxColumn Column2; public System.Windows.Forms.DataGridViewTextBoxColumn Column3; public System.Windows.Forms.DataGridViewTextBoxColumn Column4; 親formのcsファイルで以下のように使用しています。 Form2 kofm = new Form2(); kofm.dataGridView1[0, 0].Value = "aaa"; kofm.StartPosition = FormStartPosition.CenterScreen; kofm.ShowDialog(); これで実行すると、以下のエラーになります。 System.ArgumentOutOfRangeException が発生しました HResult=0x80131502 Message=インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。 親フォームのボタンをクリックし、子フォームのdatagridviewに表示させるにはどのようにすればよろしいのでしょうか? 教えてください。 よろしくお願いします。

  • DataGridViewでのデータ抽出について

    C#からAccessデータベースを呼び出し、それをDataGridViewに表示しました。 その上で、条件に合うレコードのみを表示するコードを書こうとしました。 元のAccessのフィールドにはテキスト型のデータが入っています。         DataView dView; dView = new DataView(dSet.Tables["t_" + (テーブル名)] , "フィールド名=" + (文字列型変数), "", DataViewRowState.CurrentRows); dataGridView.RowHeadersVisible = false; this.dataGridView2.DataSource = dView; これをデバッグすると、2行目で、EvaluateExceptionはハンドルされませんでした。というエラーが出ます。 列[「(文字列型変数)]は見つかりません」という内容です。 これを回避して、フィールドに特定の文字列が入っているレコードを抽出して、DateGridViewに表示させる 方法はないでしょうか。 ちなみに数値型のレコードを抽出することはできているレベルです。 また、フィールドに日付が入っているような場合、ある期間内のレコードを抽出するやり方を ご存知のかたがおりましたら、お教え願います。 (直接のやり方でなくても、「この本が良い」というようなアドバイスでも大いに助かります)。 どうかよろしくお願いします。

  • DataGridViewから値取得

    DataGridViewにボタンと項目2つが配置されています。 DataGridView1 DataGridView1.Columns("btn").HeaderText = "ボタン" DataGridView1.Columns("item1").HeaderText = "アイテム1" DataGridView1.Columns("item2").HeaderText = "アイテム2" ボタンを押すと、押した行のレコードを取得したいです。 ボタンのところを押下すると、 イベントハンドラで何行目か分かるサンプルをネットで見つけました。 惜しいですが、やりたいのと少し違いました。 'CellContentClickイベントハンドラ Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick Dim dgv As DataGridView = CType(sender, DataGridView) Dim test_item1 As String Dim test_item2 As String ' "btn"列ならば、ボタンがクリックされた If dgv.Columns(e.ColumnIndex).Name = "btn" Then MessageBox.Show((e.RowIndex.ToString() + "行のボタンがクリックされました。")) End If ' ここに押された行のitem1の値をセット ' test_item1 = (A) ' ここに押された行のitem2の値をセット ' test_item2 = (B) End Sub (A)、(B)に何を記述すれば値を取得できますか?

  • datagridviewに表示されるデータの識別

    visual studio2010とaccessのデータ(MDB)を使用してプログラムを作っています。 フォームにdatagridviewを1つ配置し、ボタンを2つ用意します。 datagridviewにはデータをバインドせず、2つあるボタンそれぞれに表示するプログラムの記述をし、ボタンを押下することで表示させるようにしています。 ここからが不明な点なのですが、この2つあるデータを、datagridviewのダブルクリックによって別の登録画面を表示し、データの更新や削除をおこなったり、データの新規登録を行いたいのです。 が、2つあるデータを区別させるプログラムの記述がわかりません。 当方は勉強中の身なので、それが可能なのかすら正直わかりませんが、 可能であればプログラムでデータを識別させるコードを教えていただけないでしょうか。 ネットで調べたのですが似たようなものをまず見つけられず、よくわかりませんでした。 よろしくお願いいたします。

専門家に質問してみよう