关于控件子属性更新的问题

killertang 2005-06-26 04:51:59
我写了个控件,但有个问题,就是在控件中用到了子属性,
如下例子:
public class CGraph
{

private CBackGround mBackGround=new CBackGround();
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CBackGround BackGround
{
set
{
if(this.mBackGround!=value)
{
this.mBackGround=value;
//更新图形
this.Refresh();
}
}
get{return this.mBackGround;}
}
}

[Serializable]
[TypeConverter(typeof(ExpandableObjectConverter))]
public class CBackGround
{
private mColor=Color.Red;
public Color Color
{
set{this.mColor=value;}
get{return this.mColor;}
}
private bool mRefreshFlag=false;
public bool RefreshFlag
{
set{this.mRefreshFlag=value;}
get{return this.mRefreshFlag;}
}
}
这样我实现了控件的子属性功能,也就是一个类属性了,在拖入控件到窗体的时候,我就可以
在属性框设定 BackGround 的属性了,但是当我在界面属性框修改子属性的值的时候比如 BackGround.Color 属性 修改了Color的颜色,但控件不会立即更新,因为修改的是BackGround 属性 的子属性Color,而不是BackGround 属性 所以无法执行this.Refresh(),控件无法更新,有没有办法,在修改子属性也通知其父属性发生的值的改变呢?,我尝试过NotifyParentProperty(true),还有
RefreshProperties(RefreshProperties.Repaint) 都不行,请问高手如何解决这个问题!
...全文
28 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
killertang 2005-06-28
  • 打赏
  • 举报
回复
请高手帮忙
  • 打赏
  • 举报
回复
up
yiyi0518 2005-06-28
  • 打赏
  • 举报
回复
偶也不懂, up~~~

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