我尝试使用Class Tree.cs到Form1.cs的接口回调函数,但它根本不执行任何操作。这是我的代码:
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);
}
答案 0 :(得分:1)
如果您希望每次调用GetDataItem时都发生Print
,则可以使用事件。
在Form1
中,使用参数IOnQuery<T> query
和Node<T> node
创建此类事件。
public event Action<IOnQuery<T>, Node<T>> OnDataItemGet;
然后,您需要使用以下代码订阅查询:
OnDataItemGet += tree.Print;
tree
是您的树对象。
现在你所要做的就是让GetDataItem
解雇这个事件。
您可以通过向GetDataItem
添加一行来执行此操作:
OnDataItemGet?.Invoke(query, node);