欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

WinForm入門與基本控件使用詳解

 更新時(shí)間:2022年06月23日 11:23:57   作者:阿阿阿安  
本文主要介紹了WinForm入門與基本控件使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一.Winform入門

        WinForm 是 Windows Form 的簡稱,是基于 .NET Framework 平臺(tái)的客戶端(PC軟件)開發(fā)技術(shù),一般使用 C# 編程。在VS2019中,C# WinForm 編程需要?jiǎng)?chuàng)建「Windows窗體應(yīng)用程序」項(xiàng)目。Windows 窗體應(yīng)用程序是 C# 語言中的一個(gè)重要應(yīng)用,也是 C# 語言最常見的應(yīng)用。使用 C# 語言編寫的 Windows 應(yīng)用程序與 Windows 操作系統(tǒng)的界面類似,每個(gè)界面都是由窗體構(gòu)成的,并且能通過鼠標(biāo)單擊、鍵盤輸入等操作完成相應(yīng)的功能。WinForm支持可視化設(shè)計(jì),簡單易上手,并可以接入大量的第三方UI庫或自定義控件,給桌面應(yīng)用開發(fā)帶來了無限可能。

1.WinForm項(xiàng)目結(jié)構(gòu) 

1.WinForm項(xiàng)目結(jié)構(gòu)
       (1)引用:包括所有的系統(tǒng)庫文件的引用依賴
       (2)App.config:當(dāng)前項(xiàng)目的配置文件
       (3)Form1.cs:當(dāng)前窗體的事件邏輯源碼
             - Form1.Designer.cs:當(dāng)前窗體的控件布局源碼
             - Form1.resx:當(dāng)前窗體的資源文件(圖片、圖標(biāo)、資源等)
             - 注意:
                 a.Form1.cs和Form1.Designer.cs都定義了Form1類,該類使用了Partial關(guān)鍵詞聲明,其定義的類可以在多個(gè)地方被定義,最后編譯的時(shí)候會(huì)被當(dāng)作一個(gè)類來處理。因此兩個(gè)文件各司其職,最后合并為一個(gè)類編譯。
                 b.要手動(dòng)實(shí)現(xiàn)自定義窗體,可以添加自己的類,然后繼承Form類即可
       (4)Program.cs:當(dāng)前項(xiàng)目程序的主入口Main,啟動(dòng)項(xiàng)目,運(yùn)行初始窗口

namespace WindowsFormsApp_learning
{
	//Program.cs 入口程序解讀
    static class Program
    {
        /// <summary>
        /// 應(yīng)用程序的主入口點(diǎn)。
        /// </summary>
        //1.[STAThread]  Attributes語法,修飾Main方法。示應(yīng)用程序的默認(rèn)線程模型是單線程單元 (STA)
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //2.開啟窗口的消息循環(huán),初始化并啟動(dòng)Form1窗口
            Application.Run(new Form1());
        }
    }
}

 2.窗口設(shè)計(jì)與控件布局

2.窗體控件布局文件

 (1)操作:在設(shè)計(jì)界面拖拽控件,可以完成界面布局(控件大小、名稱、類型、樣式等)  (2)原理:設(shè)計(jì)界面自動(dòng)關(guān)聯(lián)Form1.Designer.cs文件,在InitializeComponent()方法中會(huì)自動(dòng)生成相關(guān)代碼

 (3)設(shè)計(jì)原則:

         - Form1.Designer.cs文件:窗體控件布局文件,一般【不需要我們修改】,只要通過設(shè)計(jì)界面代碼就會(huì)自動(dòng)生成。

        - Form1.cs文件:窗體事件邏輯代碼的實(shí)現(xiàn),一般【需要我們手動(dòng)書寫】,包括觸發(fā)事件、回調(diào)、數(shù)據(jù)交互、跳轉(zhuǎn)等等

