C#donds';不能使用树类
我曾尝试使用从Class Tree.cs到Form1.cs的接口回调函数,但它根本不执行任何操作。这是我的密码: Tree.cs中的函数C#donds';不能使用树类,c#,lambda,callback,C#,Lambda,Callback,我曾尝试使用从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);
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);
}
}
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);
}
公共作废打印(IOnQuery查询,节点)
{
如果(node==null)node=Top;
if(node.Left!=null)
{
打印(查询,节点,左侧);
query.GetDataItem(节点);
}
其他的
{
query.GetDataItem(节点);
}
if(node.Right!=null)
{
打印(查询,节点.右侧);
}
}
Form1.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);
}
}
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);
}
public分部类Form1:Form,IOnQuery
{
公共void GetDataItem(节点)
{
listBox1.Items.Add(node.Item.ToString());
}
}
我的界面类
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);
}
}
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(节点);
}
如果希望每次调用GetDataItem时都进行打印,可以使用事件
在Form1
中,使用参数IOnQuery query
和节点创建如下事件
public event Action<IOnQuery<T>, Node<T>> OnDataItemGet;
其中tree
是树对象
现在您所要做的就是,使GetDataItem
触发事件。
可以通过在GetDataItem
中添加一行来完成此操作:
OnDataItemGet?.Invoke(query, node);
您如何在树中调用Print
?请出示你的密码。我真的很感激!非常感谢你!