WinFrom真入門(1)——Windows窗體應用概念

窗體的基本結構

用Winform開發的桌面程序,是在Windows操作系統上運行的,這個不用多說。窗體(Form)的作用?:窗體是用戶交互的容器,承載按鈕、文本框等控件,構成應用程序的界面?。

在Windows操作系統中,窗體(窗口)所處可見,例如:
一個標準的窗體

1、客戶區域:

一個標準的窗體其實就是一塊矩形區域,客戶區域指的是窗口內部區域。除去標題蘭和邊框外的區域可視為內部區域,稱為客戶區域。我們開發人員可以在窗口的客戶區域中放置控件,也可以在其中繪制出咱們所需要的圖形。

2、控件

  • 控件被封裝到類中,作為數據在應用程序中流動的載體。它公開一系列屬性和方法,開發者可以直接調用它們來完成許多常規任務。控但也屬于一類組件,控件開發者完成控件開發后會將其發布為一個或多個組件庫,組件庫可以被直接使用。
  • 多數控件都支持可視化,它們充當程序與用戶交互的橋梁。用戶可以通過鍵盤、鼠標或者其他輸人設備對控件進行操作。程序代碼可以處理控件事件或者從控件公開的屬性中獲取數據來確定用戶進行了哪些操作,并適當地做出響應。比如,一個按鈕控件會公開一個 Click 事件該事件會在用戶單擊按鈕時發生,應用程序代碼可以訂閱該事件,只要 Click 事件發生,程序就知道用戶對控件進行了操作。這時就應當按照實際需要對用戶的操作給予反饋。

3、程序項目結構

WinForm程序的項目的結構,如下圖:

