我正在尝试将程序的状态写入用户。但我这样做的方法不起作用。 statusBox是一个文本框窗体。
public static void writetoStatus(string text)
{
TextBox statusBox = new TextBox();
statusBox.Text = text;
}
请帮忙!
答案 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);