国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# winform窗體UI美化后實現(xiàn)最大化、最小化、還原、關(guān)閉、窗體移動等等-2023/1/11

這篇具有很好參考價值的文章主要介紹了C# winform窗體UI美化后實現(xiàn)最大化、最小化、還原、關(guān)閉、窗體移動等等-2023/1/11。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C# winform窗體UI美化后實現(xiàn)最大化、最小化、還原、關(guān)閉、窗體移動等等

在做winform窗體UI美化時,一般都需要將窗體的FormBorderStyle屬性設(shè)為None,之后窗體就會沒有最上面的標題欄,然后按照UI進行界面的設(shè)計。美化的代價就是窗體本來標題欄的相關(guān)操作,例如雙擊自動最大化,再次雙擊又恢復(fù)正常大小,以及上窗體關(guān)閉、最小化等功能就都需要自己實現(xiàn)對應(yīng)的功能。

以自己做得項目為例,窗體的最上面一塊就是類似或者需要實現(xiàn)標題欄功能的,用panel劃定一個范圍。之后所有的操作都是重寫panel里面的方法。

實現(xiàn)最大化和還原

如果UI設(shè)計的是有按鈕,那就最好。

        /// <summary>
        /// 窗體 最大化,正常
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Max_Click(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
                this.WindowState = FormWindowState.Normal;
                Image maxbackImage = Resources.最大化;//這里圖片調(diào)用UI設(shè)計的圖片
                btn_Max.BackgroundImage = maxbackImage;
            }
            else
            {
                this.WindowState = FormWindowState.Maximized;
                Image normalbackImage = Resources.正常;
                btn_Max.BackgroundImage = normalbackImage ;
            }
        }

如果為了美觀UI連按鈕也沒有設(shè)計,那就模仿標題欄自帶的功能,重寫panel的MouseDoubleClick方法

        /// <summary>
        /// 窗體 最大化,正常
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void panel_top_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
                this.WindowState = FormWindowState.Normal;
            }
            else
            {
                this.WindowState = FormWindowState.Maximized;
            }
        }

最大化過程中可能遇到的問題

最大化了之后把屏幕下方的任務(wù)欄遮擋了

這個需要在窗體load的進行一些設(shè)置,vs自帶的會對一些屬性進行文字說明,看過之后就知道這么設(shè)置的目的了。

            private void FormMain_Load(object sender, EventArgs e)
            {
                this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;
                this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            }

需要注意的是,vs還自帶了屬性窗口,如果你在窗體的屬性窗口中已經(jīng)設(shè)置它的WindowState為Maximized的話,那么再用上面的代碼來設(shè)置就會失效。所以,使用上面的代碼時,要把窗體屬性中的WindowState設(shè)置為Normal才行。
到這里就應(yīng)該可以解決絕大多數(shù)的需求了,但是在項目中,又遇到了拓展顯示屏的情況(就是需要屏幕1一個窗體,同時屏幕2也需要生成一個窗體)。這個實現(xiàn)也可以記錄一下。

            //第二個窗體
            _Form2 = new Form2();
            Screen[] screens = Screen.AllScreens;
            if (screens.Length > 1)
            {
                _Form2 .Location = new Point(screens[1].Bounds.Left, screens[1].Bounds.Top);
            }
            _Form2 .Show();

需要注意的是,如果屏幕2運行軟件的話,按照上面的load設(shè)置,軟件生成的2個窗體會同時生成在屏幕2,在屏幕1運行軟件的話,則會正常生成1個屏幕1個窗體

最小化

同理上面最大化,有按鈕設(shè)計最好,沒有按鈕設(shè)計的話,那就依據(jù)需求,自己判斷以什么方式觸發(fā)。

        /// <summary>
        /// 窗體 最小化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Min_Click(object sender, EventArgs e)
        {
			this.WindowState = FormWindowState.Minimized;
        }

關(guān)閉

