跨多个类实例 C# 存储和检索控件值
本文关键字:检索 控件 存储 实例 | 更新日期: 2023-09-27 18:33:11
我不是在寻求答案,而是在寻求创建更好解决方案的想法和建议。 我什至在寻找一些基本的面向对象设计理论的参考,因为我觉得这一定是一个常见的场景,但我不知道如何正确表达它以找到可靠的搜索结果。
我举了这个例子(我将省去代码,因为它很容易解释(:我有一个窗体包含一个树视图、一个按钮和一个文本框。 我还有一个类,TextClass,它有2个字符串:文本和名称。
单击按钮时:
- 创建一个新的树节点。为 TreeNode 分配一个唯一的名称(例如:"实例 1"(,并将其添加到树视图中
- 创建类的实例 TextClass。 为 TextClass.Name 分配唯一名称(例如:"实例 1"(
- 将 TextClass 的这个新实例添加到列表 TextClassList
树视图中单击节点时:
- 循环浏览列表 TextClassList,并找到与当前所选 TreeNode.Name 匹配的 TextClass.Name 字符串
- 然后设置:Textbox.Text = TextClass.Text
触发Textbox_TextChanged时:
- 遍历列表并找到与当前选定的 TreeNode 匹配的 TextClass.Name 字符串,TreeNode.Name
- 然后设置:TextClass.Text = Textbox.Text
所有这些都很好,但看起来...马虎。 我问是否有更好/正确的方法来存储和检索值。 如果这是OOP基础知识,我将不胜感激一些可以进行搜索的关键字。
谢谢道格
TreeNode 有一个属性Tag
可用于存储与此节点关联的数据。因此,您可以使用每个新创建的节点存储TextClass
实例。这样,您就不必维护额外的列表并将其与TreeNode同步。
我也不会依赖关联的显示名称:如果您希望名称可更改或允许两个节点具有相同的名称,则会遇到问题。
另一个问题是,如果没有Tag
财产,您将如何做到这一点。然后,我将使用字典将 TreeNode instanes 映射到 TextClass 实例。
因此,如果我要对此做出一般规则:
- 尝试尽可能使用实际引用,而不是字符串来引用实例。
- 不要使用显示名称进行标识