0

我不是在寻求答案,而是在寻求创建更好解决方案的想法和建议。我什至在寻找一些基本的面向对象设计理论的参考,因为我觉得这一定是一个常见的场景,但我不知道如何正确地用它来找到可靠的搜索结果。

我提出了这个例子(我将省略代码,因为它很容易解释):我有一个包含一个树视图、一个按钮和一个文本框的表单。我还有一个类,TextClass,它有 2 个字符串:文本和名称。

单击按钮时:

  • 创建一个新的树节点。为 TreeNode 分配一个唯一名称(例如:“Instance1”)并将其添加到 Treeview
  • 创建类的一个实例,TextClass。将唯一名称(例如:“Instance1”)分配给 TextClass.Name
  • 将此 TextClass 的新实例添加到列表 TextClassList

在 Treeview 中单击节点时:

  • 遍历列表 TextClassList,找到与当前选定的 TreeNode.Name 匹配的 TextClass.Name 字符串
  • 然后设置:Textbox.Text = TextClass.Text

当触发 Textbox_TextChanged 时:

  • 遍历列表并找到与当前选定的 TreeNode、TreeNode.Name 匹配的 TextClass.Name 字符串
  • 然后设置:TextClass.Text = Textbox.Text

所有这些工作都很好,但是看起来……草率。我在问是否有更好/正确的方法来处理这种存储和检索值的方法。如果这是一个 OOP 基础,我会很感激一些我可以做一些搜索的关键字。

谢谢你,道格

4

1 回答 1

0

TreeNode 具有Tag可用于存储与该节点关联的数据的属性。TextClass因此,您可以使用每个新创建的节点存储实例。这样您就不必维护额外的列表并将其与 TreeNode 同步。

我也不会依赖关联的显示名称:如果您希望名称是可更改的,或者如果允许两个节点具有相同的名称,则会遇到问题。

Tag另一个问题是,如果那里没有财产,你将如何做到这一点。然后,我将使用 Dictionary 将 TreeNode 实例映射到 TextClass 实例。

因此,如果我要对此做出一般规则:

  • 尽可能使用真实引用而不是字符串来引用实例。
  • 不要使用显示名称进行识别
于 2012-05-05T10:28:09.377 回答