在窗体1中有一个Serialport,同时打开了另一个窗体2,通过窗体1的Serialpor_DataRecived触发一个函数UpdateString,在updatestring中,当串口数据读取到含有H的字符后,开始在窗体2的textbox里实时的显示剩下的数据,这个怎么实现啊,大虾们,帮忙啦!

解决方案 »

  1.   

    Form2 m_frm2=null;
    private void UpdateString(...)
    {
       ...
       ...
       if(m_frm2==null)
        {
           m_frm2=new Form2();
           m_frm2.Show();   
        }
        m_frm2.textBox1.Text=...; //Form2上的textBox1的Modifiers属性要设成Public
        ...
    }
      

  2.   

    此法不好,窗体2之前已经打开了,只是在updatestring里判断到H的时候,把接下来的值都显示到窗体2的textbox1里,而不是在这个时候才打开窗体2。
    或者这个时候打开也行,但是要在这等待的期间加入一个滚动条显示,否则使用的人会认为没有反应的!
      

  3.   

    我无语了,你已经打开(在打开的时候用m_frm2作为你的Form2窗体对象变量)
    这样那个if条件就永远不会成立,就不会打开的。。
    就直接给textbox赋值的
    那个判断是防止你中途不小心把form2关闭了。。
      

  4.   

    这句Form2 m_frm2=null;
    设置的话,窗体2一开始怎么打开呢