2017-01-04 3 views
0

私はWPFのnoobで、WinFormsから移動していて、文字列でテキストボックスのテキストにアクセスしようとしていますが、基本的にはWPFのバージョンが必要ですControls.Find()と私は動作するものを見つけることができないようです。ここに私のコードです。テキストボックスのテキストに文字列値の名前でアクセスする

<TextBox x:Name="amplitude0" HorizontalAlignment="Left" Height="20" TextWrapping="Wrap" VerticalAlignment="Top" Width="100" Canvas.Left="160" Canvas.Top="64" /> 
<TextBox x:Name="amplitude1" HorizontalAlignment="Left" Height="20" TextWrapping="Wrap" VerticalAlignment="Top" Width="100" Canvas.Left="280" Canvas.Top="64" /> 

...振幅まで9。とC#。

object textBox = new TextBox(); 

     for (int n = 0; n <= 9; n++) 
     { 
      txtAmplitude = "amplitude" + n; 
      textBox = FindName(txtAmplitude); 
      amplitude[n] = textBox.text; 
     } 

私はさまざまな機能を試しましたが、動作するものは見つかりませんでした。誰かが正しい方向に向いていますか?

事前に感謝

+0

あなたのエラーは何ですか?何がうまくいかない?より多くの情報なしで助けてくれるのは難しいです。 – CodeLikeBeaker

+0

エラーは「振幅[n] = textBox.text;」にあります。オブジェクトにはテキストの定義がなく、拡張メソッドのテキストもありません " –

+0

振幅[]はどこに定義されていますか?そして 'FindName()'? –

答えて

0

代わり

amplitude[n] = textBox.text; 

の何が欲しいのはこれが鋳造と呼ばれるamplitude[n] = ((TextBox) textbox).Text;

です。

しかし、これをやっているのであれば、おそらく正しいとは言えません。 MVVMのデザインパターンについては、Winのフォームとは非常に異なるので、これを読むことをお勧めします。

そしてobject textBox = new TextBox();が必要とされていない:あなたが今何をしているか

がバインディングの編集を簡単かつきれいに行うことができます。新しいTextBoxを初期化する必要はありません。

TextBox textbox; 
.... 
textbox = (TextBox) FindName(....); 
+0

これは、あなたの助けをいただきありがとうございます!私はそれをもっと読んで、それは新しい技術に移動して以来、しばらくしている –

+0

私はこの答えに追加するつもりではなく、宣言の行はvar textbox = new TextBox()またはTextBoxでなければならないtextBox =新しいTextBox();他の理由がある場合を除き、変数をオブジェクトにする必要があります。 –

+0

@ S.ご指摘いただきありがとうございます。編集された – Steve

関連する問題