2016-04-14 20 views
-1

私はいくつかのラジオボタンと4つのテキストボックスを持っています。私が達成したいのは、すべてのテキストボックスから値を取得し、すべてを1つのサマリーテキストボックス(要約)に表示することです。私はすべてのラジオボタンから値を取得することができましたが、テキストボックスから値を取得することはできません。さまざまなテキストボックスから別のテキストボックスに値を渡す

私は、これは次のようになりたい:RB1 - それ以下のコードは、すべてのラジオボタンからテキストを取得する参照してくださいTXTB4

RB2 -RB3 - TXTB1 - TXTB2 - - TXTB3:

私は提供を追加しましたコードが、それはうまく動作していないようです:

まあ
private void summary_TextChanged(object sender, EventArgs e) 
     { 

       var radios = this.Controls.OfType<GroupBox>().OrderBy(x => x.TabIndex) 
        .SelectMany(x => x.Controls.OfType<RadioButton>()) 
        .Where(x => x.Checked == true) 
        .Select(x => x.Text).ToList(); 

      this.summary.Text = string.Join("-", radios); 

       var textboxes = this.Controls.OfType<GroupBox>().OrderBy(x => x.TabIndex) 
        .SelectMany(x => x.Controls.OfType<TextBox>()) 
        .Select(x => x.Text).ToList(); 

      this.summary.Text = string.Join("-", textboxes); 

     } 
+1

なぜ、これは 'TextBox'に適応できないのですか? – ryanyuyu

答えて

3

あなたがここまで持っているならば、答えは非常に単純です:

private string GetTextFromTextBoxes() 
{ 
    var textboxes = 
      this.Controls.OfType<GroupBox>() 
          .OrderBy(x => x.TabIndex) 
          .SelectMany(x => x.Controls.OfType<TextBox>()) 
          .Select(x => x.Text); 

    return string.Join("-", textboxes); 
} 

テキストボックスがグループボックス内にあると仮定すると、それはオフコースです。テキストボックスは上で直接であれば、あなたから...

が起動中にフリーズキープ最初OfType<GroupBox>

OfType<TextBox>にUPDATEをSelectManyの呼び出しを削除し、変更します

Summary TextBoxのTextChangedイベントでこのコードを呼び出すと、無限ループが作成されます。 TextChangedイベントが呼び出されたとき、どのように異なっている可能性があるので、のTextプロパティが変更されます。しかし、このテキストをこのイベント内に設定するので、イベントは何度も繰り返されます。

要約テキストボックスを更新して、コード内のそのポイントまたはイベントからコードを呼び出す必要がある場合を把握する必要があります。そのため、上記のコードでテキストボックス内のテキストを直接変更するのではなく、テキストを作成する関数を作成したのです。

+0

私は、 '.Select(x => x.Text).ToList();というエンディングを変更すると、探している形式のstring.Joinも返されると思います。 – MethodMan

+0

ありがとう、私は私のアプリにコードを追加しましたが、何かがうまくいかず、起動中にアプリがフリーズし続けます。正しい場所に追加するかどうか分かりません。 – Truex

+0

プライベートボイドsummary_TextChanged(オブジェクト送信者、のEventArgs電子) {VARラジオ= this.Controls.OfType ().OrderBy(X => x.TabIndex) .SelectMany(X => x.Controls.OfType () ) .Where(x => x.Checked == true) .Select(x => x.Text).ToList(); this.summary.Text = string.Join( " - "、radios); VaRのテキストボックス= this.Controls.OfType ().OrderBy(X => x.TabIndex) .SelectMany(X => x.Controls.OfType ()) .Select(X => x.Text) ; return string.Join( " - "、textboxes); } – Truex