跳過到頁腳內容
Iron Academy Logo
C# 應用程式
C# 應用程式

其他分類

創建C#應用程序

Tim Corey
1h 35m

Windows Forms App 是 Microsoft 的 .NET Framework 中包含的圖形使用者介面 API。 它提供了一個創建豐富桌面應用程式的平台,Tim Corey 的影片"Intro to Windows Forms in .NET 6"為使用這項技術構建應用程式提供了一個全面的介紹。 以下是影片中所涵蓋概念的深入探討,靈感來自 Tim 的影片。

開始使用 Windows Forms

Tim Corey 在他的教程中通過在 .NET 6 中設置一個新的 Windows Forms 專案來開始,起步點包括在 Visual Studio 中創建一個新專案,選擇創建,然後選擇適當的模板,最後設置初始表單 (Form1)。 這對初學者來說至關重要,了解如何開始一個專案並使他們的第一個表單運行起來。

設置專案:

Tim 引導整個創建新專案的過程,強調選擇正確的 Windows Forms 應用程式的模板和設定的重要性。 這包括選擇類型"Windows Forms App",適當命名項目,此例中命名為 "WinFormsDemoApp",並選擇.NET 6.0 作為目標框架 (2:05)。

專案設置

當項目視窗顯示時單擊創建,您會在代碼編輯器左側的解決方案資源管理器窗口中找到一個帶有所有模板文件的默認 Windows 表單。 默認表單是基於基本 Windows 使用者介面的結構,標題欄包含 Windows Forms 應用程式的標題,還有最小化、最大化和關閉按鈕控制。

解決方案資源管理器

使用 Windows Forms 快速應用開發

Tim 在他的影片中探討了使用 Windows Forms 的快速應用開發 (RAD) 概念,強調其在創建原型和概念驗證上的簡單和效率。

理解快速應用開發

Tim 開始討論 RAD 的概念,重點在於快速開發應用以驗證想法和功能。

創建概念驗證

  1. 使用工具欄窗口:Tim 展示了開發者如何利用 Visual Studio 中的工具欄窗口,其中包含對應用開發至關重要的多種控制項。

  2. 拖放功能:他說明了如何將控制項通過拖放方式添加到設計表面上,例如按鈕、文本框、標籤和複選框。

構建基本應用

  1. 佈局與設計:Tim 解釋了在表單上排列控制項的靈活性,使用 Visual Studio 的對齊指南對齊它們。

  2. 複製和粘貼控制項:他顯示了開發者如何使用鍵盤快捷方式如 Ctrl+C 和 Ctrl+V 快速複製控制項,簡化設計過程。

功能性元素

  1. 配置控制項:Tim 例示瞭如通過在屬性窗口中直接調整屬性來配置進度條等控制項。 此互動演示了應用程式視覺元素的即時變化。

  2. 互動式預覽:通過運行應用程式,Tim 展示了如何互動性地使用這些基本組件,即使它們的功能尚未完全實現。

運行基本應用

設計者片段錯誤

Tim Corey 解釋了 Windows Forms 設計者可能出錯的各種方式,以及開發者通常如何遇到這個問題。

  • 意外修改:如果開發者意外刪除或修改了 Form1.Designer.cs 中自動生成代碼的關鍵部分,例如事件處理程序或控制項初始化代碼,可能會導致設計者失敗。

  • 不一致的代碼更改:當手動編輯的代碼與設計者生成的代碼之間存在不一致時,可能會出現錯誤。 例如,刪除一個部分類(Form1.cs)的事件處理程序而不在另一部分類(Form1.Designer.cs)中刪除,可能導致無法在設計者中正確加載表單的錯誤。

閱讀錯誤訊息

Tim Corey 強調在處理與 Windows Forms 設計者相關的問題時,仔細解讀 Visual Studio 提供的錯誤信息的重要性。

  • 錯誤信息詳細信息:Tim 突出了特定的錯誤信息,例如"設計師無法在行153處處理未知名稱 'form1_load'",這表明了設計師遇到問題的地方和原因。

  • 解決指南:錯誤信息通常提供可操作的步驟,例如復原對生成代碼的更改或確保所有部分類(Form1.cs and Form1.Designer.cs)的一致性。

從其他部分類中刪除事件處理程序

Tim 示範了解決由於表單各部分類中的事件處理程序修改不一致而導致設計者問題的實際解決方案。

  • 示例場景:他解釋了如何刪除一個部分類(Form1.cs)中的事件處理程序(Form1_Load),而不是另一部分類(Form1.Designer.cs)可以阻礙設計者正確加載表單的能力。

  • 統一修改:通過確保所有修改均一致地應用於兩個部分類中,開發者可以有效地恢復 Windows Forms 設計者的功能,而無需采取極端措施如重啟 Visual Studio 或重建項目。

在 Windows Forms 中處理其他事件

1. 事件處理機制

Tim 解釋了 Windows Forms 中的事件處理機制。 當使用 Windows Forms 設計者時,Tim 指出雙擊控制項(如表單本身)將為該控制項生成默認事件處理程序。 例如,雙擊表單即創建 Load 事件處理程序。 Tim 警告,如果開發者刪除處理程序內的代碼而不刪除事件處理程序本身,它將會影響表單在設計者中的渲染。 這是因為設計者將視覺佈局轉換為代碼,這對於在運行時正確渲染表單至關重要。

2. 理解表單作為一個類

Tim 詳述了 Windows Forms 本質上是繼承自Form的類,提供了表單佈局、窗口管理(最小化、最大化、關閉按鈕)、調整大小功能等。 根據 Tim 所說,這種繼承使開發者能夠利用預建的 UI 組件(按鈕、文本框、標籤等)並藉由修改它們的屬性和方法加以操控。

