C#从Form1中的函数访问Form1元素

时间:2015-04-26 14:20:32

标签: c# winforms object static

我正在尝试为项目创建一个C#应用程序。由于我没有C#的经验,我很难理解如何引用Form元素。我需要从函数中更改richTextBox1内容并从DataReceivedHandler引用它。这是代码:

private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    Form1 myform = new Form1();
    string indata = sp.ReadExisting();
    Debug.Print("Data Received:");
    Debug.Print(indata);
    addRichBox(indata); //????Problematic Line????
}

public void addRichBox(String text)
{
    String x;
    x = richTextBox1.Text;
    richTextBox1.Text = text + Environment.NewLine + x;

    richTextBox1.SelectionStart = richTextBox1.Text.Length;
    richTextBox1.ScrollToCaret();
}

我想要做的只是在DataReceivedHandler中调用addRichBox函数,但它会给出错误“非静态字段,方法或属性需要对象引用”。我已经尝试使用addRichBox静态,并使用类似this.addRichBox的东西,但那些似乎不起作用。我该如何解决这个问题?提前谢谢。

修改 它现在有效。我做了一点挖掘,发现了如何调用。这是:

public void addRichBox(String text)
{

    richTextBox1.BeginInvoke(new MethodInvoker(() => richTextBox1.AppendText(text)));
    richTextBox1.BeginInvoke(new MethodInvoker(() => richTextBox1.SelectionStart = richTextBox1.Text.Length));
    richTextBox1.BeginInvoke(new MethodInvoker(() => richTextBox1.ScrollToCaret()));

}

0 个答案:

没有答案