業務アプリで使用できそうなものを五月雨に記録しておく。
まとまるまで待っていると忘れてしまうために・・・。ww
なお、このブログ内に記載しているソースの転載・転用については何も縛りはありません。
ご使用の状況の如何に問わず、作者たる当方は結果についてその責任を一切負いません。ご使用は自己責任の範囲でお願いいたします。
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
【フォームに張り付いているコントロールの初期化】
入力画面の構成で各コントロールの初期化を行いたいと思っていた。しかしながら、各画面(フォーム)ごとにコントロールを指定して初期値を引き渡す処理を延々と行うことに疲れたのでいい方法がないかと思案。
1つロジックを作って使いまわすこと(共通処理化)ができれば楽です。
こんなロジックを組んで初期化できるようにしてみました。
※フォームの中に張り付いているコントロールを見て、種類によって初期値を定義しておけば、その種類のコントロールが設定値(初期値)になります。
Public Class Form1
Inherits System.Windows.Forms.Form
まずは使用できるように宣言。参照設定で追加しても構いません。
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
End Sub
フォームを表示(ここで処理を実行させても構いませんが、今回はボタンを押して処理を実行させるので何も記述していません)
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'フォームオブジェクトを引数として渡すことも可能
InitFormControl(Me)
End Sub
ボタンを押した時に処理を実行するように。下記は実際の処理ロジック
Private Sub InitFormControl(ByVal FormCtrl As Control)
For Each FormCtrlItem As Control In FormCtrl.Controls
If TypeOf FormCtrlItem Is TextBox Then
'[TextBox]のテキストを空にする
FormCtrlItem.Text = String.Empty
ElseIf TypeOf FormCtrlItem Is RichTextBox Then
'[RichTextBox]のテキストを空にする
DirectCast(FormCtrlItem, RichTextBox).Clear()
ElseIf TypeOf FormCtrlItem Is ComboBox Then
'[ComboBox]の選択項目を一律でTextプロパティで設定している値にする
DirectCast(FormCtrlItem, ComboBox).SelectedIndex = -1
ElseIf TypeOf FormCtrlItem Is CheckBox Then
'[CheckBox]の選択状態のチェックを一律で外す
DirectCast(FormCtrlItem, CheckBox).Checked = False
ElseIf TypeOf FormCtrlItem Is ListBox Then
'[ListBox]の処理(どちらかを初期化とするかで有効にしてください)
'[ListBox]のアイテムを全て削除する
DirectCast(FormCtrlItem, ListBox).Items.Clear()
'[ListBox]の選択状態を初期化する
DirectCast(FormCtrlItem, ListBox).ClearSelected()
End If
'コントロールの中にコントロールが存在する場合は掘り下げて処理を行う。
If FormCtrlItem.Controls.Count > 0 Then
InitFormControl(FormCtrlItem)
End If
Next
End Sub
End Class