在.Net Winforms应用程序中共享图像列表

Bar*_*aal 3 .net c# static share

我想要一个图像列表的实例,我希望在我的应用程序中的所有表单(工具栏的图标)上共享.我已经看过之前提出的问题,人们提出了一个用户控件(这是不好的,因为它会创建图像列表的多个实例,从而创建不必要的对象和开销).

设计时间支持会很好,但不是很重要.

在Delphi中,这非常简单:创建一个DataForm,共享图像,然后就可以了.

那是否有C#/.Net/Winforms变体?

Fre*_*örk 5

你可以简单地让一个静态类保存一个ImageList实例,并在你的应用程序中使用它,我想:

public static class ImageListWrapper
{
    static ImageListWrapper()
    {
        ImageList = new ImageList();
        LoadImages(ImageList);
    }

    private static void LoadImages(ImageList imageList)
    {
        // load images into the list
    }

    public static ImageList ImageList { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以从托管的ImageList加载图像:

someControl.Image = ImageListWrapper.ImageList.Images["some_image"];
Run Code Online (Sandbox Code Playgroud)

但是在该解决方案中没有设计时间支持.