只是想知道人们会怎么做。假设我有一个创建并填充 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/