3.手動(dòng)添加控件:不通過設(shè)計(jì)界面,有兩種方式

 (1)在Form1.Designer.cs中添加:

          private System.Windows.Forms.Button btn_design;//聲明控件
           //默認(rèn)的控件初始化方法
           InitializeComponent():{
               this.btn_design = new System.Windows.Forms.Button();//定義控件
               this.btn_design.Text = "自定義控件";//設(shè)置Text屬性
               this.btn_design.Location = new Point(40,40);//設(shè)置布局位置 Point(x,y)
               this.btn_design.Size = new Size(100,40);//設(shè)置尺寸大小 Size(width,height)
               this.Controls.Add(this.btn_design);//注冊(cè)控件到窗體
           }

  (2)在Form1.cs中添加:

           private Button btn_design;//聲明控件
           public Form1(){
               //先調(diào)用Designer.cs中的控件初始化方法
               InitializeComponent();
               this.btn_design = new System.Windows.Forms.Button();//定義控件
               this.btn_design.Text = "自定義控件";//設(shè)置Text屬性
               this.btn_design.Location = new Point(40,40);//設(shè)置布局位置 Point(x,y)
               this.btn_design.Size = new Size(100,40);//設(shè)置尺寸大小 Size(width,height)
               this.Controls.Add(this.btn_design);//注冊(cè)控件到窗體
           }

(3)注意:

         1. 一般我們都使用拖拽添加控件,當(dāng)然也有特殊情況需要我們手動(dòng)添加(比如自定義控件)
         2. 窗體GUI中,左上角為原點(diǎn)(0,0),豎直向下為y軸,水平向右為x軸(寬度表示x軸上長度,高度表示y軸上長度),單位為像素。

 3.窗口事件

4.WinForm 自動(dòng)添加事件處理
   (1)操作:在設(shè)計(jì)界面-控件屬性-閃電符號(hào)(事件)-添加事件,就會(huì)在Form1.cs中自動(dòng)生成該控件相應(yīng)方法名稱的事件觸發(fā)函數(shù)
   (2) MessageBox.Show():顯示彈出消息提示框
   (3)GUI界面下Console.WriteLine不顯示,需要使用調(diào)試模式

namespace WindowsFormsApp_learning
{
 
    /**
     * 4.WinForm事件處理
     *  (1)操作:在設(shè)計(jì)界面-控件屬性-閃電符號(hào)(事件)-添加事件,就會(huì)自動(dòng)生成相應(yīng)方法名稱的事件觸發(fā)函數(shù)
     *  (2) MessageBox:顯示消息提示框
     *  (3)GUI界面下Console.WriteLine不顯示,需要使用調(diào)試模式
     */
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        //Button的Click點(diǎn)擊事件(自動(dòng)添加)
        private void showMessage(object sender, EventArgs e)
        {
            MessageBox.Show("Hello World!");
        }
    }
}

 5.手動(dòng)添加事件處理(以Btn_design為例)

(1)步驟:

添加按鈕控件到布局

書寫事件處理函數(shù),必須符合 void function_name(object param1,EventArgs e){}的形式

添加注冊(cè)事件,this.Btn_design.Click += new EventHandler(this.showTip);

(2)注意:事件處理機(jī)制用到了委托和事件的C#基礎(chǔ),有時(shí)間可以看一下

下一步的學(xué)習(xí)請(qǐng)前往 WindowsFormApp_demo1(實(shí)現(xiàn)一個(gè)顯示本地時(shí)間的APP)

