繁体   English   中英

C#-写入多行文本框

[英]C# - Writing to a multiline textbox

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

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

请帮助!

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

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

但是,还要紧迫的事实是您将状态放在新的TextBox而不是表单中的状态。

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

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

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

好的,我看到您正在静态方法中创建文本框的新实例。 该文本框实例无处可寻,一旦执行了静态方法,它就会被销毁。

您可以拥有:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM