多くのドロップダウン リスト ボックスがオンになっているフォームがあります。それぞれの値に基づいてテーブルの行を表示または非表示にしてから、その行に含まれるテキスト ボックスに必須のフィールド バリデーターを追加します。各ドロップダウン リストの selectedindexchanged イベントでこれを実行しています。コードは以下のとおりです。
Protected Sub cbOffCover_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbOffCover.SelectedIndexChanged
If cbOffCover.SelectedValue = "N" Then
OffCoverRow.Visible = True
Dim rfOffcover As RequiredFieldValidator = New RequiredFieldValidator
With rfOffcover
.ControlToValidate = txtOffCover.ID
.SetFocusOnError = True
.ErrorMessage = "*"
.ForeColor = System.Drawing.Color.Red
End With
OffCoverCell.Controls.Add(rfOffcover)
Else
OffCoverRow.Visible = False
Dim c As Control
For Each c In OffCoverCell.Controls
If c.ID = "rfOffCover" Then
OffCoverCell.Controls.Remove(c)
End If
Next c
End If
End Sub
次に、ドロップダウン リストごとにこのコードを再利用して、別の名前の行を表示/非表示にし、別のテキスト ボックスに検証を適用します。
私の質問は、これを行うより良い方法はありますか? 正確な方法はわかりませんが、ドロップダウンリストごとにこれほど多くのコードを何度も書く(またはコピー/貼り付ける)必要はないと思います。作業を行う関数/クラスを作成することは可能ですか?代わりにそれを呼び出すことができますか? 基本的なように見えるかもしれませんが、私はasp/vbが初めてです。どうもありがとう