C#中的回调函数无法与树类一起工作
问题描述:
我试图将类Tree.cs中的接口回调函数用于Form1.cs,但它根本不执行任何操作。这里是我的代码:C#中的回调函数无法与树类一起工作
在Tree.cs函数
public void Print(IOnQuery<T> query,Node<T> node)
{
if (node == null) node = Top;
if (node.Left != null)
{
Print(query,node.Left);
query.GetDataItem(node);
}
else
{
query.GetDataItem(node);
}
if (node.Right != null)
{
Print(query,node.Right);
}
}
Form1.cs的
public partial class Form1 : Form, IOnQuery<Car>
{
public void GetDataItem(Node<Car> node)
{
listBox1.Items.Add(node.Item.ToString());
}
}
我的接口类
public interface IOnQuery<T>
{
void GetDataItem(Node<T> node);
}
答
如果每次调用GetDataItem时都想要发生Print
,则可以使用事件。
在Form1
中,使用参数IOnQuery<T> query
和Node<T> node
创建一个类似的事件。
public event Action<IOnQuery<T>, Node<T>> OnDataItemGet;
然后,你需要订阅查询的代码,如:
OnDataItemGet += tree.Print;
哪里tree
是你的树对象。
现在你所要做的就是让GetDataItem
开火。
OnDataItemGet?.Invoke(query, node);
+0
我真的很感激!非常感谢! –
你怎么叫'Print'树: 你可以通过添加一行
GetDataItem
做到这一点?请显示你的代码。 – CodingYoshi