如何在c#中从另一个类调用方法?
在C#中,我有一个类,其方法如下:如何在c#中从另一个类调用方法?,c#,wpf,canvas,C#,Wpf,Canvas,在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 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");
}
}
}
此函数允许我将项目成功添加到画布。现在我想在另一个不同的类中调用此方法,如下所示:
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);
当从
addLayer
类调用display
方法时,我想这并不指向活动画布。但即使在大规模的互联网搜索之后,我也找不到任何解决方案。有什么帮助吗?在所示的示例中,我猜canvas是一个UserControl,您的目标是在调用add()
方法时向该UserControl添加一个项。但是在当前的示例中,在addlayer
类中,您已经创建了一个全新的画布,并在其中添加了一个项目。只要您将子对象添加到一个全新的画布
,该画布不会显示,该方法就可以工作。解决方法是将显示的画布实例传递给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()时,您将向显示的画布添加一个项目项目和项目ID都不同??如何调用addLayer
实例?(顺便说一句,这听起来更像是一个方法名而不是类名)是的,itemID和item是不同的。“item”是另一个名为“DesignerItem”的类类型,itemID是一个字符串
然后调用addLayer.add()
方法。new
意味着它将创建类的新实例,您需要研究如何传递对象,而不是创建一个新实例谢谢您的回答。现在又出现了另一个问题:它找不到“InitializeComponent()”方法。我的代码在“.cs”文件中,web上的各种回答都说应该有一个“.xaml”文件,我应该正确地将“x:Class”更改为名称空间。但是我这里没有这个类的“.xaml”文件。你知道吗?我想让你的canvas类从UserControl继承。虽然我想说已经有了一个Canvas
类,但我想这取决于你想做什么