`我想在静态方法中更改文本框文本。我怎么能这样做,考虑到我不能在静态方法中使用“this”关键字。换句话说,如何让对象引用文本框文本属性?
这是我的代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public delegate void myeventhandler(string newValue);
public class EventExample
{
private string thevalue;
public event myeventhandler valuechanged;
public string val
{
set
{
this.thevalue = value;
this.valuechanged(thevalue);
}
}
}
static void func(string[] args)
{
EventExample myevt = new EventExample();
myevt.valuechanged += new myeventhandler(last);
myevt.val = result;
}
public delegate string buttonget(int x);
public static buttonget intostring = factory;
public static string factory(int x)
{
string inst = x.ToString();
return inst;
}
public static string result = intostring(1);
static void last(string newvalue)
{
Form1.textBox1.Text = result; // here is the problem it says it needs an object reference
}
private void button1_Click(object sender, EventArgs e)
{
intostring(1);
}`
答案 0 :(得分:3)
如果要从静态方法内部更改非静态对象的属性,则需要通过以下几种方式之一获取对该对象的引用:
在任何情况下,静态方法都必须获取对象的引用,以便检查其非静态属性或调用其非静态方法。
答案 1 :(得分:0)
你从dasblinkenlight得到了一个完美的答案。以下是第3种方法的示例:
public static string result = intostring(1);
static void last(string newvalue)
{
Form1 form = (Form1)Application.OpenForms["Form1"];
form.textBox1.Text = result;
}
我不完全确定你为什么传递一个字符串参数而不使用它。