【发布时间】:2018-11-09 02:08:23
【问题描述】:
使用 C# 和 Visual Studio 2017。
基本上,我正在设计一个允许用户预订座位的程序。我可以通过强制(或多或少)使其工作,但必须有更好的方法。
每个按钮代表一个座位,点击后 - 如果座位尚未预订 - 用户将填写他们的信息并能够预订座位。如果座位已被预订,它将显示之前预订座位的人的详细信息(名字、姓氏等) - 我目前已将其存储在数组中。
有没有办法将每个按钮与数组中的一个对象关联起来?预订座位很容易,但单击预订座位以显示详细信息(或删除预订并释放座位)是我认为我可以比目前拥有的更高效的部分。
即。如果单击座位 A1 并输入详细信息,则该座位将被保留。后来,其他座位被保留。如果我想返回查看 A1 或删除预订,如何将按钮 A1 与我存储在数组中的数据相关联。
【问题讨论】:
-
不要使用数组。构建一个引用所有所需详细信息的专用类,创建一个
LIst<SpecializedClass>并为您创建的每个Button添加一个new SpecializedClass()以及相关详细信息。然后,您可以通过任何方式过滤/搜索LIst<SpecializedClass>:按按钮(使用其名称、标签值、TabIndex 等)、人名、座位号...任何由类属性引用的内容。跨度> -
问题主题和您的个人资料暗示这是一项课堂作业。因此,您可能对允许使用的数据结构有限制。您已经表明您正在使用一个对象数组。如果您只能使用数组,则应在问题中说明这一点,以免我们浪费时间提出不相关的建议。
-
您可以使用按钮的
Tag属性。但我不会在数组中存储任何东西。为什么不将seat ID存储在按钮的标签中,并在单击时使用标签中的Seat ID从数据库中获取您需要的信息? -
@TnTinMn 这是一项任务,但我们对允许使用的内容没有任何限制,如果有任何此类限制(如您所说),我会提到它们。重点是 UI 设计,但显然我希望代码从“良好设计”的角度尽可能地实用。
-
@Jimi 您能否详细说明我将如何实现这一点?所有按钮都有一个
Tag value,并且我创建了一个包含座位详细信息的类(我最初将这些存储在数组中,但列表听起来要好得多)。这个问题可能看起来很傻,但我什么时候创建new SpecializedClass()?我会在程序开始时为每个按钮/座位初始化一个吗?
标签: c# winforms class object button