namespace WindowsFormsApp_learning
{
    /**
     * 5.手動(dòng)添加事件處理(以Btn_design為例)
     *  (1)步驟:
     *      - 添加按鈕控件到布局
     *      - 書寫事件處理函數(shù),必須符合 void function_name(object param1,EventArgs e){}的形式
     *      - 添加注冊(cè)事件,this.Btn_design.Click += new EventHandler(this.showTip);
     *  (2)注意:事件處理機(jī)制用到了委托和事件的C#基礎(chǔ),有時(shí)間可以看一下
     *  下一步的學(xué)習(xí)請(qǐng)前往 WindowsFormApp_demo1(實(shí)現(xiàn)一個(gè)顯示時(shí)間的APP)
     */
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //2.1 注冊(cè)Click事件為手動(dòng)添加的函數(shù)
            this.Btn_design.Click += new EventHandler(this.showTip);
        }
 
        //2.Button的Click點(diǎn)擊事件(手動(dòng)添加)
        public void showTip(Object sender,EventArgs e)
        {
            MessageBox.Show("手動(dòng)添加!");
        }
    }
}

 4.時(shí)間顯示器小練習(xí)

設(shè)計(jì)一個(gè)能獲取本地時(shí)間并顯示在文本框的時(shí)間查看器,設(shè)計(jì)思路就是:

        1.在UI設(shè)計(jì)界面添加一個(gè)按鈕Button和一個(gè)用來顯示時(shí)間的文本框TextBox

        2.給按鈕Button添加點(diǎn)擊事件,在事件中獲取系統(tǒng)時(shí)間,并賦值給TextBox顯示

(1)界面設(shè)計(jì) 

 (2)邏輯代碼

namespace WindowsFormsApp_Demo1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        //點(diǎn)擊事件:獲取當(dāng)前時(shí)間賦值給TextBox
        private void ShowTime(object sender, EventArgs e)
        {
            string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            this.Time_filed.Text = time;
        }
    }
}

二.WinForm布局開發(fā)

1.常見的WinForm 自動(dòng)界面布局(設(shè)計(jì)界面拖拽布局)
        (1)操作:拖拽控件,放置在UI設(shè)計(jì)界面上布局
        (2)技巧:通過ctrl+多個(gè)控件選定,可以在上方工具欄進(jìn)行細(xì)節(jié)的對(duì)齊微調(diào),比如居中對(duì)齊、左對(duì)齊等。
        (3)本質(zhì):每次拖拽添加一個(gè)布局控件,就會(huì)在窗口相應(yīng)的Designer.cs設(shè)計(jì)布局代碼文件中的InitializeComponent()方法中自動(dòng)生成布局代碼(比如Location、Size等),來實(shí)現(xiàn)布局。
        (4)存在的問題:自動(dòng)布局雖然方便靈活,但是當(dāng)窗口大小拉伸改變時(shí),布局控件不能實(shí)現(xiàn)自動(dòng)適應(yīng),仍會(huì)保持原大小,因此自動(dòng)布局只適用于窗口大小不變的情況

1. 手動(dòng)布局解決自適應(yīng)問題

2.WinForm界面手動(dòng)布局(并解決自適應(yīng)問題)
(1)步驟:
        - 通過設(shè)計(jì)界面拖拽/手動(dòng)注冊(cè)組件的方式,初始化初始界面布局(此時(shí)屬于自動(dòng)布局)
        - 在Form.cs邏輯代碼中重寫Form父類的OnLayout方法,在方法內(nèi)實(shí)現(xiàn)手動(dòng)布局。OnLayout方法會(huì)在窗口大小變化時(shí)自動(dòng)被回調(diào)調(diào)用,來重新設(shè)置組件的位置大小等屬性實(shí)現(xiàn)自適應(yīng)。
                a.調(diào)用父類的OnLayout(),不是必須的。
                b.獲取當(dāng)前窗口大小 CilentSize(僅客戶區(qū),不含標(biāo)題欄)
                c.計(jì)算和設(shè)置每一個(gè)控件新的的大小和位置,實(shí)現(xiàn)動(dòng)態(tài)布局
(2)注意:
      - Size屬性指窗口大?。òüぞ邫冢珻lientSize指客戶區(qū)大?。ú话ぞ邫冢?br />      - 本質(zhì):OnLayout方法會(huì)在窗口大小變化時(shí)自動(dòng)被調(diào)用,來設(shè)置組件的位置實(shí)現(xiàn)自適應(yīng)

