如何在静态方法中引用非静态对象

时间:2013-03-11 10:32:54

标签: c# methods static textbox

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

    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
    } 

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

您应该将文本框作为参数提供给静态方法

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

答案 2 :(得分:2)

我不确定你理解静态意味着什么,静态意味着它属于CLASS而不属于类的实例。可能更好的解决方案是创建一个设置文本的实例方法。

// 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时遇到困难,则可能不需要使用它。静态成员可用于类的所有实例,但不属于任何类,这意味着静态方法无法访问私有成员。

答案 3 :(得分:2)

你可以这样做

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

在代码中

private void Form1_Load(object sender, EventArgs e)
{
    YourClass.gettext(textbox2);
}

答案 4 :(得分:-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";
}