2016-08-31 13 views
0

複数のテキストボックスを持つウィンドウフォーム(C#)があります。ユーザーは、それぞれの測定範囲の数値を、おそらく28個のテキストボックスに入力します。私はクリックされたイベント(cmdCalculate)を作成して、入力されたすべての値を単純に収集し、さまざまな計算の目的でメソッドの引数の形でそれらを送信して、すべての計算を避けるフォームから直接値を取得します。複数のテキストボックスの値を収集するクリックイベントを作成する方法

構文に問題があります...クリックイベントで計算のためのすべてのコードを配置するとすべてがうまくなりますが、(経験豊富なコーダーによって)値を収集して計算することをお勧めします手順/方法を介して...

助けていただければ幸いです。

+1

:使用をハードコーディングせずに、このメソッドをすべてのテキストボックスを列挙するに

private List<string> CombineValuesFromTextBoxes() { return GetChildControls<TextBox>(this).Select(childControl => childControl.Text).ToList(); } 

private List<string> CombineValuesFromTextBoxes() { var values = new List<string>(); var allTextBoxes = GetChildControls<TextBox>(this); foreach (TextBox tb in allTextBoxes) { values.Add(textBox.Text); } return values; } 

それとも、LINQを使用するようにしてもよいしあなたのコード/試み? –

+0

私はコードを試みていませんでした - このコンセプトは私には新しいものです。メソッドを使った計算のためのテキストボックス値の収集 - 私は、フォームの上位レベルを –

+0

に適用しようとしているかのように、clickイベントを使って平均、合計などの計算を行うことに完全に満足していますか? –

答えて

0

ただ、このような方法で作成します:ある場合は

public static IEnumerable<TControl> GetChildControls<TControl>(Control control) where TControl : Control 
    { 
     var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>(); 
     return children.SelectMany(GetChildControls<TControl>).Concat(children); 
    } 
+0

コレクションを開始するにはclickイベントが必要です - ユーザーはcmdCalculateをクリックし、テキストボックスに対して収集された値をクリックし、値が入力されたことに基づいて計算されるか、またはクリックイベントによって計算が実行される方が良いでしょう。 –

+0

ボタンをフォームに追加してダブルクリックすると、フォーム内にeventHandlerが作成されます。この後、CombineValuesFromTextBoxesを呼び出し、必要な操作を行います。 –

+0

ありがとうございます –

関連する問題