サイト検索
検索
サイトメニュー
Menu
RTB SoftLab ラテベ ソフトラボ (ラテベラボ)
私の知っているソフトの操作を解りやすく、解説していきます。
サイト検索
検索
サイトメニュー
Menu

投稿日:2021年3月11日

更新日:2021年3月9日

DataGridViewカスタムコントロールの機能アップの内容

前回、カスタムコントロール(DataGlidView)のテストフォームの配置まで行いました。但し、機能アップなどの変更はまだ行っていません。

前回の内容は、こちらから参照願います。
カスタムコントロールの作り方(初級編)①(カスタムDataGridView編)

前回の作成終了までは、ここまでとなります。

Listにバインドを行った、DataGridView
Listにバインドを行った、DataGridView

上が、標準のDataGlidViewで、下がカスタムDataGlidViewになります。

標準のDataGlidVirwでは、下記が初期値になっています。

行のヘッド表示
セルの編集方法キー入力、又は、F2で編集開始
標準のDataGlidViewの初期値

私の場合、上記プロパティは、カスタムコントロールでない場合は、いつも変更しております。
(お客様で、カスタムコントロールを使用していない場合もあるので)

ただ、その作業が、いつも馬鹿らしいと感じております。
なので、今回は、この2点いつて、初期値を変更したいと思っています。

プロパティは、変更が許されていないプロパティーもある。

具体的には、このような変えたいと思っています。

行のヘッド非表示
セルの編集方法フォーカス時編集開始
標準のDataGlidViewの変更予定

プロパティの名前の取得方法は?

まずは、プロパティの名前を知れベなければいけません。
今回は、行ヘッドの表示のプロパティになるので、デザイナから、DataGlidView選択し、プロパティーを探します。

行ヘッダのプロパティ(RowHeadersVisible)
行ヘッダのプロパティ(RowHeadersVisible)

これで、プロパティ名は、解りました。

私は、日本人なので、英語を覚えるのが苦手です(笑)。
なので、一旦このプロパティーを『False』に変更して、デザイナーを開きます。
デザイナーの開き方が解らない人は、こちで説明していますので、参照願います。

デザイナーの開き方は、こちら(カスタムコントロールの作り方(初級)(TextBox編)

デザイナーを見ると、プロパティのロジックが表示されていますので、こちらをコピーしておきます。

デザイナのRowHeadersVisibleプロパティのロジック
デザイナのRowHeadersVisibleプロパティのロジック

さて、次は『Overrides』になりますね♪

『Overrides』を行ってみた場合、ない場合もある。

『カスタムコントロールの作り方(初級)(TextBox編)』では、『Overrides』を使って、BackColorプロパティーのロジックをほぼ自動で作成しました。
(その方法が解らない方は、こちらから)

今回、『Overrides』を行ってみると!

Overridesで、プロパティーを探している所
Overridesで、プロパティーを探している所

ありませんね~^^;
仕方ないので、下記を追加します。
(この時、コピーしたRowHeadersVisibleを使っています)

<DefaultValue(False)>
Public Overloads Property RowHeadersVisible As Boolean
    Get
        Return MyBase.RowHeadersVisible
    End Get
    Set(value As Boolean)
        MyBase.RowHeadersVisible = value
    End Set
End Property

こちらの説明は、下記になります。

<DefaultValue(False)>初期値をFalse(表示しない)に変更
Public Overloads Property既存のプロパティをOverloadsで変更
MyBase.RowHeadersVisible既存のプロパティを変更したので、MyBaseを使って、継承元に返したり、参照したりの設定を行う。
Overloadsプロパティの説明

最後に、プロパティの初期化を行います。

''' <summary>コンストラクタ</summary>
Public Sub New()
    InitializeComponent()
    RowHeadersVisible = False        
End Sub

これで、行のヘッドの初期値が変更されました。

このように、デザイナー等をうまく使えば、タイプミスもなくなって、簡単にロジックを作成することが可能となります。

セルの編集方法の変更(EditMode)

同様の方法を使って、編集方法の初期値の変更を行います。
追加部分は、こちらになります。

''' <summary>初期値変更  セルの編集開始</summary>
<DefaultValue(GetType(DataGridViewEditMode), "EditOnEnter")>
Public Overloads Property EditMode As DataGridViewEditMode
    Get
        Return MyBase.EditMode
    End Get
    Set(value As DataGridViewEditMode)
        MyBase.EditMode = value
    End Set
End Property
  • ”’ <summary>初期値変更 セルの編集開始</summary>
    • これは、このコードを使う時(ロジックを書く時)のコメントになるので、書いた方がベターとなります。
  • <DefaultValue(GetType(DataGridViewEditMode), “EditOnEnter”)>
    • これは、型が違う時の初期値の書き方になります。
  • 後は、コンストラクタ(Sub New)に初期値を追加です。
    • EditMode = DataGridViewEditMode.EditOnEnter

最後は、大事なテストですね♪

作成したカスタムコントロール(DataGlidView)を動かしてテスト

動かしてみて解ると思いますが、きちんと初期値を変更したプロパティが動作していると思います。

DataGlidViewの初期値をカスタマイズした動作検証
DataGlidViewの初期値をカスタマイズした動作検証

EditModeは、セルにフォーカスを移動して、TABを使って、移動が解りやすくなります。

残っている懸案

分類懸案結論完了
現在なし
これからの懸案一覧

今回のまとめ

DataGlidViewにカスタムコントロールは、絶対にどこかでハマるのよね~(笑)

DataGlidViewについては、当面続くかと思います。

RTB カレンダー

31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
通販サイト(ECサイト)デモへ
ラテベラボブログへ
ナノシスへ

RTBアーカイブ(旧 Widget 版)

RTB ポストランキング (旧)

RTBアーカイブ(旧 Widget 版)