C# 在类之间传递数据

标签 c# class

只是想知道人们会怎么做。假设我有一个创建并填充 Treeview 的类,然后将其添加到 Winform。

我有另一个类依赖于 Treeview 中的数据。因此,例如,当用户单击 Treeview 中的特定节点时,类 b 需要该节点保存的信息,以便它可以执行一些计算并显示结果。

简单地将对 Treeview 的引用传递给第二个类,还是只传递它需要的数据更好?或者将 Treeview 设置为静态并使用事件以便新类可以在单击节点时直接访问 Treeview 是否可以?

谢谢。

最佳答案

我会在持有 TreeView 的类中引发一个事件。也就是说,定义一个委托(delegate)和您的类具有的事件。然后依赖类可以订阅该事件并对事件中包含的数据进行操作。据我了解你的问题,依赖类不需要对 TreeView 做任何事情,因此不应该知道 TreeView 。

public delegate void YouControlHandler(int relevantData1, string relevantData2);
public class ClassContainingTreeView
{
    public event YouControlHandler TreeViewClickedEvent;
    public void OnTreeViewClicked(object sender, EventArgs)
    {
        // Handle request locally first and extract relevantData1/2
        if(TreeViewClickedEvent != null)
            TreeViewClickedEvent(relevantData1, relevantData2);
    }
}

public class DependingClass
{
     ClassContainingTreeView yourObject = new ClassContainingTreeView();

     public DependingClass()
     {
         yourObject.TreeViewClickedEvent += new YouControlHandler(EventHandler);
     }

     protected void EventHandler(int relevantData1, string relevantData2)
     {
             // Handle event
     }
}

关于C# 在类之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615656/

相关文章:

c# - 通用打字困惑

c# - 仅在“编辑并继续”中出现错误 CS7038(无法发出模块)

c# - 使用 MigraDoc 生成 DOC 或 DOCX

c++ - 派生类错误

Python:如何跨引用强制更新类变量

python - 重新评估/更新在 Python 中作为类变量传递的条件表达式的真值的最佳方法

c# - 如何更改 List<long> 的每个元素?

c# - 如何使用 visual studio 将某些行排除在构建之外?

php - 函数中使用的 PDO 范围

javascript - 类用于对齐ckeditor