gpt4 book ai didi

c# - 在 PropertyGrid 中使用自定义颜色选择器对话框

转载 作者:行者123 更新时间:2023-12-02 04:47:53 27 4
gpt4 key购买 nike

在 PropertyGrid 中 default color picker dialog不允许设置颜色的 alpha 值。

我已经做了 my own color picker dialog并想在 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);
}
}
}

这是它在属性网格中的样子:

screenshot1

当我点击它的按钮时,它将打开 custom color dialog .

但还有一个问题我无法解决。我不能将 Color 结构与此 UITypeEditor 一起使用,因此创建了 RGBA 类。当我使用颜色结构时,它看起来像这样:

screenshot2

我想我会为此打开另一个问题:Custom ColorEditor does not work properly on Color struct

关于c# - 在 PropertyGrid 中使用自定义颜色选择器对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com