C# WinForms資料儲存 — Tim Corey第15課探索Windows Form中的資料流
[[academy-video-youtube({"vid": "gpCrmbZR9yE", "start_time": "0", "title": "C# App Start To Finish Lesson 15 - Create Tournament Form Part 1", "creator": "Tim Corey", "length": "34m 39s"})]]
在C# WinForms應用程式中儲存和管理資料不僅僅是將控制項放在螢幕上。 這是在講述資料如何從資料庫或檔案移動到模型,然後在Windows表單中綁定、顯示和操作的過程。 在"從C#開始到完成"課程的第15課中,Tim Corey以非常實用的方式通過構建建立錦標賽表單帶領開發人員通過此過程。
在本文中,我們更深入地研究了和Tim在影片中解釋的一樣的C# WinForms資料儲存概念。 我們在Visual Studio中瀏覽他的步驟,跟踪他如何檢索資料,將其綁定到控件,除錯問題並驗證結果。
介紹建立錦標賽表單及其角色
在0:00,Tim Corey介紹了第15課,並解釋這個Windows表單是應用程式中的一個重要轉折點。 他指出,一旦這個表單完成,應用程式將大部分功能齊全。 儘管這個表單看起來很複雜,Tim向開發人員保證,系統已經支持大多數所需的功能。
他強調,到這個時候,早期的工作——模型、資料連接、表和模式——已經建立了一個堅實的基礎。 現在的目標是將資料連接到表單上,讓它可作為一個系統運作,而不是作為獨立的控制項。
檢查表單並修復早期問題
在1:10,Tim解釋說,每當他開始一個Windows表單時,他首先會查看表單的功能並將其分解為邏輯塊。 他立即注意到設計師中的一個小問題:兩個列表框有相同的標籤,這是由於複製貼上的錯誤。
Tim在繼續之前修復了標籤文字,並指出小的UI問題應在早期解決。 這一步強調了在向使用者顯示資料時,乾淨的設計和清晰度與程式碼同樣重要。
計劃資料塊和流動
在2:07,Tim概述了如果他沒有錄製影片,他通常會如何處理這個表單。 他解釋說,他會:
填充選擇團隊的下拉清單
填充所選團隊的列表框
連接新增團隊的動作
處理獎品
- 稍後處理建立和刪除操作
由於這是一個影片課程,Tim將幾個塊組合在一起。 這個計劃步驟很重要,因為它定義了資料在WinForms應用程式中如何在集合、控件和事件之間流動。
建立一個集合來儲存團隊資料
在3:45,Tim使用F7切換到程式碼視圖,通過解決方案資源管理器導航到表單的程式碼後檔。他解釋說,選擇團隊的下拉清單需要一個TeamModel對像集合。
他建立了一個List<TeamModel>,命名為availableTeams。 這個列表作為從資料源檢索到的資料的記憶體儲存。 Tim指出,目前它被初始化為一個新列表,但隨後會根據配置從資料庫或文字文件中填充。
這是一個關鍵時刻,Tim展示了WinForms是如何將資料儲存在集合中,而不是直接在控件中。
定義資料檢索契約
在5:01,Tim建立了一個名為GetTeamAll的方法。 他解釋這個方法符合項目中早期使用的模式,如GetPersonAll。 他將其新增到IDataConnection介面中,稱其為定義資料檢索方式的契約。
然後他在SQL和文字連接器中實現了這個方法。 Tim強調了一致性,解釋說遵循已建立的模式使系統更易於維護和理解。
使用儲存過程和表
在6:32,Tim導航到SQL Server並討論儲存過程。 他檢查了現有的過程並解釋了為何它們不適用於此案例。 由於錦標賽尚未存在,他建立了一個新的儲存過程,命名為spTeam_GetAll。
這個過程:
不接受任何參數
執行一個簡單的選擇語句
- 從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所演示的那樣。

