2011-01-05 2 views
0

Я пытаюсь записать статус программы пользователю. Но мой метод сделать это не работает. statusBox - это текстовая форма окна.C# - Запись в многострочное текстовое поле

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

Помогите пожалуйста!

+0

выглядит хорошо, должно быть какой-то другая проблема, как ни TECT в текстовой переменной или неправильное имя текстового поля? –

+0

Я не вижу ничего плохого в вашем методе, но факт, что он статичен, заставляет меня видеть код вокруг него. Другие вопросы для ответа: компилируется ли это? Является ли это ASP.NET или формой Windows? – Kendrick

+0

На самом деле я не понял, что вы хотите сделать? Вы пытаетесь создать многострочный текстовый блок (как я понимаю из названия) или пытаюсь обновить текст textBox? –

ответ

5

Вы не можете получить доступ к переменным экземпляра со статическим методом. Я не могу думать о том, что statusBox не будет членом экземпляра. Попробуйте сделать свой метод нестатичным, и все должно быть хорошо.

+0

good catch +1 ... –

+0

Большое спасибо! Я удалил строку, создав новое текстовое поле. Из моего метода избавился от статики, и теперь он работает. Проще, чем я думал! :) – user377419

0

Как уже упоминалось в предыдущем ответе, ваш метод должен быть статическим, чтобы получить доступ к TextBox в вашей форме.

Также нажимаем, однако, факт, что вы помещаете статус в новый TextBox, а не тот, который находится на вашей форме.

Если вы создали форму и положили на нее TextBox, то у TextBox уже есть имя, и вы можете получить к нему доступ из файла кода. По умолчанию, я думаю, это будет Textbox1 или какой-нибудь другой номер. Вы можете, конечно, изменить это имя в файле конструктора или в графическом редакторе форм в Visual Studio.

Итак, скажем, вы меняете имя существующего TextBox на statusBox. Теперь ваш метод должен быть только это:

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

Хорошо, я вижу, что вы создаете новый экземпляр текстового поля внутри статического метода. Этот экземпляр текстового поля нигде не заканчивается, и он уничтожается после выполнения вашего статического метода.

либо Вы можете:

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

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

Или:

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); 
Смежные вопросы