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
相关产品推荐
相关产品推荐

