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

投稿日:2021年3月8日

更新日:2021年3月9日

実用的なカスタムコントロールの作り方

前回、カスタムコントロールの説明と作り方を行いました。

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

今回は、前回作成したカスタムコントロールを変更して、もう少し、実用的なカスタムコントロールの作成を行います。

カスタムコントロール作成中
カスタムコントロール作成中

前回の続きになりますので、前回を見ていない方は、こちらからお願いします。

では、いきなり実践です!

今回行いたいことは、実用的なカスタムコントロールです!

実用的にしたいので、下記を目標にします。

  • フォーカスが当たった時、背景色を変える。
  • フォーカスが外れた時、背景色をなくす。
  • これで、どのコントロールにフォーカスが当たっているのか!
    ユーザに優しいシステムになる(たぶん!)

いきなり前回のロジックを変えます。

まずは、『Overrides』を使って、2つのイベントを追加して下さい。
このやり方が解らない人は、前回を見て下さい。

『Overrides』は、2つになります。

  • OnEnter
    • フォーカス取得時
  • OnLeave
    • フォーカス失踪時

そして、それぞれのMyBaseの前に、背景色を入れます。
そして出来たのがこちらになります。


	Protected Overrides Sub OnEnter(e As EventArgs)
		BackColor = Color.Yellow
		MyBase.OnEnter(e)
	End Sub

	Protected Overrides Sub OnLeave(e As EventArgs)
		BackColor = SystemColors.Window
		MyBase.OnLeave(e)
	End Sub

後は、前回の背景色のロジックは要らないので、全て削除します。

最終的に出来上がったロジックは、こちらになります。

Imports System.ComponentModel

Public Class TextBoxEx

Sub New()
    ' この呼び出しはデザイナーで必要です。
    InitializeComponent()
    ' InitializeComponent() 呼び出しの後で初期化を追加します。
End Sub
''' <summary>フォーカス取得時</summary>
Protected Overrides Sub OnEnter(e As EventArgs)
    BackColor = Color.Yellow
    MyBase.OnEnter(e)
End Sub
''' <summary>フォーカス失踪時</summary>
Protected Overrides Sub OnLeave(e As EventArgs)
    BackColor = SystemColors.Window
    MyBase.OnLeave(e)
End Sub

これが出来たがったら、ビルドして、フォームを表示します♪

前回と違って、実用的になっていませんか?

フォーカスが当たった時のみ、背景色が黄色になっていると思います。

これなら、つかえますよね♪

勿論背景色を変えれば、全ての配置したコントロールが変わります!

背景色を変えたカスタムコントロール
背景色を変えたカスタムコントロール

ここで、ちょっと考えて下さい。

システムを作るには、沢山のプログラムが必要になります。

カスタムコントロールを使えば、各プログラムに明記しなくても良い上、変更も一括で出来るということになります。

これが私がお勧めする理由になります。

まだ、やはりカスタムコントロールはダメだよって思っている方は、
空のカスタムコントロールを作って配置してみたはいかがでしょうか?

そうすることで、今までと変わりませんし、いざという時に、便利さがよく解ると思います♪
(空のカスタムコントロールは、前回の記事でつくっています)

今回は、説明していませんが、新たにプロパティーを追加やメソッドを追加することも出来ます。

ちなみに私のカスタムコントロールで、追加したプロパティーは、こちらになります!

RTBLABのカスタムプロパティー
RTBLABのカスタムプロパティー

是非、お勧めになりますので、やって見て下さい♪

残っている懸案

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

今回のまとめ

前回と今回は、なるべく、詳しく書いたつもりですが~(笑)

次回は、断片的になるかと思います。

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 版)