【.NET Framework 窗體應用程序項目結構介紹】

在使用 Visual Studio (VS) 開發 .NET Framework 窗體應用程序(Windows Forms App) 時,項目結構通常包含以下核心文件夾和文件。以下是詳細介紹:


1. 項目根目錄下的主要文件

(1) .csproj 文件

  • 作用:C# 項目文件,定義項目配置(如編譯選項、引用庫、目標框架等)。
  • 示例內容.NET Framework 4.8):
    <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><TargetFrameworkVersion>v4.8</TargetFrameworkVersion><OutputType>WinExe</OutputType> <!-- Windows 可執行文件 --></PropertyGroup><ItemGroup><Reference Include="System.Windows.Forms" /> <!-- 引用 Windows Forms 庫 --></ItemGroup>
    </Project>
    
  • 關鍵點
    • .NET Framework 項目通常使用 v4.x 版本。
    • OutputType="WinExe" 表示這是一個 Windows 窗體應用程序。

(2) Program.cs

  • 作用:程序入口點,包含 Main 方法,啟動主窗體。
  • 示例代碼
    using System;
    using System.Windows.Forms;static class Program
    {[STAThread] // 單線程單元(STA)模式,Windows Forms 要求static void Main(){Application.EnableVisualStyles(); // 啟用 Windows 主題樣式Application.SetCompatibleTextRenderingDefault(false);Application.Run(new MainForm()); // 啟動主窗體}
    }
    

(3) App.config

  • 作用:應用程序配置文件,存儲連接字符串、應用設置等。
  • 示例內容
    <configuration><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup><appSettings><add key="DatabaseConnection" value="Server=localhost;Database=TestDB;" /></appSettings>
    </configuration>
    
  • 關鍵點
    • 可通過 ConfigurationManager.AppSettings["DatabaseConnection"] 讀取配置。

(4) Properties/ 文件夾

  • AssemblyInfo.cs
    • 作用:定義程序集元數據(如版本、版權信息)。
    • 示例內容
      [assembly: AssemblyTitle("MyWindowsFormsApp")]
      [assembly: AssemblyVersion("1.0.0.0")]
      
  • Resources.resx
    • 作用:存儲應用程序資源(如圖片、字符串、圖標)。
    • 訪問方式Properties.Resources.MyImage(自動生成強類型訪問)。
  • Settings.settings
    • 作用:定義用戶/應用設置(如窗體位置、默認值)。
    • 示例
      • 在 VS 設計器中設置 UserName(類型 string,作用域 User)。
      • 代碼中訪問:Properties.Settings.Default.UserName

2. 窗體相關文件

