我正试图将程序的状态写入用户。但是我的方法不起作用。 statusBox是一个文本框窗口。C# - 写入多行文本框
public static void writetoStatus(string text)
{
TextBox statusBox = new TextBox();
statusBox.Text = text;
}
请帮忙!
我正试图将程序的状态写入用户。但是我的方法不起作用。 statusBox是一个文本框窗口。C# - 写入多行文本框
public static void writetoStatus(string text)
{
TextBox statusBox = new TextBox();
statusBox.Text = text;
}
请帮忙!
您无法使用静态方法访问实例变量。我想不出一种statusBox
不会是实例成员的方式。尝试让你的方法是非静态的,它应该没问题。
好赶上+1 ... – 2011-01-05 18:49:50
非常感谢!我删除了创建新文本框的行。摆脱了我的方法中的静态,现在它的工作。比我想象的更简单! :) – user377419 2011-01-05 18:58:17
正如前面的回答中所述,您的方法需要是静态的才能访问表单上的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);
看起来没事就必须有像文本变量或错误的文本名称的TECT一些其他的问题吗? – 2011-01-05 18:46:17
我没有看到你的方法有什么问题,但它是静态的,这让我想看看它的代码。其他问题回答:这是否编译?这是ASP.NET还是Windows窗体? – Kendrick 2011-01-05 18:47:53
其实我不明白你想做什么?正试图创建多行文本框(正如我从标题理解)或尝试更新任何文本框的文本? – 2011-01-05 18:48:05