c# winform中窗體切換後釋放及防止重複生成

2021-03-02 dotNET跨平臺

問題1:窗體切換後如何關閉,並釋放資?

c# winform中,2個窗體,form1和form2,互相切換的時候執行

this.Hide();Form2 form2 = new Form2();
form2.Show();

此時你會發現當Form2顯現時,Form1隱藏了,但當你關閉Form2時,其進程並沒有關閉。也就是說資源並沒有釋放!

我在網上查了很多的資料,很多都沒有解決,通過我的實驗後我發現:

只要是 主窗口被關閉了,所有的資源都會釋放,

但在關閉從窗口時(Form2)時,資源並沒有釋放,此時可以在Form2_FormClosed(object sender, FormClosedEventArgs e) 事件中加入如下代碼:

  Application.Exit();//通知所有消息終止,並在終止後關閉所有窗體,並釋放資源.

問題2:窗體不重複new窗體解決方案

方法一: 解決辦法:將建立的窗體設置為靜態,使之在內存中惟一存在,每次單擊都調用內存中存在的對象。orm

public static Form2 F2 = null ; if (F2 == null || F2.IsDisposed) { F2 = new Form2(); F2.Show();} else { F2.Activate();}

方法二: 使用ShowDialog

C#中窗口打開是非常常用的方法,從一個界面聯查到另一個界面,但怎樣才能控制打開的窗口不能被重複打開,可以使用ShowDialog方法 而不是show方法

Newdialog d = new Newdialog();d.ShowDialog();

想了解更多C#知識,請掃描下方公眾號二維碼

需加微信交流群的,請加小編微信號z438679770,切記備註 加群,小編將會第一時間邀請你進群!

 每日分享不易,"在看"就是鼓勵!




