winform刷新窗體數(shù)據(jù) winform控件隨窗口自適應(yīng)
夕逆IT
- 前端設(shè)計(jì)
- 2023-08-13
- 73

很多朋友對(duì)于winform刷新窗體數(shù)據(jù)和winform控件隨窗口自適應(yīng)不太懂,今天就由小編來為大家分享,希望可以幫助到大家,下面一起來看看吧!WinForm如何創(chuàng)建多窗...
很多朋友對(duì)于winform刷新窗體數(shù)據(jù)和winform控件隨窗口自適應(yīng)不太懂,今天就由小編來為大家分享,希望可以幫助到大家,下面一起來看看吧!
WinForm如何創(chuàng)建多窗體交互
窗體之間本身是可以相互調(diào)用的 像(newForm2()).Show();就顯示一個(gè)Form2窗體,你要寫在哪里都行 如果它本身是像一個(gè)對(duì)話框那樣的 可以用DialogResultdlg=(newForm2()).ShowDialog(); 來獲得更好的效果,并且DialogResult是可以在Form2中設(shè)置的 要傳遞數(shù)據(jù)時(shí)有很多種方法 比如說在被調(diào)用窗體的構(gòu)造函數(shù)里 寫上參數(shù)和out參數(shù)來與調(diào)用者進(jìn)行數(shù)據(jù)交流(關(guān)于方法的out參數(shù)詳見MSDN) 或者創(chuàng)建一個(gè)靜態(tài)類,寫一些公共字段,這樣所有的窗體都可以用 當(dāng)然還有別的(比如數(shù)據(jù)庫) 總之方法還是很多的
winform窗體原理
winform界面的繪制是依賴于gdi的,它的事件處理是依賴于windows的消息機(jī)制
c#winform窗體如何實(shí)現(xiàn)服務(wù)器實(shí)時(shí)接收數(shù)據(jù),不借助button
寬泛的講,有兩種方式,實(shí)現(xiàn)Client和Server的實(shí)時(shí)通訊(數(shù)據(jù)接收)。
1、Pull也就是拉。即Client把數(shù)據(jù)從Server中拉出來。
因?yàn)閣inform本質(zhì)是事件驅(qū)動(dòng),如果不想用button,那么最簡單的方式就是用定時(shí)器(timer),比如每10秒請(qǐng)求一次數(shù)據(jù),
這種方式本質(zhì)上和button沒有區(qū)別,還是通過事件來驅(qū)動(dòng)應(yīng)用,只不過是“自動(dòng)”的去讀取數(shù)據(jù)。
優(yōu)點(diǎn)是簡單,缺點(diǎn)是不及時(shí)(如果數(shù)據(jù)是1秒一變,這個(gè)10秒的間隔就太長了),而且資源利用率較低(如果1小時(shí)都沒有變化,這10秒一次的刷新就很占用資源)
2、Push推,即Server將信息推送到Client中去。
Winform中實(shí)現(xiàn)推送信息,一般需要和Server建立連接,連接后,當(dāng)Server需要推送(比如數(shù)據(jù)有更新)時(shí),才向Client中發(fā)送信息。
優(yōu)點(diǎn)是數(shù)據(jù)的時(shí)效性較好,而且資源利用合理。
缺點(diǎn)是需要大量的代碼(相比定時(shí)器那種方法)
Push模式可以參考“觀察者模式”的開發(fā)方式。
C# winform多線程異步更新UI
首先在窗體上放一個(gè)button和一個(gè)picturebox
(pictureboxvisible為false)這個(gè)多線程的目的是點(diǎn)擊按鈕后圖片正常的運(yùn)行,另一線程在睡眠10秒后在執(zhí)行。
privatevoidbutton1_Click(objectsender,EventArgse)
{
//開啟線程
System.Threading.Threadthread=newSystem.Threading.Thread(newSystem.Threading.ThreadStart(this.Result));
pictureBox1.Visible=true;
button1.Enabled=false;
thread.Start();
}
privatevoidResult()
{
boolok=this.Do();
this.BeginInvoke(newSystem.Threading.ThreadStart(delegate()
{
if(ok)MessageBox.Show("成功","提示");
elseMessageBox.Show("失敗","提示");
pictureBox1.Visible=false;
button1.Enabled=true;
}));
}
privateboolDo()
{
System.Threading.Thread.Sleep(10000);
returntrue;
}
winform窗體如何美化界面
使用第三方插件,省事。推薦dotnetbar,做出來的效果挺好看的。
OK,關(guān)于winform刷新窗體數(shù)據(jù)和winform控件隨窗口自適應(yīng)的內(nèi)容到此結(jié)束了,希望對(duì)大家有所幫助。
本文鏈接:http:///qianduan/3807.html