使用静态方法更新富文本框



我正在尝试从多个static methods更新RichTextBox控件。每次都要以非常快的时间间隔添加大量文本。这是一种客户端服务器类型的应用程序,dll 正在使用静态处理程序。我使用以下代码,并且没有从静态方法在富文本框中添加任何文本。我该如何解决这个问题?

    public partial class MyMainForm : Form
    {
        private static MyMainForm FrmReference;
        private static void Handler1(object parameter, ConnectionEvent CE)
        {
            FrmReference.MyRichTextBox.AppendText(DateTime.Now + "....x....");
        }
        private static void Handler2(object parameter, DataEvent DE)
        {
            FrmReference.MyRichTextBox.AppendText(DateTime.Now + "....y....");
        }
        public MyMainForm()
        {
            InitializeComponent();
            FrmReference = this;
        }
        private void VNToolStripButtonStart_Click(object sender, EventArgs e)
        {
            con = new Connection("127.0.0.1", ConParams);
            con.SetConnectionHandler(Handler1, null);
            con.SetDataHandler(Handler2, null);
            MyRichTextBox.AppendText(DateTime.Now + "....abc....");
        }
    }

不会调用您的处理程序。

如果您尝试这样的事情,您会发现问题不在于应该写入RichTextBox的静态方法:

public partial class Form1 : Form
{
    private static Form1 frmReference;
    private static void WriteToMyRichTextBox(string what)
    {
        frmReference.richTextBox1.AppendText(what);
        frmReference.richTextBox1.AppendText(Environment.NewLine);
    }
    public Form1()
    {
        InitializeComponent();
        frmReference = this;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        WriteToMyRichTextBox(DateTime.Now.ToString());
    }
}

最新更新