1

我创建了一个文本框并希望在静态方法中引用它。我怎样才能做到这一点?这是我的代码

    private void Form1_Load(object sender, EventArgs e)
    {
        TextBox textbox2 = new TextBox();
        textbox2.Text = "A";
    }

    static void gettext() 
    {
        textbox2.Text = "B"; //here is my problem
    } 
4

5 回答 5

7

您需要以某种方式将其传递给静态方法,最简单的选择是扩展方法签名以接受文本框:

static void gettext(TextBox textBox) 
{
    textBox.Text = "B"; //here is my problem
} 
于 2013-03-11T10:35:30.843 回答
4

您应该将文本框作为静态方法的参数

static void gettext(TextBox textbox)
{
    textbox.Text = "B";
}
于 2013-03-11T10:35:47.530 回答
2

我不确定您是否理解静态的含义,静态意味着它属于 CLASS 而不是该类的 INSTANCE。可能更好的解决您的问题的方法是创建一个设置文本的实例方法。

// private variable
private TextBox textbox2;

private void Form1_Load(object sender, EventArgs e)
{
    // refers to private instance variable
    textbox2 = new TextBox();
    textbox2.Text = "A";
}

private void gettext() 
{
    // refers to private instance variable
    textbox2.Text = "B";
} 

如果您在理解上有困难static,您可能不需要使用它。静态成员可用于类的所有实例,但不属于其中任何一个,这意味着静态方法无法访问私有成员。

于 2013-03-11T10:35:34.640 回答
2

你可以这样做

static void gettext(TextBox textbox2) 
{
    textbox2.Text = "B";
} 

在代码中

private void Form1_Load(object sender, EventArgs e)
{
    YourClass.gettext(textbox2);
}
于 2013-03-11T10:37:12.793 回答
-1

您可以在 Load 上创建一个静态变量集:

private static readonly TextBox _textBox = new TextBox();

private void Form1_Load(object sender, EventArgs e)
{
    _textBox.Text = "A";
}

static void gettext()  
{ 
    _textbox2.Text = "B";
} 
于 2013-03-11T10:45:46.370 回答