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?

È stato utile?

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;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top