2011-01-05 8 views
0

Ich versuche, den Status des Programms für den Benutzer zu schreiben. Aber meine Methode funktioniert nicht. statusBox ist ein Textfeldfenster.C# - Schreiben in ein mehrzeiliges Textfeld

public static void writetoStatus(string text) 
     { 
      TextBox statusBox = new TextBox(); 
      statusBox.Text = text; 
     } 

Hilfe bitte!

+0

sieht gut dort in Textvariable oder falsch Textbox Name ein anderes Problem wie kein tect sein muss? –

+0

Ich sehe nichts falsch mit Ihrer Methode, aber die Tatsache, dass es statisch ist, lässt mich den Code um ihn herum sehen wollen. Andere Fragen zu beantworten: Kompiliert dies? Ist das ASP.NET oder ein Windows-Formular? – Kendrick

+0

eigentlich habe ich nicht verstanden, was willst du machen? Versuchen Sie, mehrzeilige TextBox zu erstellen (wie ich aus dem Titel verstehe) oder versuche, den Text einer TextBox zu aktualisieren? –

Antwort

5

Sie können mit einer statischen Methode nicht auf Instanzvariablen zugreifen. Ich kann mir nicht vorstellen, dass statusBox kein Instanzmitglied sein würde. Versuchen Sie, Ihre Methode nicht statisch zu machen und es sollte in Ordnung sein.

+0

guter Fang +1 ... –

+0

Vielen Dank! Ich habe die Zeile entfernt, um ein neues Textfeld zu erstellen. Ich habe die statische in meiner Methode los und jetzt funktioniert es. Einfacher als ich dachte! :) – user377419

0

Wie in einer vorherigen Antwort erwähnt, muss Ihre Methode statisch sein, um auf die TextBox auf Ihrem Formular zuzugreifen.

Auch drücken, ist jedoch die Tatsache, dass Sie den Status in eine neue TextBox statt der auf Ihrem Formular setzen.

Wenn Sie ein Formular erstellt und eine TextBox darauf gesetzt haben, dann hat die TextBox bereits einen Namen, und Sie können darauf aus der Code-Behind-Datei zugreifen. Standardmäßig denke ich, es wäre Textbox1 oder eine andere Nummer. Sie können diesen Namen natürlich in der Designer-Datei oder in der GUI des Formulareditors in Visual Studio ändern.

Also sagen wir, Sie ändern den Namen der bestehenden TextBox zu statusBox. Jetzt ist Ihre Methode braucht nur dies:

void WriteToStatus(string status) 
{ 
    statusBox.Text = status; 
} 
0

Ok, ich sehe, dass Sie eine neue Instanz von Textfeld innerhalb statische Methode erstellen. Diese Instanz der Textbox endet nirgendwo und wird zerstört, sobald Sie Ihre statische Methode ausgeführt haben.

Sie können entweder:

public static void writetoStatus(TextBox tb, string text) 
    { 
     tb.Text = text; 
    } 

    // and then later use it like: 
    writetoStatus(statusBox, text); 

Oder:

public static void writetoStatus(Form frm, string text) 
    { 
     TextBox tb = new TextBox(); 
     tb.Text = text; 
     frm.Controls.Add(tb); 
    } 

    // and then later use it like: 
    writetoStatus(myForm, text); 
Verwandte Themen