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

Winform中實現(xiàn)窗體控件適配(自適應(yīng)窗體)布局_通過C#代碼方式

這篇具有很好參考價值的文章主要介紹了Winform中實現(xiàn)窗體控件適配(自適應(yīng)窗體)布局_通過C#代碼方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、實現(xiàn)效果

1.1、未啟用控件縮放的實現(xiàn)效果

即:未啟用控件縮放效果代碼時,控件內(nèi)容都是固定在窗體界面的指定位置,不會跟隨窗體的拉伸,放大而進行適配,如下圖所示:

Winform中實現(xiàn)窗體控件適配(自適應(yīng)窗體)布局_通過C#代碼方式

1.2、啟用控件縮放的實現(xiàn)效果

即:啟用控件縮放效果代碼時,控件內(nèi)容會跟隨窗體的拉伸,放大而進行適配,如下圖所示:

Winform中實現(xiàn)窗體控件適配(自適應(yīng)窗體)布局_通過C#代碼方式

二、實現(xiàn)控件隨窗體縮放適配

2.1、控件隨窗體縮放適配思路

實現(xiàn)思路是:

①在窗體初始化時先獲取窗體的寬度和高度,然后;

②遍歷窗體控件進行初始化設(shè)置縮放位置;

③在窗體變化時獲取當前窗體的寬度和高度,然后遍歷窗體控件進行設(shè)置。

2.2、控件隨窗體適配的核心代碼

#region 控件大小隨窗體大小等比例縮放

        private readonly float x; //定義當前窗體的寬度
        private readonly float y; //定義當前窗體的高度

        private void setTag(Control cons)
        {
            foreach (Control con in cons.Controls)
            {
                con.Tag = con.Width + ";" + con.Height + ";" + con.Left + ";" + con.Top + ";" + con.Font.Size;
                if (con.Controls.Count > 0) setTag(con);
            }
        }

        private void setControls(float newx, float newy, Control cons)
        {
            //遍歷窗體中的控件,重新設(shè)置控件的值
            foreach (Control con in cons.Controls)
                //獲取控件的Tag屬性值,并分割后存儲字符串數(shù)組
                if (con.Tag != null)
                {
                    var mytag = con.Tag.ToString().Split(';');
                    //根據(jù)窗體縮放的比例確定控件的值
                    con.Width = Convert.ToInt32(Convert.ToSingle(mytag[0]) * newx); //寬度
                    con.Height = Convert.ToInt32(Convert.ToSingle(mytag[1]) * newy); //高度
                    con.Left = Convert.ToInt32(Convert.ToSingle(mytag[2]) * newx); //左邊距
                    con.Top = Convert.ToInt32(Convert.ToSingle(mytag[3]) * newy); //頂邊距
                    var currentSize = Convert.ToSingle(mytag[4]) * newy; //字體大小                   
                    if (currentSize > 0) con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
                    con.Focus();
                    if (con.Controls.Count > 0) setControls(newx, newy, con);
                }
        }


        /// <summary>
        /// 重置窗體布局
        /// </summary>
        private void ReWinformLayout()
        {
            var newx = Width / x;
            var newy = Height / y;
            setControls(newx, newy, this);

        }

        #endregion

三、使用方法

3.1、在窗體構(gòu)造函數(shù)內(nèi)初始化適配

        //注意:UIComponetForm是自己需進行適配的窗體名稱
        public UIComponetForm()
        {
            InitializeComponent();

            #region   初始化控件縮放

            x = Width;
            y = Height;
            setTag(this);

            #endregion 
        }

3.2、重置縮放布局

Winform中實現(xiàn)窗體控件適配(自適應(yīng)窗體)布局_通過C#代碼方式

        private void UIComponetForm_Resize(object sender, EventArgs e)
        {
            //重置窗口布局
            ReWinformLayout();
        }

至此通過使用C#代碼實現(xiàn)窗體控件適配(自適應(yīng)窗體)布局下過完成,運行項目即可查看效果。文章來源地址http://www.zghlxwxcb.cn/news/detail-416157.html

