2009-10-28 2 views
0

Я перемещаю свое старое приложение из форм Windows в WPF и обнаружил ошибку с подчеркнутыми строками в этом методе. Может ли кто-нибудь помочь с этими проблемами в DoEvents; SuspendLayout; ResumeLayout. Мой старый метод:Поиск SQL-серверов в приложении WPF

private void FindDataBases() 
{ 
    string tempDBName = comboBoxDataBases.Text; 

    // ((FrameworkElement) this).Cursor = Cursors.WaitCursor; 
    ((FrameworkElement)this).Cursor = Cursors.Wait; 

    Application.DoEvents(); 

    SuspendLayout(); 

    DataSet dataBases = GetDatabases(); 

    ((FrameworkElement) this).Cursor = Cursors.Default; 
    Application.DoEvents(); 

    if ((dataBases != null) && (dataBases.Tables[0].Rows.Count > 0)) 
    { 
     comboBoxDataBases.DisplayMember = "DbName"; 
     comboBoxDataBases.DataSource = dataBases.Tables[0]; 

     if (comboBoxDataBases.FindStringExact(tempDBName) > 0) 
     { 
     comboBoxDataBases.SelectedIndex = comboBoxDataBases.FindStringExact(tempDBName); 
     } 
    } 
    else 
    { 
     comboBoxDataBases.DataSource = null; 
    } 

    ResumeLayout(); 

    // this.comboBoxDataBases.Focus(); 
} 
+0

Не могли бы вы рассказать нам, в чем проблема? Каковы сообщения об ошибках? –

+0

Как я сказал DoEvents; SuspendLayout; ResumeLayout - это вещи, которые больше не работают в WPF. – Vytas

+0

Мне просто нужно как-то сделать то же самое в WPF, как и в методе, опубликованном в журнале. – Vytas

ответ

0

Я бы постарался не блокировать приложение при перечислении баз данных. Как насчет того, чтобы фоновый поток выполнял работу? Может быть, BackgroundWorker? Блокируйте пользовательский интерфейс при запуске фонового потока, разблокируйте пользовательский интерфейс, когда это будет сделано. AFAIK нет такой вещи, как Application.DoEvents() в WPF больше ...