3. 屬性操作

在 29:16 的影片中,Tim Corey 示範了視窗程式的屬性如何在 Visual Studio 的屬性窗口中幫助開發者配置視覺元素,例如標籤(文本屬性)、按鈕(文本屬性、點擊事件)和進度條(值屬性)。 Tim 強調這些屬性可以在設計階段和運行時修改,影響控制項在表單上的行為和外觀。

4. 創建多個實例

Tim 解釋說,在 Windows Forms 中的每個表單(Form1、Form2 等)都是一個類的實例(Form)。 通過動態地創建多個實例,開發者可以有效地管理應用程式中的多個窗口。 Tim 建議這種能力促進了快速應用開發(RAD),允許表單被迅速設計、定製和互連,以構建複雜的用戶介面。

5. 應用程式啟動配置

Program.cs 中的 Main 方法通過使用 Application.Run(new Form1()) 指定首先初始化哪個表單(Form1、Form2 等)來確定應用程序的起始點。 Tim 強調,改變此啟動表單可改變當用戶啟動應用時顯示的最初視圖,從而影響應用的流程和用戶體驗。

Windows Forms 的選單和工具欄

Tim 示範了 WinForms 的多功能性,展示了選單和工具欄。 他解釋了在表單中添加和自訂這些元素的簡單性。 以下是 Tim 涵蓋的關鍵點:

添加狀態條

Tim Corey 示範了如何通过在表单中添加 StatusStrip 控件提升用户互动。 此控件包括ToolStripStatusLabel等组件。 通过利用 Visual Studio 的拖放功能,开发者可以快速结合这些元素以显示任务期间的动态信息,如进度更新或状态消息。

自定义菜单条

Corey 强调在为 Windows Forms 应用程序设计菜单条(MenuStrip)时安遵循 Windows 标准的重要性。 他解释了如何使用"与" (&) 来指定键盘快捷键,并使用下划线 (_) 提升无障碍性,确保用户能够通过键盘命令导航菜单。 例如,将 &File 分配给带下划线的 &Exit 为 E,允许用户快速访问和执行命令,而无需依赖鼠标交互。

创建子菜单和事件

Corey 演示了如何在 MenuStrip 下创建子菜单,并将事件与菜单项结合。 通过双击菜单项,开发者可以生成事件处理程序并实施功能,如显示消息 (MessageBox) 或执行如关闭应用程式 (this.Close()) 的操作。 他强调采用适当的命名惯例和最佳实践以保持代码的可读性和可扩展性的重要性。

選單和工具欄

Tim Corey 的最佳实践和提示

Tim Corey 强调通过将默认表单(Form1)重命名为一个更有意义的名称(如 MainForm, 1:02:01)来正确地开始一个 WinForms 项目。 这一步确保了整个项目的一致性,无缝更新代码库中的引用。

自定义表单属性

接下来,Tim 强调早期自定义表单属性的重要性。 调整表单本身的 'Text' 属性以反映其用途(例如,"Main Form by Tim Corey")提升在 Visual Studio 环境中的清晰度和组织性。 此外,合理设定字体大小(通常在14-18点之间)和表单大小(宽度和高度)以确保可读性,同时不扭曲其他控件的布局。

管理控制项目属性

Corey 指出在控件添加之後更改全表单設定时,默认控件属性的陷阱。 然后他将一个标签、文本框和一个按钮添加到表单上,显示它自动选择了表單所选定的字体大小。 他展示了如何修改字体大小影响所有控件,鼓励开发人员尽早プリン这类设置以避免日后出现意外的布局变化。 如果您改变了每个控件的属性值,则不会采用表单的默认值 (1:06:33)。

控件命名惯例

Tim 的视频中的一个关键收获是使用有意义的控件命名惯例。 Corey 主张使用 camelCase 来表示变量(firstNameLabel, firstNameTextBox)并在结尾附上控件名称,而不是使用传统的 "lblFirstName" 或 "txtFirstName"。

事件处理与命名惯例

Tim 提倡的一个值得注意的实践是对控件命名和事件处理的一致处理。 通过从,一开始就直观地命名控件(sayHelloButton、firstNameTextBox),开发者可以精简事件处理。 这种方法防止在不同表单中处理多个事件时的混淆,增强可维护性。

他通过展示将按钮命名为适当名称与将其留为默认如"button1、button2"等之间的区别,说明这种方法与现代编码实践对齐,快速搜索和提高代码可读性,使其更易于一目了然地理解每个控件的目的。

实现标签顺序和无障碍访问

另一个覆盖的重要方面是设置控件的标签顺序。 Tim 解释了如何使用 TabIndex 属性,以确保用户可以通过 Tab 键以逻辑方式导航表单。 这不仅提升用户体验,还改善了依赖键盘导航的用户的无障碍访问。

在表单之间传递数据

Tim 扩展了 WinForms 的功能,谈到在多个表单之间传递数据。 他展示了如何在表单中定义构造函数以便于数据交换。 这种技术允许开发者通过特定数据初始化新表单,增强应用程式设计的灵活性。

結論

Tim Corey 的 .NET 6 Windows Forms 教程是一个对任何学习用C#进行桌面应用开发的人来说都是有价值的资源。 视频涵盖了从基础设置到高级控件和最佳实践的广泛主题,为创建专业的 Windows Forms C# 应用程序打下了坚实的基础。

对于更详细的解说,包括更多的背景和额外的动手编码示例,您可以在这里观看 Tim Corey 的完整教程视频 here

Hero Worlddot related to 創建C#應用程序
Hero Affiliate related to 創建C#應用程序

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我