namespace WindowsFormsApp_learning
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        //重寫父類的OnLayout方法,實(shí)現(xiàn)手動(dòng)布局自適應(yīng)
        protected override void OnLayout(LayoutEventArgs levent)
        {
            //1.調(diào)用父類的OnLayout(),不是必須的
            base.OnLayout(levent);
            //2.獲取當(dāng)前客戶窗口大小 ClientSize
            int w = this.ClientSize.Width;
            int h = this.ClientSize.Height;
            //3.計(jì)算并設(shè)置每一個(gè)控件的大小和位置
            int yoff = 0;
 
            yoff = 4;
            this.text_box.Location = new Point(0, yoff);//坐標(biāo)(0,4)
            this.text_box.Size = new Size(w - 80, 30);//尺寸(w-80,30)
            this.btn_click.Location = new Point(w - 80, yoff);//坐標(biāo)(w-80,4)
            this.btn_click.Size = new Size(80, 30);//尺寸(80,30)
 
            yoff += 30;//第一行的高度
            yoff += 4;//間隔
            this.panel1.Location = new Point(0, yoff);
            this.panel1.Size = new Size(w, h - yoff - 4);
        }
    }
}

2.WinForm布局屬性

3.WinForm布局屬性(控件與布局相關(guān)的屬性,設(shè)計(jì)界面可見)
(1)Anchor:固定、錨定(無論窗口怎么變化,控件的相對(duì)位置都不變)
        - 含義:固定控件與父窗口的【上下左右邊距】不變,實(shí)現(xiàn)控件的錨定
        - 左上角固定:選定 Top,Left(默認(rèn))
        - 頂部固定,水平拉伸:選定 Top,Left,Right
        - 居中固定:None(取消所有)
        - *注意:Anchor效果的好壞取決于控件的初始位置,因?yàn)榭丶某跏嘉恢脹Q定了控件的邊距!所以要讓控件固定右上角,就要初始設(shè)計(jì)時(shí)就放在右上角!
(2)Dock:??繉傩?,將控件??吭诟复翱诘囊粋?cè)或者中央
        - Top:上,控件停靠在容器上側(cè),寬度填滿容器,高度可以調(diào)節(jié)
        - Bottom:下,控件??吭谌萜飨聜?cè),寬度填滿容器,高度可以調(diào)節(jié)
        - Left:左,控件??吭谌萜髯髠?cè),高度填滿容器,寬度可以調(diào)節(jié)
        - Right:右,控件??吭谌萜饔覀?cè),高度填滿容器,寬度可以調(diào)節(jié)
        - Fill,中,控件填滿容器中間剩余部分(所以說與控件添加順序有關(guān))
        - None,無,不使用Dock屬性
        - *注意:
                a.容器之間可以嵌套,使用布局屬性(容器就是存放組件的,比如Panel)
                b.Dock屬性與Anchor屬性不能同時(shí)使用
                c.Dock屬性不是固定邊距了,就是相對(duì)位置填充

 3.WinForm布局器

4.布局器 LayoutEngine
(1)含義:布局器就是容器內(nèi)部組件的默認(rèn)排列方式,所有的容器都帶有一個(gè)默認(rèn)的布局器
(2)自定義控件如何加入設(shè)計(jì)界面:
        - 工具 -> 選項(xiàng) -> Windows窗體設(shè)計(jì)器 -> 常規(guī) -> 自動(dòng)填充工具箱 -> True
        - 添加自定義的控件類源碼到項(xiàng)目下
        - 生成/重新生成結(jié)局方案 F7
        - 重新打開設(shè)計(jì)界面,在工具箱就可以看到自己的控件
(3)系統(tǒng)提供的布局器-FlowLayoutPanel(流式布局):
        - 含義:普通的Panel面板容器控件,使用了FlowLayout流式布局,即所有內(nèi)部組件按照順序從左到右從上到下依次排列
        - FlowLayoutPanel也可以使用Anchor、Dock等屬性,因?yàn)樗彩谴绑w容器內(nèi)的一個(gè)組件
        - 控件的選擇技巧:多個(gè)控件疊加到一起時(shí),可以右鍵最上層控件,來進(jìn)行重疊控件的選擇
