在PropertyGrid默认颜色选择器对话框中,不允许设置颜色的Alpha值。
我已经创建了自己的颜色选择器对话框,并想在PropertyGrid中使用它,但不确定如何操作。
我设法在属性网格中使用我的自定义颜色选择器对话框,并在此处复制它的代码,以防某些人也需要它:
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace HelpersLib
{
public class MyColorEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (value.GetType() != typeof(RGBA))
{
return value;
}
IWindowsFormsEditorService svc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
if (svc != null)
{
using (DialogColor form = new DialogColor((RGBA)value))
{
if (svc.ShowDialog(form) == DialogResult.OK)
{
return form.NewColor.RGBA;
}
}
}
return value;
}
public override bool GetPaintValueSupported(ITypeDescriptorContext context)
{
return true;
}
public override void PaintValue(PaintValueEventArgs e)
{
using (SolidBrush brush = new SolidBrush((RGBA)e.Value))
{
e.Graphics.FillRectangle(brush, e.Bounds);
}
e.Graphics.DrawRectangleProper(Pens.Black, e.Bounds);
}
}
}
这就是它在属性网格中的外观:
当我单击它的按钮时,它将打开自定义颜色对话框。
但是仍然有一个我无法解决的问题。我不能将Color结构体与此UITypeEditor一起使用,因此创建了RGBA类。当我使用颜色结构时,它看起来像这样:
我猜我将打开另一个问题:自定义ColorEditor在Color结构上无法正常工作
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句