两个窗体传值
比如:用委托,窗体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传过来的值,怎么实现呢?
比如:用委托,窗体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传过来的值,怎么实现呢?
public var Form1ToForm2;在Form1中定义一个Form2窗体的变量
Form2 frm2=new Form2();在需要传给Form2的地方:
frm2.Form1ToForm2=传的值需要打开Form2的地方
frm2.ShowDialog();
不就是打开传值吗?不存在不打开传值吧
用公共变量在两个窗体NEW对方,就可以传值了
FORM2.txt_Message.AppendText(strMessage & vbLf & vbCr)
FORM2.txt_Message.AppendText(strMessage + "\n\r");
关闭钮中加代码,改为隐藏吧,HIDE
用的时候SHOW 出来即可,这样快,而且安全private void CRCoptions_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
//取消FORM的关闭
this.TopMost = false;
this.Hide();
}