2011-10-13 78 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

設置上的文本框中的文本屬性,它不顯示可能是一個操作:

  • 你是不是在看相同的控制要設置在

案文可以在實例化本身表單對象的cond副本,它是這種形式,您正在設置txtAttach文本屬性?

您期望被填充的控件可以是不同的控件嗎?用鼠標右鍵單擊文本框中您希望文本顯示在單擊屬性並檢查名稱。

  • 別的東西清空文本框後,將其設置

右鍵單擊txtAttach.Text並點擊查找所有引用,這會顯示該Text屬性引用的所有的地方 - 書面和讀入你的項目。這是定位與此控件的其他交互的非常有用的方法。

  • Fomatting正在文本框中顯示爲空

是字體太小,或者在相同的顏色作爲背景。你能選擇文本框中的文本嗎?

測試所有上述內容的最簡單方法是在窗體上用不同的名稱創建新的文本控件,更改代碼以填充它,檢查它是否確實已填充,然後替換舊的。

順便說一句,你還可以用單行減少代碼如下:

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

雖然這顯然跳過了控制檯寫線功能。