(1) 主窗體文件(如 MainForm.cs

  • 作用:定義主窗體邏輯(UI + 事件處理)。
  • 文件組成
    • MainForm.cs(代碼邏輯)
    • MainForm.Designer.cs(自動生成的 UI 代碼)
    • MainForm.resx(窗體資源,如圖片)
MainForm.cs(手動編寫部分)
using System;
using System.Windows.Forms;namespace MyWindowsFormsApp
{public partial class MainForm : Form{public MainForm(){InitializeComponent(); // 調用自動生成的初始化方法}private void button1_Click(object sender, EventArgs e){MessageBox.Show("Hello, Windows Forms!");}}
}
MainForm.Designer.cs(自動生成部分)
  • 作用:存儲窗體控件的初始化和布局代碼(不要手動修改)。
  • 示例片段
    private void InitializeComponent()
    {this.button1 = new System.Windows.Forms.Button();this.button1.Text = "Click Me";this.button1.Click += new System.EventHandler(this.button1_Click);this.Controls.Add(this.button1);
    }
    

(2) 其他窗體文件

  • 如果項目包含多個窗體(如 LoginForm.csSettingsForm.cs),每個窗體都會有類似的文件結構:
    • LoginForm.cs(邏輯)
    • LoginForm.Designer.cs(UI)
    • LoginForm.resx(資源)

3. 其他常見文件夾

(1) bin/obj/

  • bin/Debug/bin/Release/
    • 作用:存放編譯后的可執行文件(.exe)和依賴庫(.dll)。
  • obj/
    • 作用:臨時編譯文件(如中間代碼、資源緩存)。

(2) References/(VS 中顯示)

  • 作用:顯示項目引用的程序集(如 System.DataSystem.Drawing)。
  • 手動添加引用:右鍵項目 → Add Reference → 選擇 .NETCOM 庫。

4. 完整項目結構示例

MyWindowsFormsApp/
├── MainForm.cs                # 主窗體邏輯
├── MainForm.Designer.cs       # 主窗體 UI(自動生成)
├── MainForm.resx              # 主窗體資源
├── Program.cs                 # 程序入口
├── App.config                 # 應用配置
├── Properties/
│   ├── AssemblyInfo.cs        # 程序集信息
│   ├── Resources.resx         # 全局資源
│   └── Settings.settings       # 應用設置
├── bin/                       # 編譯輸出
│   └── Debug/
│       └── MyWindowsFormsApp.exe
└── obj/                       # 臨時文件

5. 關鍵注意事項

  1. 不要手動修改 .Designer.cs 文件:所有 UI 更改應在 VS 設計器中進行。
  2. 資源管理:使用 Properties.Resources 訪問圖片/字符串,Properties.Settings 訪問配置。
  3. 調試 vs 發布
    • Debug 模式:包含調試符號(.pdb),適合開發。
    • Release 模式:優化代碼,適合發布。
  4. .NET Framework vs .NET Core/5+
    • .NET Framework 項目使用 v4.x,而 .NET 5+ 使用 WinForms 的跨平臺版本(需安裝對應工作負載)。

總結

  • 核心文件.csprojProgram.csApp.configProperties/
  • 窗體文件:每個窗體對應 .cs + .Designer.cs + .resx
  • 資源與配置:通過 Properties.ResourcesProperties.Settings 管理。
  • 編譯輸出bin/ 目錄存放最終 .exe 文件。

注:內容由AI生成

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

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

相關文章

【SpringAI】4.多模態提問

SpringAI多模態提問 概述 SpringAI支持多模態輸入&#xff0c;允許AI模型同時處理文本和圖像內容。這對于需要視覺理解的AI應用場景非常有用&#xff0c;如圖像描述、視覺問答、圖像分析等。 核心概念 1. Media類 SpringAI使用Media類來表示多模態內容&#xff0c;支持圖…

自動化提示工程:未來AI優化的關鍵突破

自動化提示工程:未來AI優化的關鍵突破 自動化提示工程能夠自動化或半自動化地生成或優化提示詞,以探索大規模的提示詞組合,并通過 自動優化技術提升提示詞生成的穩定性? 依據自動化提示工程實現形式在邏輯推理和效能導向 兩個維度的取舍上,將其分為基于思維鏈的自動化提示工…

多模態大語言模型arxiv論文略讀(148)

A Comprehensive Survey and Guide to Multimodal Large Language Models in Vision-Language Tasks ?? 論文標題&#xff1a;A Comprehensive Survey and Guide to Multimodal Large Language Models in Vision-Language Tasks ?? 論文作者&#xff1a;Chia Xin Liang, P…

關于.net core開發的實體所有注解詳解

以下是對 .NET Core 開發中實體類&#xff08;用于數據模型&#xff09;和 Web API 控制器/方法&#xff08;用于定義接口&#xff09;常用注解屬性&#xff08;Attributes&#xff09;的詳細說明與示例&#xff0c;涵蓋數據驗證、API 行為控制、序列化、Swagger/OpenAPI 文檔生…

【安全工具】SQLMap 使用詳解:從基礎到高級技巧

目錄 簡介 一、安裝與基礎配置 1. 安裝方法 2. 基本語法 二、基礎掃描技術 1. 簡單檢測 2. 指定參數掃描 3. 批量掃描 三、信息收集 1. 獲取數據庫信息 2. 獲取當前數據庫 3. 獲取數據庫用戶 4. 獲取數據庫版本 四、數據提取技術 1. 列出所有表 2. 提取表數據 …

Redis大Key拆分實戰指南:從問題定位到落地優化

引言 最近在項目里遇到一個棘手問題&#xff1a;生產環境的Redis突然變“卡”了&#xff01;查詢延遲從幾毫秒飆升到幾百毫秒&#xff0c;監控面板顯示某個節點CPU使用率飆到90%。排查半天才發現&#xff0c;原來是某個用戶訂單的Hash Key太大了——單Key存了100多萬個訂單字段…

RabbitMQ簡單消息發送

RabbitMQ簡單消息發送 簡單代碼實現RabbitMQ消息發送 需要的依賴 <!--rabbitmq--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>x.x.x</version>&l…

【閱讀筆記】基于雙邊濾波改進的空域濾波算法

一、雙邊濾波空域濾波算法 雙邊濾波是一種典型的非線性濾波算法。基于高斯濾波&#xff0c;雙邊濾波利用強度的變化來保存邊緣信息&#xff0c;解決了邊緣模糊在視覺觀感上認為重要信息丟失的問題。雙邊濾波的濾波效果主要取決于兩個參數&#xff1a;兩個像素的空間鄰近性和灰…

華為交換機堆疊與集群技術深度解析附帶腳本

一、引言 在企業園區網、數據中心等網絡場景中&#xff0c;為了提升網絡的可靠性、擴展性和管理效率&#xff0c;華為交換機提供了堆疊&#xff08;Stack&#xff09;和集群&#xff08;CSS&#xff0c;Cluster Switch System &#xff09;技術。這兩種技術能夠將多臺物理交換…

Python網絡爬蟲(十三)- 數據解析模塊 BeautifulSoup

1、BS4簡介 BeautifulSoup(簡稱 BS4) 是一個用于解析 HTML 和 XML 文檔的 Python 第三方庫。它能夠從網頁或其他 HTML/XML 格式的文本中提取數據,并將其轉換為結構化的對象,方便開發者快速定位、提取和操作所需信息。它的核心功能是通過解析器將無序的標記語言轉換為樹形結…

如何使用 Pytorch Lightning 啟用早停機制

【PL 基礎】如何啟用早停機制 摘要1. on_train_batch_start()2. EarlyStopping Callback 摘要 本文介紹了兩種在 PyTorch Lightning 中實現早停機制的方法。第一種是通過重寫on_train_batch_start()方法手動控制訓練流程&#xff1b;第二種是使用內置的EarlyStopping回調&#…

深入理解前綴和與差分算法及其C++實現

前綴和與差分是算法競賽和編程中非常重要的兩種技巧&#xff0c;它們能夠高效地處理區間查詢和區間更新問題。本文將詳細介紹這兩種算法的原理、應用場景以及C實現。 一、前綴和算法 1.1 前綴和的基本概念 前綴和&#xff08;Prefix Sum&#xff09;是一種預處理技術&#x…

HugeGraph【部署】Linux單機部署

注: hugegraph從版本 1.5.0 開始&#xff0c;需要 Java11 運行時環境 一、安裝JDK11 1.下載JDK11 https://www.oracle.com/java/technologies/downloads/#java11 2.解壓縮包 tar -zxvf jdk-11.0.27_linux-x64_bin.tar.gz 3.修改/etc/profile環境變量 export JAVA_HOME/usr…

C++異步編程里避免超時機制

C標準庫中時鐘&#xff08;Clock&#xff09; 這段內容主要介紹了C標準庫中**時鐘&#xff08;Clock&#xff09;**的概念和分類&#xff0c;以及它們在時間測量中的作用。以下是關鍵信息的解讀&#xff1a; 一、時鐘的核心特性 C中的時鐘是一個類&#xff0c;提供以下四個基…

npm install安裝不成功(node:32388)怎么解決?

如果在執行 npm install 時出現問題&#xff0c;尤其是 node:32388 相關的錯誤&#xff0c;這通常意味著某些依賴或配置出了問題。這里有一些常見的解決方法&#xff0c;你可以嘗試&#xff1a; 1. 清除 npm 緩存 有時候&#xff0c;npm 緩存問題會導致安裝失敗。你可以清除 …

Ubuntu-18.04-bionic 的apt的/etc/apt/sources.list 更換國內鏡像軟件源 筆記250702

Ubuntu-18.04-bionic 的apt的/etc/apt/sources.list更換國內鏡像軟件源 筆記250702 為 Ubuntu 18.04 LTS&#xff08;代號 Bionic Beaver&#xff09;更換 /etc/apt/sources.list 為國內鏡像源 備份/etc/apt/sources.list文件 sudo cp -a /etc/apt/sources.list /etc/apt/sou…

【運維系列】【ubuntu22.04】安裝GitLab

一.下載安裝文件 rootgitlab:~# wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/9/gitlab-ce-17.4.0-ce.0.el9.x86_64.rpm二.執行安裝腳本 2.1 先執行安裝前的命令 rootgitlab:~# apt install -y perl-interpreter rootgitlab:~# apt install -y openssh-s…

Cisco ASA防火墻查看ACL的條目數量

這里顯示的條目數量為ACE, ACE是啥&#xff1f; ACE全稱&#xff1a; access-list entry ACE指的是ACL條目展開后的數量&#xff0c; 啥叫展開&#xff1f; 示例&#xff1a; access-list out-in extend permit tcp80&443 host 1.1.1.1 host 2.2.2.2這種配置是占1條&#…

npm install安裝的node_modules是什么

node_modules 是一個由 npm&#xff08;Node Package Manager&#xff09;管理的文件夾&#xff0c;存放著你的 Node.js 項目中所有安裝的依賴包。當你運行 npm install 時&#xff0c;npm 會根據你的項目中 package.json 文件中的依賴配置&#xff0c;下載并安裝相應的包到 no…

【實時Linux實戰系列】實時Linux項目的部署與維護

在實時 Linux 項目的開發過程中&#xff0c;開發階段的工作僅僅是開始&#xff0c;生產環境中的部署與維護同樣至關重要。實時 Linux 系統廣泛應用于工業自動化、航空航天、智能交通等對實時性和穩定性要求極高的領域。例如&#xff0c;在工業自動化中&#xff0c;實時系統的部…