日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#中的模态对话框和非模态对话框

發布時間:2025/3/21 C# 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#中的模态对话框和非模态对话框 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模態對話框
彈出窗口阻止調用窗口的所有消息響應。
只有在彈出窗口結束后調用窗口才能繼續。
在模態窗口“關閉”后,可以讀取模態窗口中信息,包括窗口的返回狀態,窗口子控件的值。


非模態對話框
可以在彈出窗口和調用窗口之間隨意切換。
調用窗口調用show方法后,下面的代碼可以立即執行。在非模態窗口關閉后,窗口的所有資源被釋放,窗口不存在,無法獲取窗口的任何信息。

所謂模態對話框,就是指除非采取有效的關閉手段,用戶的鼠標焦點或者輸入光標將一直停留在其上的對話框。非模態對話框則不會強制此種特性,用戶可以在當前對話框以及其他窗口間進行切換?

概念說明

1 模態窗口

打開模態窗口后,只要不關閉該窗口,鼠標焦點或者光標就會一直停留在該窗口上。只有關閉該窗口后,調用窗口才能繼續。模態窗口關閉后,仍可以讀取模態窗口中的信息,如窗口的返回狀態等。

2 非模態窗口

打開非模態窗口后,仍可以操作調用窗口。關閉非模態窗口,該窗口將不復存在,會釋放窗口的所有資源,所以無法得到該窗口的任何信息。

?

實例說明

1?建立Windows窗體程序ShowAndShowDialogExp,程序主畫面包含兩個按鈕,用于打開模態窗口和非模態窗口(如下圖所示)。

?

2?編寫按鈕的Click事件代碼

private void button1_Click(object sender, EventArgs e)
{
Form frm1 = new Form();
frm1.Text = "我是模態窗口!";
frm1.ShowDialog();//打開模態窗口(對話框)
}?

private void button2_Click(object sender, EventArgs e)
{
Form frm2 = new Form();
frm2.Text = "我是非模態窗口!";
frm2.Show();//打開非模態窗口(對話框)
}


3?運行代碼,進行操作體驗

點擊按鈕“打開模態窗口”,打開模態窗口frm1,窗口標題欄顯示“我是模態窗口!”,此時無法切換到調用窗口,當關閉該窗口后,又可以繼續操作調用窗口了。
點擊按鈕“打開非模態窗口”,打開非模態窗口frm2,此時,可以仍切換到調用窗口操作調用窗口。

?

4?實例結論

C#中使用Show()方法打開非模態窗口,使用ShowDialog()方法打開模態窗口。

?

5 進階

修改前面按鈕的Click事件代碼,修改后的代碼如下所示。

private void button1_Click(object sender, EventArgs e)
{
Form frm1 = new Form();
frm1.Text = "我是模態窗口!";
frm1.ShowDialog();//打開模態窗口(輟對話框)
MessageBox.Show(frm1.DialogResult.ToString());
}

private void button2_Click(object sender, EventArgs e)
{
Form frm2 = new Form();
frm2.Text = "我是非模態窗口!";
frm2.Show();//打開非模態窗口(對話框)
MessageBox.Show(frm2.DialogResult.ToString());
}
朋友,發現跟前面代碼的區別了嗎?
呵呵,僅僅加了一句輸出彈出窗口的DialogResult屬性值的代碼而已。

再次執行代碼,程序的運行情況是:

點擊“打開模態窗口”打開模態窗口,接著關閉模態窗口,會彈出消息框,輸出“Cancel”(frm1.DialogResult.ToString()的結果)。
點擊“打開非模態窗口”打開非模態窗口后,便會彈出消息框,輸出“None”(frm2.DialogResult.ToString()的結果)。

從程序執行情況我們了解到:

執行Show()方法后,后面的代碼會立即執行;而執行ShowDialog()方法后,后面的代碼需要等彈出窗口關閉后才能及時執行。

?

前面說到:模態窗口關閉后,仍可以讀取模態窗口中的信息。

