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

其他分類

C# WinForms 存儲數據—來自 Tim Corey 第 15 課的 Windows 表單數據流解釋

Tim Corey
34m 39s

在C# WinForms應用程式中存儲和管理數據不只是將控件放置在螢幕上。 這是關於數據如何從資料庫或檔案移動到模型,然後在Windows Form中被繫結、顯示和操作。 在"C#從開始到完成"課程的第15課中,Tim Corey以非常實際的方式通過構建創建比賽表單來引導開發者完成此過程。

在本文中,我們將更深入地瞭解在Tim的影片中展示的C# WinForms數據存儲概念。 我們通過Visual Studio跟蹤他的步驟,看看他如何檢索數據,將其繫結到控件,調試問題以及驗證結果。

介紹創建比賽表單及其角色

在0:00,Tim Corey介紹了第15課,並解釋這個Windows Form是應用程式中的一個重要轉折點。 他指出,一旦這個表單完成,應用程式將會大部分功能正常。 即使這個表單看起來很復雜,Tim向開發者保證系統已經支持大多數所需功能。

他強調到了這個程度,早期的工作——模型、數據連接、表格和模式——已經建立了強大的基礎。 現在的目標是將數據連接到表單,使其作為一個系統運行,而不是作為孤立的控件。

審查表單和修復早期問題

在1:10,Tim解釋道,每當他開始一個Windows表單時,他首先會審查這個表單的功能並將其分解為邏輯部分。 他立即在設計師中注意到一個小問題:由於複製粘貼錯誤,兩個列表框有相同的標籤。

Tim在前進之前修復了標籤文字,指出應該早期解決小的UI問題。 這一步強調了當數據顯示給用戶時,清晰的設計和清晰度與代碼同樣重要。

規劃數據塊及流動

在2:07,Tim概述了如果他沒有錄製視頻時,他通常會如何處理這個表單。 他解釋說,他將會:

  • 填充選擇團隊下拉選單

  • 填充已選團隊列表框

  • 連接添加團隊動作

  • 處理獎品

  • 稍後處理創建和刪除動作

因為這是一個視頻課程,Tim將幾個塊組合在一起。 這個規劃步驟至關重要,因為它定義了數據在WinForms應用程式中集合、控件和事件之間的流動方式。

創建一個集合來存儲團隊數據

在3:45,Tim使用F7切換到代碼視圖,通過解決方案資源管理器進入表單的代碼後置文件。他解釋說,選擇團隊下拉選單需要一個TeamModel對象的集合。

他創建一個名為availableTeams的List。 此列表用作從數據源檢索數據的內存存儲。 Tim指出,目前它被初始化為新列表,但稍後將根據配置從資料庫或文本文件中填充。

這是一個關鍵時刻,Tim展示了WinForms如何在集合中存儲數據,而不是直接在控件中。

定義數據檢索合同

在5:01,Tim創建了一個名為GetTeamAll的方法。 他解釋說,這種方法符合項目中早期使用的模式,比如GetPersonAll。 他將其添加到IDataConnection界面,稱其為定義數據檢索方式的合同。

然後,他在SQL和文本連接器中實現此方法。 Tim強調一致性,解釋遵循既定模式使系統更容易維護和理解。

與存儲過程和表格一起工作

在6:32,Tim導航到SQL Server並討論存儲過程。 他審查現有過程,解釋為什麼它們不適用於這種情況。 由於比賽尚不存在,他創建了一個新存儲過程名為spTeam_GetAll。

此過程:

  • 不帶參數

  • 執行簡單的select語句

  • 從Teams表中檢索所有團隊記錄

Tim執行此過程並驗證返回的數據。 此步驟確保數據源在將其繫結到表單之前正常運行。

使用循環填充相關數據

在8:45,Tim解釋單獨檢索團隊還不夠。 每個團隊還包含成員列表,這些成員存儲在一個單獨的表格中。 他展示了TeamModel包含一個需要手動填充的TeamMembers集合。

為此,Tim使用foreach循環遍歷每個團隊。對於每個團隊實例,他調用另一個存儲過程,通過團隊ID檢索成員。 此過程構建了一個完全填充的帶有相關數據的模型。

Tim指出,此步驟確保應用程式擁有完整的數據對象,而非部分記錄。

將存儲數據連接到Windows表單

在12:25,Tim返回創建比賽表單,使用以下方式用實際數據調用替換臨時列表:

GlobalConfig.Connection.GetTeamAll()

此行使用配置的連接字符串檢索數據並將其存儲在內存中。

然後,他創建一個InitializeLists方法,將數據繫結到UI控件上,設置:

  • DataSource

  • DisplayMember

Tim仔細選擇了TeamName作為顯示屬性,以確保用戶看到有意義的文本而不是對象引用。

調試錯誤與驗證數據

在15:17,Tim運行應用程式並遇到與缺少參數相關的錯誤。 他冷靜地閱讀信息,解釋說調試是開發過程的正常部分。

他通過傳遞所需參數並將命令類型設置為存儲過程來修復此問題。 當下拉選單仍然顯示為空時,Tim進一步調查。

在22:35,他意識到從未調用InitializeLists方法。 一旦添加到構造函數中,數據正確顯示。 Tim利用這個時刻強調審查系統中各部分如何組合的重要性。

在內存中管理已選團隊

在23:54,Tim創建另一個名為selectedTeams的列表。 此集合存儲為比賽選擇的團隊。 他解釋這種模式與項目中早期的表單相同,加強了重用性和一致性。

他將此列表繫結到另一個列表框上,使用相同的顯示成員,使其易於顯示已選項目。

接線按鈕事件及移動數據

在28:07,Tim在設計器中雙擊添加團隊按鈕,生成點擊事件。 他從下拉選單中檢索所選項,將其轉回TeamModel,並驗證其不為空。

然後,他從availableTeams中移除團隊,將其添加到selectedTeams中並重新繫結兩個列表。 Tim解釋重新設置數據源可確保UI立即反映更改。

總結本課的數據存儲

在32:13,Tim總結了已完成的部分:

  • 從資料庫中檢索數據

  • 存儲在集合中

  • 繫結到WinForms控件

  • 在列表之間移動

  • 調試和驗證

他指出剩下的工作將基於此基礎。

Tim Corey的最後想法

Tim在視頻的結尾鼓勵開發者繼續練習。 他提醒觀眾,了解數據如何在C# WinForms應用程式中存儲、檢索和顯示,對於構建可靠系統至關重要。

這節課展示了開發者如何處理真實數據、真實錯誤和真實工作流程——一步步地,正如Tim Corey所展示的那樣。

Hero Worlddot related to C# WinForms 存儲數據—來自 Tim Corey 第 15 課的 Windows 表單數據流解釋
Hero Affiliate related to C# WinForms 存儲數據—來自 Tim Corey 第 15 課的 Windows 表單數據流解釋

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

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

鋼鐵支援團隊

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