2016-02-02 35 views
2

這裏是我可以讓我的頭。在Windows窗體中,我正在嘗試通過函數的結果更新組合框。該函數返回正確的結果爲List<string>,但它僅在事件首次通過時更新。這是我嘗試過的。我無法將組合框重新繪製

cbDatabase.DataSource = GetServerDatabases(txbServer.Text); 
cbDatabase.Refresh(); 

我知道我不能只是循環的結果列表,並填充它,但我不能停止思考,有一個更好的辦法。

在此先感謝

+1

什麼不是*第一次*?你是否再次設置'DataSource'(例如[喜歡這裏](http://stackoverflow.com/a/17615334/1997232))或者第二次看起來怎麼樣? – Sinatr

+0

它應該刷新__每當您再次設置數據源___時。單獨調用__refresh不會讓它再次獲取值,只會更新屏幕。 – TaW

+0

第一個和第二個和我上面第一次寫的相同,它傳遞給我的代碼是a,b,c ec。並將它填充到組合框中,第二次傳遞true //它在onServer上按鈕GetServerDatabases(txbServer.Text)返回列表爲z,x,c。但組合框仍然顯示a,b,c這是我的問題。 –

回答

1

你可以只使用一個foreach循環瀏覽清單,或者如果你想讓它更復雜一點,你可以每個功能經過時引發事件和單獨加載每個結果。以下是我最近撰寫的代碼片段,可以完成這項工作:

public void Camera_FoundEvent(string addr, string port) 
    { 
     if (InvokeRequired) 
     { 
      Invoke(new UpdateCameraList(Camera_FoundEvent), addr, port); 
     } 
     else 
     { 
      if (!cboCameras.Items.Contains(addr)) 
      { 
       //if default port 80 port no. is ommitted, else add port 
       string cam = (port != null) ? (addr + port) : addr; 
       cboCameras.Items.Add(cam); 
      } 
     } 
    } 
+0

我明白了。事實上,這是它現在的工作方式,但我打開主題,所以我明白爲什麼更改數據集不起作用 –