2016-04-15 31 views
0

私はいくつかのラジオボタンと4つのテキストボックスを持っています。テキストボックス/ラジオボタンから1つのテキストボックスに値を渡す

私が達成したいのは、すべてのテキストボックスから値を取得し、すべてを1つのサマリーテキストボックス(要約)に表示することです。

私はすべてのラジオボタンから値を取得することができましたが、テキストボックスから値を取得することはできません。

私は、これは次のようになりたい:

RB1 - RB2 -RB3 - TXTB1 - TXTB2 - TXTB3 - TXTB4

ラジオボタンだけでなく、テキストボックスには、グループボックス内のすべてのです。

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); 
} 
+0

あなたの質問から何が問題なのかは明らかではありません。あなたはTextBoxesのテキストを取得していないのですか?要約は空ですか? – Steve

+0

あなたはTexBoxタイプのものですか?他のタイプではありません。 Telerikから? –

+1

そして、奇妙なことは、おそらく唯一の変更がイベントハンドラの内部で行われたとすれば、このコードを 'summary_TextChanged()'に置くことです。 –

答えて

1

最後の行は、要約テキストボックスの内容をテキストボックスの内容に置き換えます。したがって、ラジオボタンの内容は失われます。あなたがする必要がどのような
は、このコードが呼び出されたときに内容を変更するので、あなたはその後、大きな問題があるsummary TextChangedイベントにこのコードを添付した場合にも、前のコンテンツ

// Adding also a - to separate radiobuttons from textboxes 
this.summary.AppendText("-" + string.Join("-", textboxes)); 

に追加することです同じTextBox summaryとなり、コード自体がリコールされます。

通常、WinFormsエンジンはこの種の再帰を避けるほどスマートですが、summaryの内容を2回変更するため、フォームエンジンの安全対策が無効になります。

それでは、おそらく何が起こっていることはこれです:

  1. 要約が空白で、あなたには、いくつかの方法でトリガーTextChangedイベント
  2. 要約はラジオテキストに設定されている、TextChangedイベントが再び
  3. を想起しています要約が同じラジオテキストに設定されても何も変更されず、 WinFormsエンジンがTextChangedイベントハンドラを呼び出すのを避ける
  4. 要約がテキストボックステキストに設定されている(または新しいテキストが前に追加されています) 、TextChangedは
  5. だけで、他のテキストボックスTextChangedイベント用やラジオボタンにチェックイベントのイベントハンドラとして使用する、要約テキストボックスのイベントハンドラとして、このコードを追加しないでくださいポイントから2

を続けるリコールされます。

+0

ありがとうございました。このコードをグループボックスに追加したところ、すべてのテキストボックスが配置されていますが、ラジオボタンがうまくいきません。私はコードをもう一度見直し、あなたに連絡します。 – Truex

+0

このコードをどこに追加するかが最も重要です。すべてのtextbox.TextChangedイベントをこのコードに設定し、RadioButton.CheckedChangedイベントと同じことを行います – Steve

+0

各ラジオボタンとテキストボックスにコード全体(ラジオ+テキストボックス)を追加する必要がありますか? – Truex

関連する問題