C# передача данных между классами
Просто интересно, как люди будут идти по этому поводу. Допустим, у меня есть один класс, который создает и заполняет Treeview, который затем добавляется в Winform.
У меня есть еще один класс, который зависит от данных в Treeview. Так, например, когда пользователь щелкает на определенном узле в Treeview, классу b требуется та информация, которую узел содержит, чтобы он мог выполнить некоторые вычисления и отобразить результат.
Не лучше ли просто передать ссылку на Treeview ко второму классу или только к тем данным, которые ему нужны? Или было бы хорошо установить Treeview как статический и использовать события так, чтобы новый класс мог получить доступ к treeview непосредственно, когда узел нажат?
Спасибо.
2 ответов:
Я бы вызвал событие в классе, который содержит treeview. То есть определите делегат и событие, которое имеет ваш класс. Затем зависящий класс может подписаться на это событие и действовать на основе данных, включенных в событие. Как я понимаю ваш вопрос зависящий класс не должен ничего делать с 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 } }
Просто передайте данные.
Вы не хотите, чтобы класс был тесно связан с элементом управления пользовательского интерфейса.
В качестве отступления, почему вы думаете, что вам нужно сделать TreeView статическим, чтобы потреблять события из него?
Вы можете подписаться на событие из объектов, которые не являются статическими.
Comments