投稿日: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
これが出来たがったら、ビルドして、フォームを表示します♪
前回と違って、実用的になっていませんか?
フォーカスが当たった時のみ、背景色が黄色になっていると思います。
これなら、つかえますよね♪
勿論背景色を変えれば、全ての配置したコントロールが変わります!
ここで、ちょっと考えて下さい。
システムを作るには、沢山のプログラムが必要になります。
カスタムコントロールを使えば、各プログラムに明記しなくても良い上、変更も一括で出来るということになります。
これが私がお勧めする理由になります。
まだ、やはりカスタムコントロールはダメだよって思っている方は、
空のカスタムコントロールを作って配置してみたはいかがでしょうか?
そうすることで、今までと変わりませんし、いざという時に、便利さがよく解ると思います♪
(空のカスタムコントロールは、前回の記事でつくっています)
今回は、説明していませんが、新たにプロパティーを追加やメソッドを追加することも出来ます。
ちなみに私のカスタムコントロールで、追加したプロパティーは、こちらになります!
是非、お勧めになりますので、やって見て下さい♪
残っている懸案
分類 | 懸案 | 結論 | 完了 |
---|---|---|---|
- | 現在なし | - | - |
今回のまとめ
前回と今回は、なるべく、詳しく書いたつもりですが~(笑)
次回は、断片的になるかと思います。