两个窗体传值
比如:用委托,窗体From1传值给另外一个窗体From2(点击From1上的按钮将弹出窗体From2),是不是要From2必须打开?(yes,要2打开)
父窗体From1:public partial class frMainDlg : Form
{
       public static frMsg m_frMsg = null;       public frMainDlg()
        {
            InitializeComponent();
            m_frMsg = new frMsg();
        }         private void button2_Click(object sender, EventArgs e)
        {
            string txtMsg = "fdsfsrtrtrtretrrdfdsfsd";
            ThreadWriteMsgToTextBox(txtMsg);        }
        private void ThreadWriteMsgToTextBox(string strText)
        {
            if (m_frMsg != null)  
            {
                m_frMsg.ThreadWriteMessageToTextBox(strText);            }
        }}
子窗体From2:       public delegate void DelegateWriteMessageToTextBox(string strMessage);        public void ThreadWriteMessageToTextBox(string strMessage)
        {
           
            #region code
            DelegateWriteMessageToTextBox delegateWmt = new DelegateWriteMessageToTextBox(WriteMessageToTextBox);
            try
            {
                this.BeginInvoke(delegateWmt, strMessage);
            }
            catch
            {            }
            #endregion
        }
        private void WriteMessageToTextBox(string strMessage)
        {
            #region CODE
            lock (this.txt_Message)
            {
                try
                {
                    txt_Message.AppendText(strMessage + "\n\r");                }
                catch
                { }
            }
            #endregion
        } 不管From2是否打开,窗体From1必须传值给From2,而且只要整个程序不退出,只要打开From2都可以看到From1传过来的值,怎么实现呢?

解决方案 »

  1.   

    这是C# winform应用程序啊,大哥,怎么能用session
      

  2.   

    定义全局变量吧。或者在From2打开的时候获取from1中的内容
      

  3.   

    在Form2中定义一个public变量
    public var Form1ToForm2;在Form1中定义一个Form2窗体的变量
    Form2 frm2=new Form2();在需要传给Form2的地方:
    frm2.Form1ToForm2=传的值需要打开Form2的地方
    frm2.ShowDialog();
      

  4.   

    传的值用来做显示,或者显示操作
    不就是打开传值吗?不存在不打开传值吧
    用公共变量在两个窗体NEW对方,就可以传值了
      

  5.   

    form2 必须先打开一次,隐藏起来,每次关闭钮也只是影藏,这样你的程序就正常,可以传值了另外其实你提供的程序,可以都写在FORM1 中, 只改下这句即可如下
     FORM2.txt_Message.AppendText(strMessage & vbLf & vbCr)
      

  6.   

     
      FORM2.txt_Message.AppendText(strMessage + "\n\r");
      

  7.   

      虽然 form2 必须先打开一次,一般你用加TRY catch end try执行的办法 '即可令出错不管即可,因为没打开,会出错
      

  8.   


    关闭钮中加代码,改为隐藏吧,HIDE
    用的时候SHOW 出来即可,这样快,而且安全private void CRCoptions_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        e.Cancel = true;
        //取消FORM的关闭 
        this.TopMost = false;
        this.Hide();
    }
      

  9.   

    你容器是创建了,但在显示时要Show()才行的