我自己控制,这个控件允许有一个图像加载。它有一些预先加载的图像,我想让程序员使用这个控件来选择他们想要的图像。
我的第一次尝试是使用ImageList
,但由于它不接受GIF图像我需要一个workarround。该控件在PictureBox
中显示GIF。
我的问题是:有任何方法可以将图像作为属性公开给可视IDE,就像ImageList
一样(使用一点预览选择像ComboBox
这样的图像)而不使用图像列表?
答案 0 :(得分:1)
如果有人需要解决方案:
<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中。我有一个辅助var来保存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
结果示例: