2016-04-14 26 views

Odpowiedz

5

Ponieważ DropDownList nie ma właściwości Focused jak dla ComboBox kontroli w WinForms, to nie takie proste. Jednym ze sposobów jest dodanie flagi niestandardowej i zmiana jej wartości przed zmianą właściwości SelectedIndex. Wewnątrz obsługi zdarzeń można sprawdzić na tej flagi i przywrócić jej wartość:

private volatile bool isAutoFired = false; 

Potem gdzieś w kodzie:

isAutoFired = true; 
cbo.SelectedIndex = placering; 


private void cbo_SelectedIndexChanged(object sender, EventArgs e) 
{  
    if(!isAutoFired) 
    { 
     // event is fired by user 
    } 

    isAutoFired = false; 
} 
+0

Dziękuję, właśnie tego szukałem! – Moelbeck

1

Można usunąć obsługi zdarzeń w kodzie tuż przed programowalnie zmieniając wybór następnie dodaj ją zaraz potem. To moje ulubione podejście. Nie potrzebujesz flag.

cbo.SelectedIndexChanged -= cbo_SelectedIndexChanged; 
cbo.SelectedIndex = 1 // or what you do to change the index 
cbo.SelectedIndexCHanged += new EventHandler(cbo_SelectedIndexChanged);