You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PropertyGrid中首次打开颜色对话框导致面板绘图被清除的问题求助

PropertyGrid中首次打开颜色对话框导致面板绘图被清除的问题求助

我做了一个绘制旋轮线图案的应用,图案是画在一个Panel控件上的。生成图案用到的所有参数都放在一个类里,然后通过PropertyGrid来展示这些属性。其中有个笔颜色的属性,很方便的是点击它会弹出颜色对话框让我切换颜色。

但现在遇到个问题:第一次打开颜色对话框的时候,Panel上之前画的所有内容都会被清空,之后再切换颜色就完全正常了,想怎么改都行。

我加了跟踪语句,发现第一次打开颜色菜单的时候,窗体确实触发了Paint事件,我猜就是这个事件把Panel的内容清掉了。但第一次之后,再打开颜色对话框就不会触发Paint事件了。

有没有大佬知道怎么阻止第一次出现的这种清除问题?

我做了个简单的测试窗体,里面有按钮、Panel和PropertyGrid。点击按钮后Panel会被填充颜色,但第一次选颜色的时候,Panel就被清空了,之后就没问题了。

下面是测试代码:

public partial class Form1 : Form
{
    private PropertyClass propertyClass = new PropertyClass();

    public Form1()
    {
        InitializeComponent();
        propertyClass.PanelColor = Color.Green;
        propertyGrid1.SelectedObject = propertyClass;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Graphics g = panel1.CreateGraphics();
        g.FillRectangle(new SolidBrush(propertyClass.PanelColor), panel1.ClientRectangle);
        g.Dispose();
    }
}

public class PropertyClass
{
    public Color PanelColor { get; set; }
}

备注:内容来源于stack exchange,提问作者Hendrik Vis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:09:30