在C#中,我有一个类如下的方法:
namespace ControlCenter
{
public partial class Canvas
{
...
public void display(string itemID)
{
... // here assign some properties to the item
this.Children.Add(item);
}
}
}
此功能允许我成功地将一个项目添加到我的画布。现在我想在另一个不同的类中调用此方法,如下所示:
namespace ControlCenter
{
public class addLayer
{
private ControlCenter.Canvas myCanvas = new ControlCenter.Canvas();
public void add()
{
myCanvas.display("1234");
}
}
}
但是这不能在我的画布上添加任何项目。通过调试,我怀疑问题应该在这一行:
this.Children.Add(item);
从display
类调用addLayer
方法时,this
并未指向活动画布。但即使在大众互联网搜索之后,我也找不到任何解决方案。有什么帮助吗?
答案 0 :(得分:1)
在显示的示例中,我猜测canvas是一个UserControl,您的目标是当您调用add()
方法时,向该用户控件添加一个项目。但是在addlayer
类的当前示例中,您创建了一个全新的画布,您已添加了一个项目。该方法确实有效,只是您将孩子添加到未显示的全新canvas
。解决这个问题的方法是将显示的画布实例传递给addlayer
类。在InitialiseComponent()方法之后。
像这样...
namespace ControlCenter
{
public partial class Canvas : UserControl
{
public Canvas
{
InitialiseComponent();
addLayer.myCanvas = this;
}
public void display(string itemID)
{
... // here assign some properties to the item
this.Children.Add(item);
}
}
}
namespace ControlCenter
{
public static class addLayer
{
private static ControlCenter.Canvas myCanvas;
public static void add()
{
myCanvas.display("1234");
}
}
}
现在,当您调用addLayer.add()时,您将向显示的画布添加项目