相關焦點

  • 最全C#自學資源匯總
    非常適合0基礎的c#初學者,從開發環境的安裝到基礎的語法,都可以從中學習!bilibili《C#入門到精通》https://www.bilibili.com/video/BV1FJ411W7e5200多個短視頻教學,傳智播客的老教學視頻,講解比較詳細,視頻中還有許多小項目可以動手實踐一下
  • 連載丨手把手教你winform上位機系列一:認識winform上位機
    安裝好軟體以後,接下來我們寫一個簡單的demo案例來體驗一下winform1,新建winform項目打開VS2012軟體 點擊【文件】--》【新建】--》【項目】建立完項目後進入項目開發裡了通過拖拽窗體右下角使窗體達到你想要的大小,接下來拖拽工具欄裡的butoon按鈕,
  • C#生成二維碼
    執行ShowDialog後程序不會繼續往下執行,關閉窗口後才會執行後面的代碼。執行Show後程序會繼續往下執行。所以當我在一個窗口中使用ShowDialog去顯示另一個窗口到時候必須把另一個窗口關閉才可以繼續操作主窗口。ShowDialog無法實現窗口間的自由切換。
  • 手把手教您掌握C#(Winform)軟體設計
    C#設計良好,框架思路清晰,歷史包袱少,語法嚴謹,特性豐富但不多餘,編程熟手想上手c#是非常容易的事情. C#的主要競爭者是java。不過,其實和目前的go,python也有一定競爭力,因為同樣簡單,但在一些方面又比他們優越。Java這邊,優勢主要在於庫。雖然c#也不是沒有可用的庫,但也只限於可用。
  • winform已死?這8個Winform開源項目還有多少人在用?
    >基於framework4.0,原生控制項開發,參考元素,DotNetBar主題樣式,包含Button,Panel,TextBox,CheckBox,RadioButton,TabControl,NavBar,DataGridView內部的常用控制項超過40個,滿足常規開發需求,每個控制項都精雕細琢,注重細節;包含元素風格主題11個,DotNetBar主題3個,其他主題2個,包含主題管理組件UIStyleManager
  • C#-網絡攝像頭-WinForm
    這篇文章介紹一下創建Windows窗體應用,調用攝像頭。之前的文章可參考C#調用攝像頭並訪問西門子PLC以及在車間的可能性應用步驟-1創建窗體應用右擊引用,選擇管理NuGet程序包(N)。瀏覽處輸入aforge,然後點擊安裝一下幾個文件。
  • C# winform程序免安裝.net framework在XP/win7/win10環境運行
    經過本人搭建虛擬機在xp環境 使用anyexec運行winfrom程序後,測試通過,如下是用的xp運行winfrom程序的部分截圖下面是n年前入坑C#寫的winform。。。玩毒奶粉用的,勿噴。運行winform程序的,名字要與放入app目錄的控制臺程序對應│  使用說明.txt│  備用DLL.zip  mono環境下的dll,如果缺少了dll,可以將dll解壓後,放到runtime\lib目錄裡面│  目錄結構.bat│ ├─app 這目錄存放你寫的exe程序,裡面是兩個示例
  • C# WinForm 程序免安裝 .NET Framework(XP/win7/win10環境運行)
    經過本人搭建虛擬機在xp環境 使用anyexec運行winfrom程序後,測試通過,如下是用的xp運行winfrom程序的部分截圖下面是n年前入坑C#寫的winform。。。玩毒奶粉用的,勿噴。.NET Framework 4.5環境的winform程序
  • Unity中C#與Lua的交互
    以上就完成了Debug.Log這個函數在Lua中的註冊.我們運行以下的lua代碼能在編輯器中看到正確輸出:Debug.Log('call debug.log from lua')tips: 在實際的解決方案中,人們一般通過反射技術遍歷一個c#類的所有靜態函數,自動生成以上形式的模板代碼完成註冊,就不用手寫了。
  • 防止同一用戶重複登錄的解決辦法(SQL Server)
    在開發管理信息系統的時候,經常會遇到需要防止同一個用戶多次登錄的問題,這裡介紹了一種簡單易行的辦法。
  • 使用.net core3.0 正式版創建Winform程序
    創建項目後,我們可以打開對應的Winform窗體,並可以在工具箱裡面看到一些Winform界面控制項,好的是控制項的大概和以前差不多,不好的事情是少了很多常規Winform控制項,這個也是目前WInform 設計器處於開發預覽版的原因所在吧。
  • 【基礎篇】一步一步實現c#與halcon聯合編程
    Step3:導出c#程序    a. 點擊「文件」 -》「導出」;ho_RegionFillUp.Dispose(); ho_ConnectedRegions.Dispose(); ho_SelectedRegions.Dispose(); hv_Number.Dispose(); } }}第二部分 軟體開發Step 5 : 新建winform
  • Excel用VBA連接Access資料庫查詢-窗體實例
    Option Explicit '打開強制聲明Dim con As ADODB.Connection '聲明連接對象變量Dim rs As ADODB.Recordset '聲明記錄集對象變量'一、窗體加載事件,加載去重後的部門名稱Private Sub UserForm_Initialize()
  • php表單加入Token防止重複提交
    Token一般用在兩個地方——防止表單重複提交、anti csrf攻擊(跨站點請求偽造)。兩者在原理上都是通過session token來實現的。當客戶端請求頁面時,伺服器會生成一個隨機數Token,並且將Token放置到session當中,然後將Token發給客戶端(一般通過構造hidden表單)。
  • 快速搞定Java圖形繪製之JDialog窗體與JFrame窗體
    一、JDialog窗體Java中的JDialog窗體是Swing組建中的對話框,他繼承了AWT組件中的java.awt.Dialog類。JDialog窗體的功能是從另外一個窗體中彈出另外一個窗體,就像是在使用IE瀏覽器時彈出的確定對話框一樣。
  • C#下使用OpenCVSharp(.NET Framework wrapper for OpenCV)
    在視覺領域中,OpenCV針對C++有專用庫,無論在windows還是Ubuntu下,與QT都有很好的支持。但是C++語言開發界面周期時間長,與C#相比,並且生成應用程式安裝包比較大,不光是OpenCV相關庫文件需要打包進應用程式安裝包,還有QT界面相關的庫文件也需要添加。過大的應用程式與簡單的應用功能兩者並不協調,因此使用C#進行界面邏輯開發,如果能有OpenCV的加持,就更好了。
  • 如何定時啟停Winform應用程式
    這段時間,因為業務需要,要將一個由C#開發的winform應用程式做下定時關閉、開啟操作。折騰了一番,碰到了一些小坑,總算搞定了。
  • 連載丨手把手教你winform上位機系列二:PLC編寫及配置
    下圖是新建好PLC項目後的情形下面進行通信埠配置:先選擇左側設備組態,雙擊圖中PLC,找到保護選項後將允許遠程連接勾選上,配置好乙太網地址作為PLC的IP位址,這個地址後面在上位機訪問PLC時會用到。
  • 讓WPF的初始化啟動窗體動起來
    1 常用作法常規啟動畫面使用步驟很簡單,我們從網上找一張圖片:點擊下載圖片[1]下載啟動圖片用途演示將下載的圖片放在主工程目錄下,修改圖片生成操作屬性為SplashScreen,然後其他啥都不用改,直接啟動項目即可。
  • 【C#上位機必看】你們想要的練手項目來了
    最近有越來越多做電氣的小夥伴開始學習C#來做上位機開發,很多人在學習一段時間後,都有這種感覺