(4)系統(tǒng)提供的布局器-TableLayoutPanel(表格布局):
        - 含義:普通的Panel面板容器,使用了TableLayout表格布局,即所有內(nèi)部組件可以放置到不同的表格中(每個(gè)表格只能放置一個(gè)控件)
        - TableLayoutPanel也可以使用Anchor、Dock等屬性,因?yàn)樗彩谴绑w容器內(nèi)的一個(gè)組件。搭配布局與布局屬性,可以實(shí)現(xiàn)很多不同的布局效果。
        - 刪除/添加行、列:右鍵表格Panel,可以添加、刪除行/列
        - 調(diào)整表格大?。罕砀駥傩訡olumns可以通過絕對(duì)值、百分比、自動(dòng)調(diào)整等方式來調(diào)整單元格的大小
                a.絕對(duì):固定像素值大小
                b.百分比:除去絕對(duì)大小后,單元格占剩余大小的百分比
                c.自動(dòng)調(diào)整:根據(jù)內(nèi)部控件的大小生成
        - 跨行/列控件:在控件的ColumnSpan/RowSpan調(diào)整控件可以跨行/跨列布局
        - *注意: TableLayoutPanel 控件每個(gè)單元格只能包含一個(gè)子控件。
(5)系統(tǒng)提供的布局工具-默認(rèn)布局:默認(rèn)布局可以通過控件拖拽放置,并可以使用Anchor、Dock來調(diào)整
(6)自定義布局器:用戶可以自己設(shè)計(jì)實(shí)現(xiàn)布局器,這屬于WinForm高級(jí)的內(nèi)容,后面學(xué)習(xí)。

三.WinForm常用控件

1.Winform 組件的使用
(1)TextBox:輸入文本框
        - 常用屬性:尺寸Size、單行/多行Multiline、密碼輸入PasswordChar、只讀ReadOnly、顯示/獲取文本Text等
        - 常用事件:KeyPress按下按鍵(常用于輸出完成點(diǎn)擊回車,box.Text取輸入值,事件e.keyChar取按下哪個(gè)鍵)
(2)CheckBox:復(fù)選框
        - 常用屬性:尺寸Size、顯示文本Text、Checked是否勾選
        - 常用事件:Click點(diǎn)擊事件、CheckedChanged勾選狀態(tài)改變事件
(3)ComboBox:下拉列表(只能單選)
        - 常用屬性:
                a.添加數(shù)據(jù)項(xiàng):設(shè)計(jì)器編輯添加(屬性->數(shù)據(jù)->Items,一行表示一個(gè)數(shù)據(jù)項(xiàng))、程序手工添加(comboBox.Items.Add("some");)
                b.其他設(shè)置:Size尺寸、Text提示文本等
        - 常用事件:
                a.獲取選中的項(xiàng):SelectedItem(選中項(xiàng)的值)、SelectedIndex(選中項(xiàng)的索引,-1表示未選中)
                b.選項(xiàng)改變事件:SelectedIndexChanged
        - 注意:Item可以添加字符串,也可以添加任意object類型(比如自定義對(duì)象),對(duì)象會(huì)以object.toString顯示
(4)ListBox:列表框(展示數(shù)據(jù)、可單選/多選)
        - 常用屬性:SelectionMode(單選/多選模式)
                a.單選模式獲取選項(xiàng):SelectedItem/SelectedIndex(選中項(xiàng)的值/索引)
                b.多選模式獲取選項(xiàng):SelectedIndices/SelectedItems(選中項(xiàng)的索引集合/值集合)
                c.添加數(shù)據(jù)項(xiàng):設(shè)計(jì)器編輯添加(屬性->數(shù)據(jù)->Items)、程序手工添加(listBox.Items.Add("some");)
        - 常用事件:SelectedIndexChanged(選項(xiàng)改變)
        - 注意:Item可以添加字符串,也可以添加任意object類型(比如自定義對(duì)象),對(duì)象會(huì)以object.toString顯示
