
C#重载控件,修改父类属性的问题? 10
小弟刚学C#遇到一个问题,我继承了一个控件,自BUTTON的,可是怎么才可以改变父类默认的背景颜色呢,我在构造函数里面设置了:publicmybutton(){Initi...
小弟刚学C# 遇到一个问题,我继承了一个控件,自BUTTON 的,可是怎么才可以改变父类默认的背景颜色呢,我在构造函数里面设置了:
public mybutton()
{
InitializeComponent();
base.BackColor = System.Drawing.Color.Red;
}
当把这个子控件拉到窗口上时,颜色只是闪一下就恢复到父类的默认颜色去了.非的需要重载WndProc 截获消息的方法来处理啊? 自定义控件的初始化,不是在构造函数里面设置吗?
之前以为重载 BACKCOLOR 属性可以,结果也不行.
base.TEXT 和 base.COLOR 都是这样,希望高手指点一下!!
谢谢大家的回复,你们试试吧,好像是VS2008的BUG 呵呵!!!
只有继承BUTTON 类出现这个问题 ,,,"Windows 窗体设计器生成的代码"中,VS2008始终会出现
this.mybutton1.UseVisualStyleBackColor = true; 始终是TRUE 哪怕在继承的控件中设置成FALSE 设计器一样会变成把它变成TRUE
也就是始终不能关闭按钮的"按视觉样式重绘控件". VS2010 没有这个问题,但是我还是想解决它.不知有人愿意试试吗? 展开
public mybutton()
{
InitializeComponent();
base.BackColor = System.Drawing.Color.Red;
}
当把这个子控件拉到窗口上时,颜色只是闪一下就恢复到父类的默认颜色去了.非的需要重载WndProc 截获消息的方法来处理啊? 自定义控件的初始化,不是在构造函数里面设置吗?
之前以为重载 BACKCOLOR 属性可以,结果也不行.
base.TEXT 和 base.COLOR 都是这样,希望高手指点一下!!
谢谢大家的回复,你们试试吧,好像是VS2008的BUG 呵呵!!!
只有继承BUTTON 类出现这个问题 ,,,"Windows 窗体设计器生成的代码"中,VS2008始终会出现
this.mybutton1.UseVisualStyleBackColor = true; 始终是TRUE 哪怕在继承的控件中设置成FALSE 设计器一样会变成把它变成TRUE
也就是始终不能关闭按钮的"按视觉样式重绘控件". VS2010 没有这个问题,但是我还是想解决它.不知有人愿意试试吗? 展开
6个回答
展开全部
是不是BUG我不知道,但是你上面的写法肯定是错误的
Button是在Form中的是不是?虽然你是在
public mybutton()
{
InitializeComponent();
base.BackColor = System.Drawing.Color.Red;
}
将mybutton的背景颜色改了,但是你有没有想过,初始化窗体的时候,mybutton的属性是由谁主导的呢?是mybutton的FindForm(父容器,这里就是Form),所以你在它的父容器还没有初始化的时候改了它的颜色是没有用的,在她的父窗体初始化后,mybutton的颜色就会变成和父容器一样的了,是不是?所以你要是想改它的颜色,必须是在它的父容器初始化后才行!希望我的回答你能满意!
Button是在Form中的是不是?虽然你是在
public mybutton()
{
InitializeComponent();
base.BackColor = System.Drawing.Color.Red;
}
将mybutton的背景颜色改了,但是你有没有想过,初始化窗体的时候,mybutton的属性是由谁主导的呢?是mybutton的FindForm(父容器,这里就是Form),所以你在它的父容器还没有初始化的时候改了它的颜色是没有用的,在她的父窗体初始化后,mybutton的颜色就会变成和父容器一样的了,是不是?所以你要是想改它的颜色,必须是在它的父容器初始化后才行!希望我的回答你能满意!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过继承类是修改不了父类的属性的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要写在构造方法里面,应该重写BackColor属性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
研究一下 子类和父类的 构造函数调用关系
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过继承类是修改不了父类的属性的.
但是你可以用重写的方法写!具体怎么写我就不帮你写了!
但是你可以用重写的方法写!具体怎么写我就不帮你写了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询