C#在类之间传递数据

时间:2011-01-06 13:59:38

标签: c# class

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

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

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

感谢。

2 个答案:

答案 0 :(得分:6)

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

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
     }
}

答案 1 :(得分:5)

只需传递数据。

您不希望类与UI控件紧密耦合。


顺便说一下,为什么你认为你需要使TreeView静态以便从中消耗事件?

您可以从非静态对象订阅事件。