これらのテキストボックスはすべてVB形式であり、すべての正の数値であることを確認する代わりに、1つの変数でそれらをチェックするより効率的な方法が必要です。その変数が宣言されたら、私は自分のフォームがそのフォーム上のすべてのコントロールのリストですControls
性質を持っているフォーム内のすべてのテキストボックスを1つの変数に割り当てる方法はありますか?
答えて
をチェックの長いリストよりもずっと簡単
If (dblVariable > 0) Then
次のように行きますよ。
各コントロールをループして、TextBox
であることを確認し、そうであればTextプロパティを設定します。
LINQが利用可能である場合は、質問を再読み込み
For Each control In myForm.Controls.OfType<TextBox>()
control.Text = "My Value"
Next
にこれを簡素化することができ、タイトルは少し誤解を招くですが、私はあなたが今求めているものを手に入れます。
また、LINQが利用可能であると仮定すると、.All
拡張子を使用する必要があります。
If Me.Controls.OfType(Of TextBox)().All(Function(x) Convert.ToDouble(x.Text) > 0) Then
' Do something
End If
OPは値を設定するのではなく、チェックします。それ以外に、素晴らしい答え。 – CyberneticianDave
@CyberneticianDaveこれは、タイトル( 'assign')に焦点を当てるのか、内容をテストする(sort)のコードスニペットに依存するのでしょうか。 – Plutonix
ネストされたコントロールにアクセスすることについても言及してください。そうでなければ素晴らしい答え。 – Neolisk
私はメモリから作業しているので、これはあいまいな回答になりますが、ここで私の最高の試みです。
要するに、私はそうは思わない。ある変数をチェックしたい場合は、その変数を自分で生成する必要があります。あなたはこのクライアント側を行うことができます。
また、これらのコントロールがすべて単一のフォーム内にある場合は、ループ内の各コントロールを循環してチェックすることができます。
Private Function CheckValues(txt As TextBox()) As Boolean
For Each member In txt
If not String.IsNullOrWhiteSpace(member.Text) Then
Dim number As Integer = CInt(member.Text)
If number < 0 Then
Return False
Next
Return true 'all positives
End Function
そして、このようにそれを呼び出す:
あなたは、テキストボックスのリストを取る関数を持つことができ
If CheckValues(new TextBox(){txtRound, txtDaysWorked}) Then
'case true
Else
'case false
End If
機能も。 –
かなり不明確あなたは変数がリスト短く、あなたはまだを作ると仮定する理由それらの7つを持っています。 TextBox引数をとるメソッドを記述します。リスト(TextBoxの)を作成し、テキストボックスを追加します。 For Eachを使用する。 –