這沒啥好說的,肯定會有設(shè)計的。這里設(shè)計是一個圖片。

        /// <summary>
        /// 退出程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void pictureBox_quit_Click(object sender, EventArgs e)
        {
            DialogResult rst = MessageBox.Show(this, "確認系統(tǒng)?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rst == DialogResult.Yes)
            {
                Application.ExitThread();
                Application.Exit();
            }
        }

窗體移動

這里可以利用window的api函數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-478821.html

        //調(diào)用API函數(shù)  需要添加引用using System.Runtime.InteropServices;
        [DllImport("user32.dll")]
        public static extern bool ReleaseCapture();

        [DllImport("user32.dll")]
        public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
        /// <summary>
        /// 窗體移動
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void panel_top_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Clicks == 1)
            {
                //窗體移動默認鼠標左鍵
                if (e.Button == MouseButtons.Left)
                {
                    ReleaseCapture(); //釋放鼠標捕捉
                    SendMessage(this.Handle, 0xA1, 0x02, 0);//發(fā)送左鍵點擊的消息至該窗體(標題欄)
                }
            }
        }

到了這里,關(guān)于C# winform窗體UI美化后實現(xiàn)最大化、最小化、還原、關(guān)閉、窗體移動等等-2023/1/11的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Qt 自定義窗口的標題欄,重寫鼠標事件實現(xiàn),關(guān)閉隱藏,最大化/最小化,重寫窗口事件函數(shù),實現(xiàn)鼠標選中邊框拉大拉小,雙擊標題欄切換窗口最大化和最小化

    Qt 自定義窗口的標題欄,重寫鼠標事件實現(xiàn),關(guān)閉隱藏,最大化/最小化,重寫窗口事件函數(shù),實現(xiàn)鼠標選中邊框拉大拉小,雙擊標題欄切換窗口最大化和最小化

    Qt 自定義窗口的標題欄,重寫鼠標事件實現(xiàn),關(guān)閉隱藏,最大化/最小化,重寫窗口事件函數(shù),實現(xiàn)鼠標選中邊框拉大拉小,雙擊標題欄切換窗口最大化和最小化 1、main.cpp 2、widget.h 3、widget.cpp 4、效果展示 5、完成

    2024年02月16日
    瀏覽(92)
  • ApeForms | WinForm窗體UI美化庫(Metro扁平風(fēng)格)演示與安裝

    ApeForms | WinForm窗體UI美化庫(Metro扁平風(fēng)格)演示與安裝

    ApeForms 是一套基于WinForm框架免費的UI庫,提供了豐富的Metro風(fēng)格控件、針對WinForm開發(fā)中常見類型的擴展、通用Dialog/Notification的模板等。 目前 ApeForms 仍在持續(xù)開發(fā)擴充更多的控件,如果有好的建議可以在評論區(qū)留言。 通過NuGet可以直接將 ApeForms 引用到項目中。 演示視頻 錄制

    2024年01月18日
    瀏覽(22)
  • 【EI復(fù)現(xiàn)】梯級水光互補系統(tǒng)最大化可消納電量期望短期優(yōu)化調(diào)度模型(Matlab代碼實現(xiàn))

    【EI復(fù)現(xiàn)】梯級水光互補系統(tǒng)最大化可消納電量期望短期優(yōu)化調(diào)度模型(Matlab代碼實現(xiàn))

    ???????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 ??2 運行結(jié)果 ??3?參考文獻 ??4 Matlab代碼實現(xiàn) 文獻來源

    2024年02月13日
    瀏覽(35)
  • 【深度學(xué)習(xí)】什么是互信息最大化?

    ??在學(xué)習(xí)無監(jiān)督學(xué)習(xí)時,最常用的loss就是最大化互信息。所以本文對互信息最大化做了一個總結(jié)。內(nèi)容和圖片多有參考其他資料,相關(guān)的文獻一并在參考文獻列出。(如果使用對比學(xué)習(xí)含有溫度系數(shù)的那個損失函數(shù)可能會更簡單一點) [1]什么是「互信息」? [2]DIM:通過最

    2024年02月13日
    瀏覽(27)
  • 【混合時變參數(shù)系統(tǒng)參數(shù)估計算法】使用范數(shù)總和正則化和期望最大化的混合時變參數(shù)系統(tǒng)參數(shù)估計算法(Matlab代碼實現(xiàn))

    【混合時變參數(shù)系統(tǒng)參數(shù)估計算法】使用范數(shù)總和正則化和期望最大化的混合時變參數(shù)系統(tǒng)參數(shù)估計算法(Matlab代碼實現(xiàn))

    ????????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 ??2 運行結(jié)果 ??3?參考文獻 ??4 Matlab代碼實現(xiàn) 文獻來

    2024年02月10日
    瀏覽(24)
  • 如何使音頻類app廣告變現(xiàn)收益最大化

    要使音頻類應(yīng)用程序的廣告變現(xiàn)收益最大化,可以采取以下策略: admaoyan貓眼聚合 精準定位受眾:?了解你的用戶群體,包括他們的興趣、偏好和行為,以便向他們展示相關(guān)性更高的廣告。使用用戶數(shù)據(jù)分析工具,如Google Analytics或Firebase Analytics,以獲取深入的洞察。 多樣化

    2024年02月20日
    瀏覽(47)
  • Duilib中禁止一個窗口雙擊最大化

    Duilib中禁止一個窗口雙擊最大化

    用 duilib 開發(fā)了一個窗口,比如是登錄窗口,那么這個窗口的窗口的雙擊最大化就毫無意義,甚至帶來災(zāi)難,我們就要明確禁止這樣的行為。 我們應(yīng)該明確,一個窗口創(chuàng)建的時候就賦予了它一些屬性,那我們就首先看看如何創(chuàng)建窗口的,即Create函數(shù)。 例如,你定義了一個窗口

    2024年02月12日
    瀏覽(25)
  • MySQL | 深入了解如何最大化利用 MySQL 函數(shù)(一)

    MySQL | 深入了解如何最大化利用 MySQL 函數(shù)(一)

    前言 ?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL字符串函數(shù)和數(shù)學(xué)函數(shù)的講解 ? 一、字符串函數(shù) 函數(shù) 作用 UPPER(列|字符串) 將字符串每個字符轉(zhuǎn)為大寫 LOWER(列|字符串) 將字符串每個字符轉(zhuǎn)為小寫 CONCAT(str1,str2,…) 將所有字符串連接成一個字符串 REPLACE(列|字符串,新字符

    2024年02月08日
    瀏覽(41)
  • 期望最大化(EM)算法:從理論到實戰(zhàn)全解析

    期望最大化(EM)算法:從理論到實戰(zhàn)全解析

    本文深入探討了期望最大化(EM)算法的原理、數(shù)學(xué)基礎(chǔ)和應(yīng)用。通過詳盡的定義和具體例子,文章闡釋了EM算法在高斯混合模型(GMM)中的應(yīng)用,并通過Python和PyTorch代碼實現(xiàn)進行了實戰(zhàn)演示。 關(guān)注TechLead,分享AI全維度知識。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗、

    2024年02月08日
    瀏覽(30)
  • 【元宇宙】區(qū)塊鏈,元宇宙最大化的驅(qū)動力

    如今,一些觀察者認為區(qū)塊鏈是在結(jié)構(gòu)上實現(xiàn)元宇宙的必要條件,而其他人則認為這種說法是荒謬的。人們對于區(qū)塊鏈技術(shù)本身仍然有很多困惑,所以根本談不上清楚地了解込塊鏈技術(shù)與元宇宙的關(guān)系。所以,我們可以從區(qū)塊鏈的定義開始介紹。 簡側(cè)言之,區(qū)塊鏈是由一個去

    2024年02月10日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包