這主要是因為:當“關閉”模態窗口后,窗體并沒有被真的被“關閉”,因為用戶點擊“關閉”按鈕或者設置DialogResult屬性值時,并沒有調用窗體的Close方法,只是將窗體的Visible屬性賦值為false,隱藏了窗體而已。這樣隱藏的窗體是可以被重新顯示的,且窗體資源并沒有被釋放。所以,在你真的不需要這個窗體時,一定要記得Dispose一下哦。

為了說明這一切,修改前面打開模態窗口的按鈕Click事件代碼。

private void button1_Click(object sender, EventArgs e)
{
Form frm1 = new Form();
frm1.Text = "我是模態窗口!";
frm1.ShowDialog();//打開模態窗口(對話框)
MessageBox.Show(frm1.DialogResult.ToString());
frm1.Visible = true;
}
代碼執行情況是:
打開模態窗口后,關閉窗口,窗口隱藏,同時,彈出消息框,顯示“Cancel”,接著,關閉消息框,模態窗口又被顯示(frm1.Visible?=?true)。

轉載于:https://www.cnblogs.com/net-sky/p/10218976.html

總結

以上是生活随笔為你收集整理的c#中的模态对话框和非模态对话框的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情第1页 | 91桃色污| 日本一区二区三区在线视频 | 一区二区一级片 | 日韩高清在线观看一区 | 欧美激情精品久久久久久变态 | 成人精品三级av在线看 | 中文字幕欧美激情 | 日本少妇喷水视频 | 精品91av| 成人里番精品一区二区 | 依人成人综合网 | 69亚洲精品久久久蜜桃小说 | 欧美成人福利视频 | 午夜激情视频在线观看 | 日韩国产欧美一区二区三区 | 国产精品一区二区在线观看 | 亚洲免费中文字幕 | 丁香八月婷婷 | 成人污网站| 中文字幕第11页 | 91狠狠| 伊人久久香 | 国产精品欧美一区二区 | 91成人在线播放 | 黄色天堂网 | 天天干,天天操 | 亚洲好骚综合 | 9l视频自拍九色9l视频成人 | 中文字幕不卡一区 | 狠狠老司机 | 黄色片不卡 | 国产欧美精品一区二区三区app | 国产精品久久久久久久久久免费 | 日韩大片免费在线观看 | aaaa级片 | 神马三级我不卡 | 国产精品1区2区3区 在线看黄的网站 | 欧美激情另类 | 中文字幕av网| 国自产拍偷拍精品啪啪一区二区 | 日韩精品电影一区二区三区 | 欧美一级片网址 | 日韩在线中文 | 国产精品尤物视频 | 秋霞一区| 国产视频网站在线观看 | 天堂网va| 亚洲精品国产精品国自产观看浪潮 | 一级国产特黄bbbbb | 天天想你在线观看完整版电影高清 | 欧美日韩国产成人 | 日韩欧美视频免费观看 | 污视频在线免费观看 | 我我色综合 | 夜夜操操操 | 97一级片 | 国产亚洲综合在线 | 国产亚洲精品aaaaaaa片 | 亚洲福利视频导航 | 极品销魂美女少妇尤物 | 超碰日日夜夜 | 一本一道久久a久久综合蜜桃 | 玖玖视频在线 | 国产黑丝精品 | 国产裸体永久免费无遮挡 | 777av | 欧美成人另类 | 懂色av蜜臀av粉嫩av分 | 国产又粗又猛又爽视频 | 国产色婷婷一区二区三区竹菊影视 | 貂蝉被到爽流白浆在线观看 | 黄色网址在线视频 | 小辣椒导航 | 91xxx在线观看 | 色偷偷噜噜噜亚洲男人的天堂 | 色偷偷888欧美精品久久久 | 亚洲午夜精品久久久久久人妖 | 欧美性大战xxxxx久久久 | 欧美精品在线看 | 久国产视频| 中国大陆一级片 | 香蕉影院在线 | 5个黑人躁我一个视频 | 涩涩涩av | 国产淫语 | 麻豆免费视频 | 久久影音先锋 | 一区二区三区四区五区av | 男人的天堂99 | 91丨porny在线 | 黄色片子免费看 | 亚洲av第一成肉网 | 嫩草午夜少妇在线影视 | 精品国产99久久久久久宅男i | 黑人巨大精品欧美 | 天天夜夜人人 | 欧美性生活网 | 日韩av午夜 |