2011-10-13 5 views
1

私は別のクラスからパブリックメソッドを呼び出しています。これはパラメータとしてListを取り込み、各項目をテキストフィールドに出力するリストを通過します。問題は、テキストフィールドが空のままであることです!テキストボックスに入力する前にアイテムをコンソールに出力することでリストにデータが入力されていることを確認しました。C#テキストボックスが空のまま残ります

リストには文字列が含まれており、各文字列をテキストフィールドに続けてセミコロンで出力する必要があります。

これは、呼び出されるメソッドです。

public void fillAttachment(List<string> attachList) 
{ 
    for (int i = 0; i < attachList.Count; i++) 
    { 
    Console.WriteLine("List: " + attachList[i]); 
    txtAttach.Text += attachList[i] + ";"; 
    } 
} 
+0

FillAttachmentを呼び出すときにUIスレッドを使用しているとしますか?それ以外の場合は例外がスローされます。あなたがtxtAttach ...のコードでブレークポイントを歩いていくと、ループするにつれてそれが成長していますか? – tonycoupland

+1

forループをスキップして確認してください。 TextBoxにテスト文字列を設定するだけで、動作しますか?その場合は、文字列をキャッシュしてからTextBoxに設定してください。文字列のようなものtmpString = txtAttach.Text;アイテムを連結し、最後にtxtAttach.Text = tmpStringを更新します。 – SuperOli

+0

文字列をテキストボックスに割り当てるだけでは機能しません。テキストボックスに問題があるはずです。何が間違っている可能性がありますか? –

答えて

2

ないあなたが動作しない理由を確認してくださいしかし、私は

public void fillAttachment(List<string> attachList) 
{ 
    string result = ""; 
    //OR (if you want to append to existing textbox data) 
    //string result = txtAttach.Text; 

    for (int i = 0; i < attachList.Count; i++) 
    { 
     Console.WriteLine("List: " + attachList[i]); 
     result += attachList[i] + ";"; 
    } 

    txtAttach.Text = result; 
} 

がためにその仕事をする...このようにそれをやっているだろう君は?その後、あなたのコードから明らかにされていません非常に間違って何か他のものがあるない場合

+0

残念ながらそれはどちらもうまくいきません。文字列をテキストボックスに直接割り当てるだけでは機能しません。そのテキストボックスだけでなく、他のテキストボックスのいずれかにテキストを送信しようとしても機能しません。私は別のクラスからこのメソッドを呼び出すという事実と関係がありますか? –

4

私はこの方法でそれを解決するだろう:

foreach(var attach in attachList) 
{ 
    Console.WriteLine(attach); 
    txtAttach.AppendText(string.Format("{0};", attach)); 
} 
3

は、テキストボックスにテキストプロパティを設定し、それが1である可能性が表示されません次の:あなたは

にテキストを設定しているよう

  • あなたがSEをインスタンス化しませんでした同じコントロールを見ていませんフォームオブジェクトのコピーをコピーします。このフォームはtxtAttachテキストプロパティを設定していますか?

    移入すると予想されるコントロールは異なるものになる可能性がありますか?クリックプロパティでテキストを表示するテキストボックスを右クリックし、名前を確認します。

    • あなたは

    それを設定した後、何か他のものは、テキストボックスをクリアしている右txtAttach.Textをクリックして、[すべての参照の検索]をクリックし、これはあなたのTextプロパティが参照されているすべての場所が表示されます - 書かれており、あなたのプロジェクトを読み込みます。これは、このコントロールとの他のやりとりを見つけるのに非常に便利な方法です。 Fomattingは、テキストボックスを作っている

    • は空

    フォントが小さすぎる、または背景と同じ色で表示されます。テキストボックスのテキストを選択できますか?

    上記のすべてをテストする最も簡単な方法は、別の名前のフォームに新しいテキストコントロールを作成し、コードを入力して実際に入力されていることを確認してから、古いものを置き換えます。余談として

    次のように、あなたはまた、単一の行でコードを減らすことができる:

    public void fillAttachment(List<string> attachList) 
    { 
        txtAttach.Text = String.Join(";", attachList.ToArray()); 
    } 
    

    これは明らかに、コンソールの書き込み線の機能をスキップしますが。