2012-02-20 22 views
1

私はテキストボックスの名前をすぐに作成しようとしています。そのため、それらに書き込むのが簡単になり、ループを使用しなくなります。私はVisual Stdio 2010、.NET 2.0を使用しています。以下のコードは私の例ですが、動作させることはできません。C#テキストボックス名を即座に作成

私はここやネットの他の情報源についていくつかの例を見てきましたが、わかりません。誰かが愚かな間違いの可能性があることを指摘できますか?多くのありがとう:)

私はエラーが実際にエラーではないtextBoxを更新しないということです。コメントアウトされたコードを使用すると、 "FindControl"メソッドを見つけることができません。私はthis.controlsとして見ましたが、私は非常に混乱しています。私はこれを年齢のために試してきました。私は休憩が必要だと思います。

+0

WPF、Silverlightなど? – MyKuLLSKI

+0

何が問題なのですか?どのようなエラーが出ますか? – Msonic

+0

Controls.Find()メソッドを見てください。 – HardCode

答えて

0

私はあなたのコードをサンプルWinFormsプロジェクトにコピーしました。

あなたはおそらくすでにこれをチェックしましたが、それはあなたがあなたのTextBoxMultilineになりたいことを言及する価値だと最初の行が空であるので、あなたは、実際のテキストを追加する前に改行を追加します。 TextBoxの高さで一度に1行しか表示できない場合は、テキスト付きの行にはが表示されないことがあるため、更新されていないようです。

いずれかの方法は、私はそれを少し簡単にするためにあなたのコードにいくつかのマイナーな変更を加えましたし、最初の入力の前に新しい行を入力しない:

private delegate void NameCallBack(string varText, int b); 
public void UpdateTextBox(string input, int t) 
{ 
    TextBox tb = this.Controls[String.Format("textBox{0}", t)] as TextBox; 

    if (InvokeRequired) 
    { 
     tb.BeginInvoke(new NameCallBack(UpdateTextBox), input, t); 
    } 
    else 
    { 
     if (!String.IsNullOrEmpty(tb.Text)) 
     { 
      tb.Text += Environment.NewLine; 
     } 
     tb.Text += input; 
    } 
} 

動作するようです。

更新

これはまだ動作しない場合は、問題がどこか別の場所のようです。 テキストを表示するテキストボックスに、textBox<x>という名前をもう一度付けてください。<x>が適切な番号です。

もう1つの例外は、例外がスローされていないことを確認することです(コード内の他の場所にキャッチされる可能性があります)。すべての例外で破断するには、デバッグ例外...共通言語ランタイム例外に関連付けられているスローされ列のチェックボックスをチェックし、表示されたウィンドウ内に行きます。

+0

こんにちは、ありがとう!唯一のことは、テキストボックスは約600×600、複数行ですが何も表示しませんが、テキストボックスtb = ...をコメントアウトしてtbをtextBox2に割り当てると、画面上にアイデアが正しく表示されますか? – James

+0

どのようにUpdateTextBoxメソッドを呼び出しますか? UpdateTextBox( "my text"、2);のようなものを必ず使用してください。 –

+0

私はそれを...プログラムと呼んでいます。MainLogWindow.UpdateTextBox(convertedHex、textBox); – James

関連する問題