在這里插入圖片描述

  • Windows 窗體應用程序也稱 WindowsForms應用程序(簡稱WinForm應用)。上圖展示了一個普通的 Windows 窗體應用程序項目的基本結構。
  • 首先要:找到 Main 方法,Main 方法是整個應用程序的人口點。因此,以 Main 作為起點來認識 Windows窗體應用程序會比較容易理解整個應用程序是如何執行的。
  • Windows 窗體應用程序的 Main,方法在、Progam.cs 文件中,項目模板生成的默認類名也叫 Program。打開代碼文件后,會看到 Main 方法中的代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{internal static class Program{/// <summary>/// 應用程序的主入口點。/// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}}
}

Main()方法是程序的入口,這幾行代碼對于理解 Windows 窗體應用程序有很大幫助。先看前面兩行

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

這兩行代碼是項目模板自動生成的,不用過多關注。

  • 調用Application.EnableVisualStyles();方法可以開啟可視化視覺效果。Windows操作系統從XP開始使用了一種新的控件視覺效果,使得控件看起來更美觀,調用該方法就是告訴操作系統,應用程序也應用視覺效果。
  • Application.SetCompatibleTextRenderingDefault(false);主要是對控件上的文本呈現做兼容性處理。

重點是第三行代碼

Application.Run(new Form1());
  • Form1是項目模板生成的一個窗口類,它派生自 System.Windows.Forms.Form 類,它表示一個標準的Windows 窗口。這就可以解釋為什么把 Windows 窗體應用程序稱為“Windows Foms 應用程序”或簡稱為“WinForm 應用程序”了,因為 Form 類封裝了與窗口相關的信息。

  • 調用 Application 類的 Run 方法就會啟動一個消息循環,并且需要等待消息循環退出,Run 方法才會返回。代碼是一行一行地往下執行的,從 Main 方法的人口位置開始執行,當代碼執行完 Main 方法后應用程序就會退出,正因為 Run方法啟動了一個消息循環,才使應用程序在 Run方法處停下來,等到用戶將其關閉或者操作系統要結束當前進程時才會退出 Main 方法。(這個前期了解一下即可,不用深究,隨著學習,自然而然會明白的)

4、創建一個Winform程序

開發Winform程序,需要用到可視化開發工具,這里用的是微軟官方提供的Visual Studio,簡稱VS,非常好用,非常強大的IDE工具。下載安裝請看 開發工具Visual Studio下載和安裝超級詳細
打開VS,開始創建項目:

  • 在VS的頂部菜單欄中,依次執行【文件】,【新建】,【項目】,會打開“新建項目窗體”

在這里插入圖片描述

  • 在新建項目模板中,找到Windows窗體應用,有兩個選擇,一般現在都用(.NET FrameWork)開發,直接選擇后,點擊右下角【下一步】,進入配置新項目窗體,

在這里插入圖片描述
配置新項目窗體,在這里可以配置 項目名稱,存放位置,解決方案名稱,還有選擇合適的.NET FrameWork框架版本號,一般選擇4.0往后的,太老的版本,基本不用了。選擇好后,點擊右下角【創建】,等待即可
在這里插入圖片描述
程序創建好后,會進入這個頁面
在這里插入圖片描述
點擊啟動后,程序會運行起來。一個簡單的Windows窗體應用已經開發好了。
在這里插入圖片描述

總結:本章主要講了窗體的基本概念,程序的入口以及如何創建一個窗體應用。都是是比較好理解的,要熟記于心,后面會一直伴隨著我們開發Winfom程序。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73970.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73970.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

scss預處理器對比css的優點以及基本的使用

本文主要在vue中演示&#xff0c;scss的基本使用。安裝命令 npm install sass sass-loader --save-dev 變量 SCSS 支持變量&#xff0c;可將常用的值&#xff08;如顏色、字體大小、間距等&#xff09;定義為變量&#xff0c;方便重復使用和統一修改。 <template><…

Postman 如何高效地轉換時間戳?

在 Postman 中&#xff0c;時間戳的處理對于 API 請求和響應的調試和測試至關重要&#xff0c;正確處理時間戳可以確保數據的準確性和一致性&#xff0c;而 Moment 庫和原生 JS 是兩種常見的處理方式。此外&#xff0c;我們還將介紹 Apifox&#xff0c;它提供了更直觀、更簡便的…

iptables學習記錄

一.四表 filter 表&#xff1a; 主要用于控制數據包的過濾&#xff0c;決定數據包是否允許進出及轉發 。比如設置規則允許特定 IP 訪問服務器的 SSH 端口&#xff08;22 端口&#xff09;&#xff0c;或禁止某些 IP 訪問網站端口&#xff08;80 或 443 端口 &#xff09;。可作…

前端自動創建react項目腳手架

步驟&#xff1a;在終端窗口運行如下命令&#xff1a; npm create vitelatest 也可以指定 vite包 版本&#xff0c; 例如&#xff1a; npm create vite4.1.0 npm執行npm install 很慢 還出現證書問題 執行命令行:npm install -g create-vite npm error code UNABLE_TO_GET_IS…

[從零開始學習JAVA ] 了解線程池

前言&#xff1a; 在Java編程中&#xff0c;線程池是一個強大的工具&#xff0c;它能夠管理和復用線程&#xff0c;提供高效的并發處理能力。通過線程池&#xff0c;我們可以有效地控制并發線程的數量&#xff0c;并降低線程創建和銷毀的開銷。本文將引導你深入了解Java中的線程…

Nginx — Nginx處理Web請求機制解析

一、Nginx請求默認頁面資源 1、配置文件詳解 修改端口號為8080并重啟服務&#xff1a; 二、Nginx進程模型 1、nginx常用命令解析 master進程&#xff1a;主進程&#xff08;只有一個&#xff09; worker進程&#xff1a;工作進程&#xff08;可以有多個&#xff0c;默認只有一…

【C++標準IO庫】字符串流

目錄 一、字符串流概述 1.1 流的概念回顧 1.2 字符串流的定義和作用 二、istringstream 的使用 2.1 基本用法 2.2 常見應用場景 三、ostringstream 的使用 3.1 基本用法 3.2 常見應用場景 四、stringstream 的使用 4.1 基本用法 4.2 常見應用場景 五、字符串流的錯…

C語言pthread庫的線程休眠和喚醒的案例

一、代碼如下 #include<stdio.h> #include<pthread.h> // 定義獨占鎖 pthread_mutex_t mutex; // 定義條件信號對象 pthread_cond_t condition; // 初始化函數 void init(){ int code pthread_mutex_init(&mutex, NULL); printf("共享鎖初…

人臉照片比對 API 接口如何對接?

隨著數字化程度加深&#xff0c;身份驗證的重要性也日益凸顯&#xff0c;它成為保障個人信息安全、維護交易秩序的關鍵環節。人臉照片比對 API 接口作為連接人臉比對技術與各類應用的橋梁&#xff0c;正發揮著越來越重要的作用&#xff0c;成為眾多企業和開發者實現高效、安全身…

java學習筆記9——常用類

字符串相關的類&#xff1a; String 指向同一個地址可才相等 注意這個地方&#xff0c;兩個person對象的name實際上指向的是同一個字符串常量池&#xff08;Tom&#xff09; String常用方法 總結&#xff1a; 1.string類的理解(以JDK8為例說明) 1.1 類的聲明 public final cl…

Day 09

文章目錄 指針數組指針和函數技術名詞解釋技術細節課堂筆記 指針數組 #include<stdio.h> int main() {int a[3] {0,1,2};//指針數組&#xff0c;它是數組&#xff0c;每個元素都是指針int *p[3];p[0] &a[0];p[0] a;p[1] &a[1];p[1] a1;p[2] &a[2];p[…

Nginx — Nginx安裝證書模塊(配置HTTPS和TCPS)

一、安裝和編譯證書模塊 [rootmaster nginx]# wget https://nginx.org/download/nginx-1.25.3.tar.gz [rootmaster nginx]# tar -zxvf nginx-1.25.3.tar.gz [rootmaster nginx]# cd nginx-1.25.3 [rootmaster nginx]# ./configure --prefix/usr/local/nginx --with-http_stub_…

計算機網絡 用deepseek幫助整理的復習資料(一)

### 計算機網絡基礎知識整理 --- #### **一、網絡類型** 1. **局域網 (LAN)** - **定義**&#xff1a;覆蓋小范圍&#xff08;如家庭、教室、公司&#xff09;。 - **特點**&#xff1a;高帶寬、低延遲&#xff0c;設備通過交換機互聯。 - **示例**&#xff1…

Linux SCP傳輸文件免密配置

文章目錄 Linux SCP傳輸文件免密配置生成SSH密鑰對將公鑰復制到遠程服務器測試SSH連接使用SCP免密傳輸文件可選配置帶密碼的秘鑰連接處理使用 ssh-agent進行緩存管理&#xff08;該方式只能確保同一個回話中&#xff0c;多次傳輸只輸一次密碼&#xff09;使用 keychain&#xf…

數字電子技術基礎(三十六)——利用Multisim軟件實現3線-8線譯碼器

目錄 1 手動方式實現3線-8線譯碼器 2 使用字選擇器實現3線-8線譯碼器 現在嘗試利用Multisim軟件來實現3線-8線譯碼器。本實驗目的是驗證74LS138的基本功能&#xff0c;簡單來說就是“N中選1”。 實驗設計&#xff1a; &#xff08;1&#xff09;使能信號&#xff1a;時&am…

wait和notify : 避免線程餓死(以及votile內存可見性和指令重排序問題)

各位看官&#xff0c;大家早安午安晚安呀~~~ 如果您覺得這篇文章對您有幫助的話 歡迎您一鍵三連&#xff0c;小編盡全力做到更好 歡迎您分享給更多人哦 今天我們來學習&#xff1a;wait和notify : 避免線程餓死&#xff08;以及votile內存可見性和指令重排序問題&#xff09; …

HarmonyOS 介紹

HarmonyOS簡介 隨著萬物互聯時代的開啟&#xff0c;應用的設備底座將從幾十億手機擴展到數百億IoT設備。全新的全場景設備體驗&#xff0c;正深入改變消費者的使用習慣。 同時應用開發者也面臨設備底座從手機單設備到全場景多設備的轉變&#xff0c;全場景多設備的全新底座&am…

【視覺提示學習】3.28閱讀隨想

2109.01134 CoOp通過可學習的向量來建模提示的上下文詞匯&#xff0c;這些向量可以用隨機值或預訓練的詞嵌入進行初始化&#xff08;見圖2&#xff09;。我們提供了兩種實現方式&#xff0c;以處理不同性質的任務&#xff1a;一種是基于統一上下文&#xff08;unified context…

計算機求職面試中高頻出現的經典題目分類整理

以下為計算機求職面試中高頻出現的經典題目分類整理&#xff0c;涵蓋技術核心與深度考察方向&#xff0c;答案要點已附解析思路&#xff1a; 一、數據結構與算法 鏈表操作 題目&#xff1a;反轉鏈表&#xff08;迭代/遞歸實現&#xff09;考察點&#xff1a;指針操作、遞歸思維…

uniapp選擇文件使用formData格式提交數據

1. Vue實現 在vue項目中,我們有個文件,和一些其他字段數據需要提交的時候,我們都是使用axios 設置請求頭中的Content-Type: multipart/form-data,然后new FormData的方式來進行提交。方式如下: const sendRequest = () => {const formData = new FormData()formData…