(5)練習(xí):學(xué)生信息編輯器實(shí)例(本代碼)

1.界面展示 

2.實(shí)體類 Student(封裝信息)

1.C# 類的屬性與字段
(1)字段:字段是類的成員變量,用于類內(nèi)特征的數(shù)據(jù)存儲(chǔ)(靜態(tài)) 比如private int Id;
(2)屬性:屬性是對(duì)字段特征的動(dòng)態(tài)描述,用于向外界提供數(shù)據(jù),本質(zhì)上就是get、set方法。
        - 完整屬性用法:

private string sdu_name;//聲明字段
 
public string StudentName{//聲明屬性
      get{ return sdu_name; }
      set{
         if(value==null)sdu_name = "admin";
         sdu_name = value;
      }
}


        - get訪問器:get訪問器必須包含return語句,返回字段‘realValue'。用于獲取數(shù)據(jù),如果沒有g(shù)et則字段為只寫的
        - set訪問器:set訪問器接受它的輸入?yún)?shù)--value,并把它賦給字段,value是隱式參數(shù)。用于設(shè)置數(shù)據(jù),如果沒有set則字段為只讀的
(3)使用方式:直接使用Class.StudentName來獲取和設(shè)置數(shù)據(jù),就像是直接使用公開的屬性一樣 
(4)自動(dòng)屬性:簡化字段和屬性的關(guān)系
        - 用法:public 數(shù)據(jù)類型 屬性名{ get; set; }
        - *原理:c# 允許只聲明屬性而不聲明后備字段,編譯器會(huì)創(chuàng)建隱藏的后備字段。并且自動(dòng)掛接到get,set訪問器上。
(5)注意:
        - 屬性也可以不與字段關(guān)聯(lián),可以當(dāng)作函數(shù)進(jìn)行復(fù)雜計(jì)算,比較自由靈活
        - 屬性也可不用顯示聲明相應(yīng)的字段,直接用于存貯數(shù)據(jù)。(自動(dòng)屬性)
        - 也可以通定義其他set、get函數(shù)來實(shí)現(xiàn)訪問private字段的功能

namespace WindowsFormsApp_learning
{
    class Student
    {
        //屬性訪問器
        public int SduId { get; set; }
        public string SduName { get; set; }
        public bool SduSex { get; set; }
        public string SduPhone
        {
            get; set;
        }
 
        public Student(int sduId, string sduName, bool sduSex, string sduPhone)
        {
            SduId = sduId;
            SduName = sduName;
            SduSex = sduSex;
            SduPhone = sduPhone;
        }
 
        public Student()
        {
        }
    }
}

 3.邏輯事件代碼Form.cs

namespace WindowsFormsApp_learning
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
            //初始化數(shù)據(jù)
            LoadData();
        }
 
        /**
         * 保存按鈕觸發(fā)事件-保存學(xué)生信息到本地文件
         */
        private void save_student(object sender, EventArgs e)
        {
            Student student = new Student();
            student.SduId =Convert.ToInt32(sdu_Id.Text.Trim()); //Convert格式轉(zhuǎn)換
            student.SduName = sdu_Name.Text.Trim();
            student.SduSex = (sdu_sex.SelectedIndex == 1);
            student.SduPhone = sdu_phone.Text.Trim();
            //以Json格式保存到本地文件
            string JsonStr = JsonConvert.SerializeObject(student, Formatting.Indented);
            AfTextFile.Write("student.txt", JsonStr,AfTextFile.UTF8);
            MessageBox.Show("操作成功");
        }
 
        //讀取文件,加載數(shù)據(jù)
        private void LoadData()
        {
            string JsonStr = AfTextFile.Read("student.txt", AfTextFile.UTF8);
            if (JsonStr == null) return;
            Student student = JsonConvert.DeserializeObject<Student>(JsonStr);
            sdu_Id.Text = Convert.ToString(student.SduId);
            sdu_Name.Text = student.SduName;
            sdu_sex.SelectedIndex = student.SduSex?1:0;
            sdu_phone.Text = student.SduPhone;
        }
    }
}

