我做了自己的控件,这个控件允许加载图像。它里面预装了一些图像,我想让程序员使用这个控件来选择他们想要的图像。
我的第一次尝试是使用 a ImageList
,但由于它不接受 GIF 图像,我需要一个解决方法。该控件以PictureBox
.
我的问题是:有什么方法可以将图像作为属性公开给可视化 IDE,就像在不使用 Imagelist 的情况下ImageList
一样(选择ComboBox
带有一点预览的图像)?
我做了自己的控件,这个控件允许加载图像。它里面预装了一些图像,我想让程序员使用这个控件来选择他们想要的图像。
我的第一次尝试是使用 a ImageList
,但由于它不接受 GIF 图像,我需要一个解决方法。该控件以PictureBox
.
我的问题是:有什么方法可以将图像作为属性公开给可视化 IDE,就像在不使用 Imagelist 的情况下ImageList
一样(选择ComboBox
带有一点预览的图像)?
如果有人需要解决方案:
<TypeConverter(GetType(ImageKeyConverter))> _
<RelatedImageList("LoadingImageList")> _
<Editor("System.Windows.Forms.Design.ImageIndexEditor, System.Design", GetType(Drawing.Design.UITypeEditor))> _
<Description("Imagen de carga que se mostrará en el control cuando se indique.")> _
Public Property LoadingImageKey() As String
Get
Return sPic
End Get
Set(ByVal value As String)
sPic = value
End Set
End Property
为了将 GIF 图像添加到 ImageList 中,我将它们添加到资源中,并在创建控件时将它们加载到 Imagelist 中。我有一个辅助变量来保存 GIFS,并且图像与字符串键相关:
Private Sub SysInfoControl_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim result As Resources.ResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, True, True)
If pics.Count = 0 Then
For Each elem As DictionaryEntry In result
If elem.Value.GetType Is GetType(Bitmap) Then
pics.Add(elem.Key.ToString(), CType(elem.Value, Bitmap))
ImageList1.Images.Add(elem.Key.ToString(), CType(elem.Value, Bitmap))
End If
Next
If pics.ContainsKey(sPic) Then picBoxLoading.Image = pics(sPic)
End If
End Sub
结果示例: