总结:C#中跨窗体传值的几种方法

      C#中跨窗体传值的几种方法分析(很详细)


(1)父窗口给子窗口传值
(2)子窗口给父窗口传值
(3)父子窗口之间互相传值

文章链接:https://www.cnblogs.com/xh6300/p/6063649.html

展开阅读全文

"多线程跨窗体传值?"

12-24

由于初次加载的东西过多,所以点击窗体上的"连接"按钮的时候,窗体会硬直两分钟左右。之前想过弹出另一个窗体用个假进度条的办法来掩盖主窗体硬直,但没能做到这一点(弹出的新窗体进度条也跟着硬了)。rn找到了一个能勉强混过关的办法.rnrn在主窗体拖一个BackgroundWorker.rnBackgroundWorker的两个事件代码如下:rnrn[code=C#]rn public decimal Idx;rn public decimal Maximum = 500000;rn public Form2 bbb;rnrn private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)rn rn decimal ThisMaxValue = Maximum;rn if (e.Argument != null && e.Argument is decimal)rn ThisMaxValue = (decimal)e.Argument;rn //This run in a new threadrn for (int i = 0; i <= ThisMaxValue; i++)rn rn Idx = i;rn rn rnrn private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)rn rn if (LoadingForm != null && LoadingForm.Visible)//主窗体硬直结束后发生rn rn Form1 aaa = new Form1();rn aaa.Show();rn LoadingForm.Dispose();rn rn rn[/code]rn然后主窗体中的Click事件写的如下rn[code=C#]rn private void button4_Click(object sender, EventArgs e)rn rn button1.Enabled =False;//问题所在rn backgroundWorker1.RunWorkerAsync();rn bbb = new Form2();rn bbb.ShowDialog();rn rn[/code]rn然后把Form2中的窗口外观属性改成None(就是光秃秃的啥也没有的那个..最大化最小化啥的都没有),然后把透明度调成80%(汗!如果百分之百还是硬直)..rnrn这样就实现了 当点击"连接"按钮的时候,弹出Form2而且也不会硬直(至少看上去还有鼠标点上去不会有硬直表现).当主窗体硬直结束回复正常的时候,该窗体自动关闭!rnrn但随着出现了一个新问题,就是在主窗体中button4_Click事件中已经定义了button1.Enabled =False; 但是当硬直恢复以后(既Form2自动关闭以后),button1居然还是允许点击的。不知道这个问题怎样解决。rn希望高手能帮帮忙rn感激!!感激!!!! 论坛

没有更多推荐了,返回首页