Come posso restituire il testo da un modulo a una casella di testo C #?
-
21-12-2019 - |
Domanda
Nel mio programma C #, ho un sacco di cassette di testo generate automaticamente.Su quelle caselle di testo, aggiungo un evento di clic che lancia un modulo con tre caselle a discesa.Dopo che l'utente seleziona un valore per ciascuna casella, fare clic su OK e il valore deve essere posizionato nella casella di testo.
A partire dall'a proprio ora, l'evento click si accende bene e la finestra di dialogo arriva.Dopo aver fatto clic su OK, tuttavia, i dati non vengono mai inseriti nella casella di testo.Ecco il mio evento Click.
private void clickTextBox(object sender, EventArgs e)
{
//MessageBox.Show(connectString + " " + unit);
frmPickOven f = new frmPickOven(connectString, unit);
if (f.ShowDialog() == DialogResult.Cancel)
{
return;
}
else
{
this.Text = "";
Console.WriteLine("Before: " + this.Text);
this.Text = f.Oven;
Console.WriteLine("After: " + this.Text);
}
}
.
Il Before:
è sempre vuoto.
Il After:
mostra il nuovo valore, ma il valore non è scritto sulla casella di testo.
Ho appena capito che il valore è stato scritto al titolo del modulo.Pensavo che this
si riferirebbe a qualsiasi cosa chiamata la funzione, ma a quanto pare.Come posso impostare il valore della casella di testo che ha chiamato la funzione?
Soluzione
L'argomento mittente alla funzione è il controllo che ha sollevato l'evento.
((TextBox)sender).Text = ...
. Altri suggerimenti
this.Text
qui si riferisce al titolo del Form
contenente il TextBox
.Dovresti cambiarlo a
((TextBox) sender).Text = f.Oven;
.