从Form1更新Form2对象

时间:2018-10-25 10:10:04

标签: c# visual-studio winforms richtextbox

我下面有代码,当从第二个表单更新Form1中的对象时,该代码可以工作。但是,当尝试从Form1更新Form2中的对象时,它是否无法正常工作?

Form 2代码;

   namespace testProject
{
    public partial class comPortWindow : Form
    {
        public static comPortWindow form = null;

        public comPortWindow()
        {
            InitializeComponent();
        }

        public static void comportLogText(String text)
        {
            if (form != null)
                form.updateRichTextBox1(text);
        }

        private void updateRichTextBox1(String text)
        {
            richTextBox1.Text = text + " : " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + "\r\n" + richTextBox1.Text;
            richTextBox1.ScrollToCaret();
        }
    }
}

Form 1代码;

comPortWindow comPortWindow = new comPortWindow();
comPortWindow.Show();
comPortWindow.comportLogText("hello");

显示表格2,但是富文本框中没有测试。

以另一种方式工作,因此可能与Form1启动时不存在Form2有关。

1 个答案:

答案 0 :(得分:0)

Form 2代码:

#prepare some data to plot
set table "m.dat"
plot [0:10] x+3*sin(x)
unset table
#calculate x range
xmin=1e10
xmax=-1e10
add_this_x(x)=((x<xmin)?xmin=x:0,(x>xmax)?xmax=x:0,1/0)
plot "m.dat" u 1:(($2>=4&&$2<=6)?add_this_x($1):1/0)
# do the plot
plot [xmin:xmax] "m.dat" u 1:(($2>=4&&$2<=6)?$2:1/0) w lp

Form 1代码:

public partial class comPortWindow : Form
{

    public comPortWindow()
    {
        InitializeComponent();
    }

    public void comportLogText(string text)
    {
            updateRichTextBox1(text);
    }

    private void updateRichTextBox1(string text)
    {
        richTextBox2.Text = text + " : " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + "\r\n" + richTextBox2.Text;
        richTextBox2.ScrollToCaret();
    }
}

enter image description here