網站首頁 編程語言 正文
我們在構建C# Form窗口的時候經常需要到彈出新的窗口,那么接著就會如何彈出窗口的疑問。這里介紹最常見的兩種彈窗方法show()和showdialog()。我在VS2019中構建一個簡單的工程來講解讓他們之間的區別。大家也可以動手建一個體驗他們之間的區別。
-
form.Show()彈出窗口
這個方法彈出來的窗體和父窗體(上一個窗體)是屬于同一等級的窗體,這兩個窗體可以同時存在而且可以隨意切換。
-
?form.ShowDialog()彈出窗口
showdialog彈出來的窗體就不能這樣,它永遠是被置頂的,如果不關閉這個窗體,那就不能使用別的窗體,別的窗體都是灰顯的。
一、構建工程和界面介紹
首先我們建立兩個基本窗口類,如下圖,一個是首先會啟動的Form主窗口(右邊),其次是彈出界面Dialog(左邊)。
二 、添加代碼
將兩個窗口的代碼添加到對應的類中。添加的按鍵單擊事件中增加下面的主窗口代碼和彈出窗口代碼。
(1)主窗口代碼:
public Form1()
{
InitializeComponent();
}
//實例化窗口類
Dialog _dlg = new Dialog();
private void button_show_Click(object sender, EventArgs e)
{
_dlg.Show();//顯示
}
private void button_hide_Click(object sender, EventArgs e)
{
_dlg.Hide();//隱藏
}
private void button_showDialog_Click(object sender, EventArgs e)
{
//實例化窗口類
Dialog _dialog = new Dialog();
//彈出對話框
_dialog.ShowDialog();
}
(2)彈出窗口代碼:
public Dialog()
{
InitializeComponent();
}
private void button_ok_Click(object sender, EventArgs e)
{
//指定返回結果
this.DialogResult = DialogResult.OK;
//關閉
this.Close();
}
private void button_cancel_Click(object sender, EventArgs e)
{
//指定返回結果
this.DialogResult = DialogResult.Cancel;
//關閉
this.Close();
}
private void hide_Click(object sender, EventArgs e)
{
//隱藏
this.Hide();
}
三、驗證效果和小結
我們可以看到這些Show()方法和ShowDialog()方法都可以彈出我們想要的窗口,但是他們的效果明顯不同,可以小結概述為下面幾個方面差異。
項目 | Show()方法 | ShowDialog()方法 |
---|---|---|
名稱 | 顯示控件 | 顯示對話框 |
關閉的對應方法 | Hide() 隱藏控件 | Close()關閉窗體 |
編輯顯示效果 | 和主窗口平級,彈出子窗口后,兩者可以任意切換到頂層和編輯。 | 比主窗口優先級高,彈出編輯子窗口只能編輯子窗口,子窗口獨占頂層,只有關閉(close)返回后,用戶才可以編輯主窗口。 |
理模顯示理解 | 顯示或隱藏控件,隱藏時并沒有關閉,只是看不見,還存在。 | 打開等待關閉的對話框,打開就存在,關閉就清除,和messageBox類似,關閉等同于右上角的叉叉(×)。 |
重點:Show()和Hide() 是一對,ShowDialog()和Close()是一對。 請一一對應,不能混用的哦。
原文鏈接:https://blog.csdn.net/weixin_45023644/article/details/125639125
相關推薦
- 2022-10-14 Jboss使用jndi配置數據源連接數據庫
- 2023-01-05 Kotlin的空安全處理方式詳解_Android
- 2022-11-16 kali添加開機自啟的方法_相關技巧
- 2022-06-06 ASP.NET的Core?AD域登錄過程示例_ASP.NET
- 2022-03-28 C語言怎么連接兩個數組的內容你知道嗎_C 語言
- 2022-11-12 python中validators庫的使用方法詳解_python
- 2022-06-21 C語言程序的編譯與預處理基礎定義講解_C 語言
- 2022-11-16 python?sklearn與pandas實現缺失值數據預處理流程詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支