2015-02-05 12 views
5

Ho un controllo personalizzato contenente una casella di testo e un pulsante. Io uso il controllo personalizzato come controllo di modifica per una colonna specifica in ObjectListView.Come impostare lo stato attivo su un controllo all'interno di un controllo personalizzato?

Su evento CellEditStarting faccio:

private void datalistViewProducts_CellEditStarting(object sender, CellEditEventArgs e) 
{ 
    var ctl = (MyCustomControl)e.Control; 
    e.Control = ctl; 
} 

metodo del ObjectListView ConfigureControl chiama già il metodo del controllo Select. Funziona bene se ho un controllo utente che eredita direttamente da un TextBox standard.

Così ho aggiunto il seguente codice al mio UserControl:

public new void Select() 
{ 
    textBox.Select(); 
} 

Tuttavia, avendo un UserControl come sopra descritto, il metodo Select non si muove il fuoco alla casella di testo.

Cosa mi manca qui?

+0

Grazie, fratello! ('Me Too', solo perché li vedo spesso insieme, tuttavia ora ho idea di cosa significhi) – FastAl

risposta

1

L'unico modo che ha reso finalmente il lavoro è stato quello di aggiungere il seguente codice nell'usercontrol:

protected override void OnEnter(EventArgs e) 
{ 
    base.OnEnter(e); 
    textBox.Select(); 
} 
+0

Divertente qualcuno giù votato questo, quando l'OP ha detto che ha funzionato! – FastAl

1

È possibile creare un metodo in CustomUserControl, ad esempio FocusControl(string controlName) e quindi chiamare questo metodo per mettere a fuoco il controllo in Controllo personalizzato.

Creare il metodo nella utente personalizzata Control-

public void FocusControl(string controlName) 
    { 
     var controls = this.Controls.Find(controlName, true); 
     if (controls != null && controls.Count() == 1) 
     { 
      controls.First().Focus(); 
     } 
    } 

chiamate questo metodo-

//textBox1 is the name of your focussing control in Custom User Control 
userControl11.FocusControl("textBox1"); 
+0

Non funziona :( –

+0

@ Ivan-MarkDebono, che tipo di controllo stai cercando di mettere a fuoco? E da quale controllo? –

+0

Una semplice casella di testo all'interno di un controllo personalizzato.Il controllo personalizzato viene utilizzato come controllo di modifica per ObjectListView. –