2016-02-02 2 views
2

Вот что я могу опустить. В форме окна я tring, чтобы обновить combobox по результату функции. Функция возвращает правильное значение resutlt как List<string>, но оно обновляется только при первом прохождении события. Вот что я пробовал.Я не могу получить Combobox для перерисовывания

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

Я знаю, что я наклоняю просто петля список результатов и пополнить его, но я не могу перестать думать, что есть лучший путь.

Заранее спасибо

+1

Что не * в первый раз *? Вы снова устанавливаете «DataSource» (например [здесь] (http://stackoverflow.com/a/17615334/1997232)) или как выглядит второй раз *? – Sinatr

+0

Он должен обновлять __когда вы снова установите источник данных__. Вызов только __refresh не приведет к тому, что он вернется, чтобы снова получить значения, только для обновления экрана. – TaW

+0

Первый и второй те же, что и я написал выше, в первый раз, когда он передал true код, который у меня есть список a, b, c ec. и он заполняет его в поле со списком второй раз, когда я передаю true // это onclick на кнопке GetServerDatabases (txbServer.Text) return list as z, x, c. Но в поле со списком все еще есть a, b, c, это мой вопрос. –

ответ

1

Вы можете просто использовать цикл Еогеаспа, чтобы пройти через список, или если вы хотите, чтобы сделать его немного более изощренными вы могли бы вызвать событие каждый раз, когда функция проходит и загружать каждый результат индивидуально , Вот фрагмент кода, который я написал недавно, чтобы сделать именно эту работу:

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

Я получил это. На самом деле так работает, но я открыл тему, поэтому понимаю, почему смена набора данных не работает –

Смежные вопросы