跳至页脚内容
Iron Academy Logo
C# 应用程序
C# 应用程序

其他类别

C# WinForms存储数据 — 通过Tim Corey(第15课)理解数据流动在Windows窗体中的应用

Tim Corey
34m 39s

在C# WinForms应用程序中存储和管理数据不仅仅是将控件放置在屏幕上的问题。 它是关于数据如何从数据库或文件移动到模型中,然后在Windows窗体中绑定、显示和操作。 在《C#从头到尾》课程的第15课中,Tim Corey通过构建创建锦标赛表单,非常实际地引导开发人员完成此过程。

在这篇文章中,我们深入研究C# WinForms存储数据概念,完全按照Tim在视频中解释的那样。 我们通过他在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对象的集合。

他创建了一个名为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控件,通过设置:

  • 数据源

  • 显示成员

Tim仔细选择TeamName作为显示属性,确保显示给用户的是有意义的文本而不是对象引用。

调试错误并验证数据

在15:17,Tim运行应用程序并遇到与缺少参数相关的错误。 他冷静地阅读信息,解释调试是开发过程的正常部分。

他通过传递所需参数并将命令类型设置为存储过程来解决此问题。 当下拉列表仍然出现为空时,Tim进一步调查。

在22:35,他意识到InitializeLists方法从未被调用。 一旦添加到构造函数中,数据就会正确显示。 Tim利用这个时刻强调审查系统中各部分如何配合的重要性。

在内存中管理选定的团队

在23:54,Tim创建了另一个名为selectedTeams的列表。 此集合存储为锦标赛选择的团队。 他解释这种模式与项目中早期的表单完全相同,强化了重用性和一致性。

他将此列表绑定到另一个列表框,使用相同的显示成员,使显示选定项目变得容易。

连接按钮事件并移动数据

在28:07,Tim在设计器中双击添加团队按钮,生成点击事件。 他从下拉菜单中检索选定的项目,将其转换回TeamModel,并验证其不为null。

然后他从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 小时在线。
聊天
电子邮件
打电话给我