2013-04-03 6 views
5

Nel mio winform ho gli usercontrols creati in modo dinamico ad ogni clic del pulsante. Voglio in fase di runtime di essere in grado di selezionarli semplicemente facendo clic una volta su di loro e poi tenendo premuto il tasto ctrl. Sono riuscito a farlo, ma solo per uno. Come posso far funzionare per tutti loro? Il mio codice:multi selezione ctrl + clic del pulsante in fase di esecuzione

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

Cosa significa "scegliere" il controllo utente? –

+0

I controlli non sono selezionati quando si fa clic su di essi? –

+1

@lazyberezovsky 'Control's ottiene" focus ", giusto? Ma solo uno alla volta. –

risposta

2

È possibile avere l'elenco dei controlli selezionati. Basta determinare se è stato premuto Ctrl quando si fa clic sul controllo e aggiungerlo alla lista selezionata (si può anche rimuoverlo se il controllo è stato aggiunto prima):

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); 
}