0

我有一个小问题,用 C# 做实验。我有一个RichTextBox,在我单击一个按钮后,它会使用results.Text = "test";.

但是,在button_Click方法中,我调用了另一个方法,我们命名它X,它具有相同的语法results.Text = "john doe";。这行不通。我尝试将两个控件(按钮、richtextbox)的修饰符更改为公共,但没有运气。

我知道我错过了一些如此基本的东西,但我似乎找不到它。下面是示例代码:

  public void button_Click(object sender, EventArgs e)
    {
        Form1 obj = new Form1();
        results.Text = "nice"; //this works
        obj.X(a, b, c);
    }

现在,方法 X(从上述方法调用):

public void X(double x, double y, double z)
{
results.Text = "john doe" //doesn't work
}

任何其他解释为什么会发生这种情况?谢谢。

4

2 回答 2

1

您是从表单上的按钮调用此代码,对吗?那么你不应该创建一个新的表单。只需删除以下行:

   Form1 obj = new Form1();

并更改以下行:

X(a, b, c); // without 'obj' in front
于 2018-09-18T09:50:56.070 回答
1

如果您想使X过程独立于调用表单(Form1、Form0 或任何其他表单),您可以这样声明:

public void X(RichTextBox sender, double x, double y, double z) {
   sender.text = "john doe" //it will always work
}

它以这种方式被调用:

public void button_Click(object sender, EventArgs e)
{
    Form1 obj = new Form1();
    results.Text = "nice"; //this works
    obj.X(results, a, b, c);
}

您甚至可以编写此代码static,但我想这将取决于您的实现细节。

如前所述,尚不清楚您Form1的表单是否与托管按钮的表单相同。如果是这样,您应该通过删除该行并在不添加参数的情况下Form1 obj = new Form1();直接调用来避免重新创建它。X(a, b, c)RichTextBox

于 2018-09-18T10:04:03.873 回答