2013-04-03 7 views
5

W moim WinFormie mam usercontrols, które są tworzone dynamicznie przy każdym kliknięciu przycisku. Chcę, aby w środowisku wykonawczym móc je wybrać, klikając je raz, a następnie naciskając klawisz Ctrl. Udało mi się to zrobić, ale tylko na jeden. Jak mogę pracować dla nich wszystkich? Mój kod:multi select Ctrl + przycisk kliknięcie w czasie wykonywania

private void TControl_Click(object sender, EventArgs e) //TControl is the name of usercontrol 
    { 
     TControl tc = new TControl(); 
     Control ctrl = sender as Control; 
     if (ctrl != null) 
     tc = ctrl;//it doesn't work like this. 
+1

Co to znaczy "wybrać" kontrolę użytkownika? –

+0

Czy nie zaznaczono elementów sterujących po ich kliknięciu? –

+1

@lazyberezovsky 'Kontrola uzyskuje" fokus ", prawda? Ale tylko jeden na raz. –

Odpowiedz

2

Możesz mieć listę wybranych elementów sterujących. Wystarczy określić, czy naciśnięto klawisz Ctrl po kliknięciu elementu sterującego i dodać go do wybranej listy (można również go usunąć, jeśli wcześniej dodano kontrolę):

List<TControl> selectedControls = new List<TControl>(); 

private void TControl_Click(object sender, EventArgs e) 
{ 
    if ((ModifierKeys & Keys.Control) == 0) 
     return; 

    TControl tc = (TControl)sender; 
    if (selectedControls.Contains(tc)) 
     return; // you can remove control here 

    selectedControls.Add(tc); 
}