2016-04-05 7 views
1
​​

これらのテキストボックスはすべてVB形式であり、すべての正の数値であることを確認する代わりに、1つの変数でそれらをチェックするより効率的な方法が必要です。その変数が宣言されたら、私は自分のフォームがそのフォーム上のすべてのコントロールのリストですControls性質を持っているフォーム内のすべてのテキストボックスを1つの変数に割り当てる方法はありますか?

+2

かなり不明確あなたは変数がリスト短く、あなたはまだを作ると仮定する理由それらの7つを持っています。 TextBox引数をとるメソッドを記述します。リスト(TextBoxの)を作成し、テキストボックスを追加します。 For Eachを使用する。 –

答えて

5

をチェックの長いリストよりもずっと簡単

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 
+0

OPは値を設定するのではなく、チェックします。それ以外に、素晴らしい答え。 – CyberneticianDave

+0

@Cyber​​neticianDaveこれは、タイトル( 'assign')に焦点を当てるのか、内容をテストする(sort)のコードスニペットに依存するのでしょうか。 – Plutonix

+0

ネストされたコントロールにアクセスすることについても言及してください。そうでなければ素晴らしい答え。 – Neolisk

0

私はメモリから作業しているので、これはあいまいな回答になりますが、ここで私の最高の試みです。

要するに、私はそうは思わない。ある変数をチェックしたい場合は、その変数を自分で生成する必要があります。あなたはこのクライアント側を行うことができます。

また、これらのコントロールがすべて単一のフォーム内にある場合は、ループ内の各コントロールを循環してチェックすることができます。

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 

そして、このようにそれを呼び出す:

0

あなたは、テキストボックスのリストを取る関数を持つことができ

If CheckValues(new TextBox(){txtRound, txtDaysWorked}) Then 
     'case true 
    Else 
     'case false 
    End If 
+1

機能も。 –