四.圖片框與項(xiàng)目資源

1.圖片框與資源
(1)添加資源來源:
        - 本地文件 : 本地資源路徑,比如"D\\Resources\\123.jpg"(注意使用Windows路徑格式)
        - 項(xiàng)目資源文件:Properties/Resources.resx(項(xiàng)目資源文件夾下)
                a.如何添加項(xiàng)目資源文件:雙擊Properties/Resources.resx->添加資源->添加現(xiàn)有文件->選擇本地圖片->重命名(規(guī)范化,以后使用時(shí)直接調(diào)用名字使用資源)
                b.能添加什么類型的資源:字符串、文本文檔、圖片、視頻、音頻等
                c.原理:Resources.resx將添加的資源整合到了項(xiàng)目exe當(dāng)中,因此就算刪除源文件也不影響項(xiàng)目運(yùn)行。在調(diào)用資源時(shí),是通過自動(dòng)生成的方法來獲取資源。
                d.優(yōu)點(diǎn):將資源統(tǒng)一到項(xiàng)目中來,并且可以通過規(guī)范化的命名直接調(diào)用資源。
                e.使用:通過 Properties.Resources.資源名稱; 來直接調(diào)用你的資源,方便快捷
        - 網(wǎng)絡(luò)資源:比如"http://baidu/image/meinv.jpg"


(2)圖片資源加載類:
        - C# 提供了Image抽象類,作為所有圖片資源的總稱
        - C# 提供了Image抽象類的具體實(shí)現(xiàn)類 Bitmap(位圖、像素圖),來具體加載讀取圖像。
                a.比如Bitmap img = new Bitmap("D\\Resources\\123.jpg");
                b.比如Bitmap img = Properties.Resources.img_Conv;
 
(3)圖片框控件:PictureBox
        - Size、Location屬性:尺寸、位置
        - Image屬性:圖片資源(可以通過本地/項(xiàng)目資源文件導(dǎo)入)
        - SizeMode屬性:圖片的適應(yīng)模式(StretchImage拉伸圖片和圖片框相同尺寸、Zoom縮放等)
        - ErrorImage、InitialImage屬性:加載失敗、加載圖片顯示之前所顯示的圖片
   
(4)圖片框控件可視化配置:在設(shè)計(jì)里拖動(dòng)PictureBox并配置屬性即可。
(5)圖片框代碼手動(dòng)配置:

Bitmap img = Properties.Resources.img_Conv; //讀取圖片資源
pictureBox.Image = img;//手動(dòng)設(shè)置圖片框控件 Image來源
pictureBox.SizeMode = PictureBoxSizeMode.Zoom;//手動(dòng)設(shè)置圖片格式

1.添加資源

2.圖片框控件展示

        界面設(shè)計(jì)就是簡單的放置了一個(gè)PictureBox控件,沒有過多的設(shè)計(jì)。圖片來源的設(shè)置使用代碼方式,原因是在以后開發(fā)中圖片往往不是固定的,需要?jiǎng)討B(tài)變化,因此使用代碼方式動(dòng)態(tài)設(shè)置圖片來源是比較推薦的。

namespace WindowsFormsApp_learning
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            //初始化所有組件
            InitializeComponent();
            //初始化PictureBox控件-圖片資源
            Bitmap img = Properties.Resources.img_Conv;
            pictureBox.Image = img;
            pictureBox.SizeMode = PictureBoxSizeMode.Zoom;
        }
    }
}

 到此這篇關(guān)于WinForm入門與基本控件使用詳解的文章就介紹到這了,更多相關(guān)WinForm 入門內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論