【VB.NET】DataGridViewコントロールを編集できないようにするには?

訪問して頂きありがとうございます。まさふくろーです。

この記事では、DataGridViewコントロールを編集できないようにする方法をご紹介します。

DataGridViewコントロール全体を編集できないようにする

  • DataGridViewコントロール全体を編集できないようにするには、DataGridViewコントロールのReadOnlyプロパティの値を「True」にします。
  • 編集できるようにするには、「False」にします。
  • 書式は、以下になります。

DataGridView.ReadOnly= True | False

サンプルプログラム

2 「注文データを表示」ボタンクリック時に以下処理を行う。
4~7 接続先データベースの情報を、変数に代入。
13 SqlConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
15~19 ConnectionStringプロパティにデータベース情報を設定。
21 データベースに接続。
23 SqlCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
25 SQL文を実行するために、15~19行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。
27~31
レコードを抽出するSQL文をCommandTextプロパティに設定。
30行目の「@」マークは、以下33~34行目で設定するパラメータを使用する際に記述します。
33 「SalesOrderHeader」テーブルの「SalesOrderID」列の開始番号に、値「71774」を設定する。
34 「SalesOrderHeader」テーブルの「SalesOrderID」列の終了番号に、値「71816」を設定する。
36 SQL文(SalesOrderID列の値が71774~71816までのレコードを抽出する)を実行し、実行結果をSqlDataReader型の変数「dread」に代入。
38 変数「dread」の値が「True」の間(抽出したレコード件数分)、以下処理を繰り返す。
43 「SalesOrderID」列の列番号を取得し、Integer型の変数「iIdx」に代入。
44 「SalesOrderID」列の値を取得し、String型の変数「SalesOrder_ID」に代入。
46 「OrderDate」列の列番号を取得し、Integer型の変数「iIdx」に代入。
47 「OrderDate」列の値を取得し、String型の変数「Order_Date」に代入。
49 「DueDate」列の列番号を取得し、Integer型の変数「iIdx」に代入。
50 「DueDate」列の値を取得し、String型の変数「Due_Date」に代入。
52 「SalesOrderNumber」列の列番号を取得し、Integer型の変数「iIdx」に代入。
53 「SalesOrderNumber」列の値を取得し、String型の変数「SalesOrder_Number」に代入。
55 DataGridViewコントロールにデータを表示する。
61 DataGridViewコントロールを読み取り専用にする。
63 処理が正常に終了したら、正常終了のメッセージをラベルに表示する。
67 処理の実行中にエラーが発生した場合、
69 エラー内容を取得し、ラベルに表示する。

DataGridViewコントロールの指定列を編集できないようにする

  • DataGridViewコントロールの指定列を編集できないようにするには、DataGridViewColumnオブジェクトのReadOnlyプロパティを使います。
  • DataGridViewColumnオブジェクトは、DataGridViewコントロールの列を表し、DataGridViewコントロールのColumnsプロパティに列のインデックス番号または名前を指定して取得できます。
  • ReadOnlyプロパティには、編集可能にする場合は「True」(既定値)を指定し、編集不可にする場合は「False」を指定します。
  • 書式は、以下になります。

DataGridView.Columns(インデックス番号 / 名前).ReadOnly = True | False

サンプルプログラム

2 「注文データを表示」ボタンクリック時に以下処理を行う。
4~7 接続先データベースの情報を、変数に代入。
13 SqlConnectionクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
15~19 ConnectionStringプロパティにデータベース情報を設定。
21 データベースに接続。
23 SqlCommandクラスのインスタンス化。(Usingステートメントでリソース開放を自動化)
25 SQL文を実行するために、15~19行目で設定したデータベース情報と同じ情報をConnection プロパティに設定。
27~31
レコードを抽出するSQL文をCommandTextプロパティに設定。
30行目の「@」マークは、以下33~34行目で設定するパラメータを使用する際に記述します。
33 「SalesOrderHeader」テーブルの「SalesOrderID」列の開始番号に、値「71774」を設定する。
34 「SalesOrderHeader」テーブルの「SalesOrderID」列の終了番号に、値「71816」を設定する。
36 SQL文(SalesOrderID列の値が71774~71816までのレコードを抽出する)を実行し、実行結果をSqlDataReader型の変数「dread」に代入。
38 変数「dread」の値が「True」の間(抽出したレコード件数分)、以下処理を繰り返す。
43 「SalesOrderID」列の列番号を取得し、Integer型の変数「iIdx」に代入。
44 「SalesOrderID」列の値を取得し、String型の変数「SalesOrder_ID」に代入。
46 「OrderDate」列の列番号を取得し、Integer型の変数「iIdx」に代入。
47 「OrderDate」列の値を取得し、String型の変数「Order_Date」に代入。
49 「DueDate」列の列番号を取得し、Integer型の変数「iIdx」に代入。
50 「DueDate」列の値を取得し、String型の変数「Due_Date」に代入。
52 「SalesOrderNumber」列の列番号を取得し、Integer型の変数「iIdx」に代入。
53 「SalesOrderNumber」列の値を取得し、String型の変数「SalesOrder_Number」に代入。
55 DataGridViewコントロールにデータを表示する。
61 DataGridViewコントロールの1列目(注文No)を読み取り専用にする。
63 処理が正常に終了したら、正常終了のメッセージをラベルに表示する。
67 処理の実行中にエラーが発生した場合、
69 エラー内容を取得し、ラベルに表示する。

関連記事

テーブルのデータを抽出する

【VB.NET】テーブルのレコードを抽出するには?

データベースに接続

【VB.NET】データベースに接続するには?

Usingステートメント

【VB.NET】UsingステートメントでDisposeメソッドの呼び出しを自動化する

構造化例外処理

【VB.NET】構造化例外処理とは?

最後まで読んでいただき、ありがとうございました!

本のまとめ関連記事はこちら