Textbox personalizzata

venerdì 11 gennaio 2008 - 12.54

Teech Profilo | Expert

Ciao.
Forse ho sbagliato l'approccio per raggiungere il mio scopo quindi vi chiedo un consiglio...

Vorrei personalizzare il controllo Textbox creado un MyTextbox che abbia dei "comportamenti" particolari (tipo che cambi colore quando prende il focus, che utilizzi il tasto invio come se fosse il Tab e altre cose...).

Ho creato uno UserControl dove gli ho inserito una Textbox (tb) ed ho inserito il codice per farla operare come vorrei io. Ho notato alcuni problemi:

- Quando utilizzo il controllo personalizzato MyTextBox in un form se voglio leggere il testo inserito devo utilizzare MyTextBox.tb.Text mentre io vorrei utilizzare solo MyTextBox.Text

- In caso di pressione del tasto INVIO vorrei passare al controllo successivo della Form: nell'evento KeyDown di tb (tb_KeyDown) ho inserito il seguente codice
SelectNextControl(Activecontrol, true, true, false, true)
In questo modo funziona solo all'interno di MyTestBox se avessi più controlli "Primitivi" ma all'interno di un form non funziona.

Potete darmi un aiutino per risolvere questi problemi?

Avevo pensato anche di ereditare dal controllo base TextBox e "aggiustarmi" le cose a piacere, ma non ho capito come poter fare...

Grazie mille.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

aiedail92 Profilo | Expert

Ciao

Per il primo punto devi eseguire l'override della proprietà Text del tuo UserControl, in modo da ottenere e impostare il valore della textbox:

public override string Text { get { return tb.Text; } set { tb.Text = value; } }


Invece il secondo tuo problema è dato dal fatto che il metodo SelectNextControl agisce sui controlli che appartengono al controllo dal quale viene chiamato. Quindi per selezionare il controllo successivo in un form devi prima trovare il form padre del tuo controllo:

private void tb_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { ParentForm.SelectNextControl(ActiveControl, true, true, false, true); } }

Ciao,

Luca

Teech Profilo | Expert

Ho capito come ereditare un controllo (faccio uno UserControl poi cambio l' Inherits sul Designer al controllo che voglio io) ed utilizzando il concetto di Parent (che assolutamente non conoscevo) ho risolto molto velocemente tutti i miei problemi...

Grazie mille!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5