C# - 写入多行文本框

时间:2011-01-05 18:44:06

标签: c# winforms textbox

我正在尝试将程序的状态写入用户。但我这样做的方法不起作用。 statusBox是一个文本框窗体。

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

请帮忙!

3 个答案:

答案 0 :(得分:5)

您无法使用静态方法访问实例变量。我想不出statusBox不会成为实例成员的方式。尝试使你的方法非静态,它应该没问题。

答案 1 :(得分:0)

如前一个回答所述,您的方法需要是静态的才能访问表单上的TextBox

同样紧迫的是,您将状态置于新的TextBox而不是表单中的状态。

如果您创建了一个表单并在其上放置了TextBox,那么TextBox已经有了一个名称,您可以从代码隐藏文件中访问它。默认情况下,我认为它是Textbox1或其他一些数字。当然,您可以在设计器文件或Visual Studio中的表单编辑器GUI中更改此名称。

因此,我们假设您将现有TextBox的名称更改为statusBox。现在你的方法只需要这样:

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

答案 2 :(得分: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);