到了這里,關(guān)于Winform中實現(xiàn)窗體控件適配(自適應(yīng)窗體)布局_通過C#代碼方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【Python_PySide2學(xué)習(xí)筆記(二)】QTabWidget 添加布局Layout \ QTabWidget 內(nèi)控件大小自適應(yīng)父窗體大小

    【Python_PySide2學(xué)習(xí)筆記(二)】QTabWidget 添加布局Layout \ QTabWidget 內(nèi)控件大小自適應(yīng)父窗體大小

    在做項目過程中遇到Tab頁內(nèi)的控件無法隨著窗體大小變化,針對此問題需要對添加的Tab1、Tab2、Tab3…分別添加布局。 我們可以看到在窗體最大化后,只有Tab頁內(nèi)的QTableWidget控件沒有自適應(yīng)窗體尺寸,還是保持著原有尺寸。 在Qt Designer內(nèi)查看 對象查看器: 發(fā)現(xiàn)只有tab_1和tab_

    2024年02月05日
    瀏覽(23)
  • C#桌面程序(winform)如何一步步集成內(nèi)置WebApi(owin技術(shù)),解耦I(lǐng)IS,并將Api接收信息推給桌面窗體控件展示

    C#桌面程序(winform)如何一步步集成內(nèi)置WebApi(owin技術(shù)),解耦I(lǐng)IS,并將Api接收信息推給桌面窗體控件展示

    最近工廠有個需求,服務(wù)器上部署了一個服務(wù),此服務(wù)要把信息推送給現(xiàn)場多臺工控機上的CS上位機程序。由于涉及到多個軟件之間的通信,做架構(gòu)時,首先排除掉中間表形式,從效率和穩(wěn)定性上也排除掉了Socket,最后采用了WebApi接口形式來做通信。但是有個問題,上位機程

    2023年04月08日
    瀏覽(22)
  • 使用雙緩沖技術(shù)解決winform窗體控件卡頓(dataGridView加載數(shù)據(jù)緩慢)

    使用雙緩沖技術(shù)解決winform窗體控件卡頓(dataGridView加載數(shù)據(jù)緩慢)

    在做C/S項目中,做好的窗體出現(xiàn)了頁面加載控件緩慢,放大、縮小窗體之后,窗體加載卡頓,以及數(shù)據(jù)渲染緩慢。 百度介紹:我們看電視時,看到的屏幕稱為OSD層,也就是說,只有在OSD層上顯示圖像我們才能看到?,F(xiàn)在,我需要創(chuàng)建一個虛擬的、看不見但是可以在上面畫圖(

    2024年02月02日
    瀏覽(20)
  • 【C#】【W(wǎng)inForm】MDI窗體

    【C#】【W(wǎng)inForm】MDI窗體

    MDI窗體的相關(guān)學(xué)習(xí)使用 1、設(shè)置MDI父窗體 ?在屬性中找到IsMdiContainer選項,設(shè)置為True 2、添加MDI子窗體,在項目中依次選擇添加-窗體,然后一直默認即可 ?添加后的項目目錄(Form1為父窗口,F(xiàn)orm2、Form3為子窗口) ?3、在Form1.cs中,創(chuàng)建對應(yīng)MDI子窗口的對象并調(diào)用顯示出來 保存

    2024年02月08日
    瀏覽(18)
  • 【W(wǎng)inForm詳細教程一】WinForm中的窗體、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

    【W(wǎng)inForm詳細教程一】WinForm中的窗體、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

    .sln文件 :解決方案文件 位置引用 bin文件夾 : 存放項目的編譯結(jié)果 exe dll debug 調(diào)試 release 發(fā)布 pdb 位置信息–調(diào)試 obj文件夾 object 編譯過程中生成的中間臨時文件 加快編譯速度 Properties 引用 添加引用 --選擇需要的程序集 App.config 配置文件 .csproj 項目文件 位置引用 雙擊打開

    2024年02月08日
    瀏覽(57)
  • C# Winform無邊框窗體實現(xiàn)界面拖動

    C# Winform無邊框窗體實現(xiàn)界面拖動

    2024年02月07日
    瀏覽(24)
  • C# winform窗體全屏顯示設(shè)置

    C# winform窗體全屏顯示設(shè)置

    窗體全屏顯示,并覆蓋桌面任務(wù)欄。 全屏顯示后,如果拖拽標題欄,會使窗體全屏失效(如果禁用了最大話按鈕),為了解決這樣的問題,需要設(shè)置“標題欄移動”屬性:

    2024年02月16日
    瀏覽(31)
  • C#之基于winform窗體繪制簡單圖形

    C#之基于winform窗體繪制簡單圖形

    什么是窗體? 可以理解為是一個自定義的控制臺應(yīng)用程序。 假如需要僅僅是用vs制作游戲的話,那么vs中,我們平時所用到的控制臺應(yīng)用程序所呈現(xiàn)的窗口時遠遠不夠用的。因此需要自定義窗體。 因此在新建項目時,我們不能再使用控制臺應(yīng)用程序,而是應(yīng)該選擇窗體: 之

    2023年04月16日
    瀏覽(17)
  • C# Winform 多進程窗體間傳值->SendMessage()

    在 C# 的 Windows Forms 中,使用 Windows API 的 SendMessage 方法可以實現(xiàn)窗口間的消息通傳遞,當然也可以在不同的進程之間發(fā)送消息。接下來,我將為您提供一個基本的示例,演示如何使用 SendMessage 以及如何重寫 WndProc 方法來接收并處理消息。 首先,你需要添加對Windows API的引用:

    2024年02月14日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包