我正在尝试为项目创建一个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()));
}