如何从c#中的另一个类调用方法

本文关键字:另一个 调用 方法 | 更新日期: 2023-09-27 18:25:27

在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);

当从addLayer类调用display方法时,我想this并没有指向活动画布。但即使在大规模的互联网搜索之后,我也找不到任何解决方案。有什么帮助吗?

如何从c#中的另一个类调用方法

在所示的示例中,我猜画布是一个UserControl,您的目标是在调用add()方法时向该用户控件添加一个项。但在addlayer类的当前示例中,您已经创建了一个全新的画布,并向其中添加了一个项目。该方法确实有效,它只是将子对象添加到一个未显示的全新canvas中。解决方法是将显示的画布实例传递给addlayer类。InitializeComponent()方法之后。

就像这样…

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()时,您将向显示的画布中添加一个项目