I've created a button class (MyButton) that derives from
System.Windows.Forms.Button.
In the constructor, I set the ForeColor and BackColor properties of the
button with a static color like this:

this.ForeColor = StaticForeColor
this.BackColor = StaticBackColor

It's really important that the Designer Generated Code doesn't set the
ForeColor and BackColor at design time. Is there a way to prevent the
Designer Generated Code from doing this?
Let me explain why. My idea behind creating a class this way, is so I can
set the colors of the button for the whole class dynamically in my project
when the project is loaded like this:

MyButton.StaticForeColor = Color.Blue;

The problem is, the Designer Generated Code automatically puts in lines
like this:

this.MyButton1 = new MyNameSpace.MyButton();

//
// MyButton1
//
...
this.btnBuildingView.BackColor = System.Drawing.Color.Black;
this.btnBuildingView.ForeColor =
System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
((System.Byte)(255)));

And even though the button class (MyButton) the StaticForeColor is not
initialized, it's just:

public static Color StaticForeColor;

The Designer Still generates code for the ForeColor and BackColor in the
//
// MyButton1
//
section because I set those values in the constructor.

So, during runtime, no matter what I change the StaticForeColor to, the
button will have it's ForeColor set to the StaticForeColor but immediately
afterwards, it will be reset to:

this.btnBuildingView.ForeColor =
System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
((System.Byte)(255)));

or something like it.

Thanks
Steve

Re: Prevent Designer Generated Code by Opher

Opher
Fri Sep 03 23:15:26 CDT 2004

In your class (MyButton) you can override the 'set' function of the
ForeColor & BackColor properties somthing like:
public override Color BackColor {
set {}
}
and in your constructor use 'base' to set the color:
base.ForeColor = StaticForeColor
base.BackColor = StaticBackColor
This way the user of your control can't change the color in code.

"steve" <csufsurfer@yahoo.com> wrote in message
news:%23yvu4CfkEHA.3772@TK2MSFTNGP14.phx.gbl...
> I've created a button class (MyButton) that derives from
> System.Windows.Forms.Button.
> In the constructor, I set the ForeColor and BackColor properties of the
> button with a static color like this:
>
> this.ForeColor = StaticForeColor
> this.BackColor = StaticBackColor
>
> It's really important that the Designer Generated Code doesn't set the
> ForeColor and BackColor at design time. Is there a way to prevent the
> Designer Generated Code from doing this?
> Let me explain why. My idea behind creating a class this way, is so I can
> set the colors of the button for the whole class dynamically in my project
> when the project is loaded like this:
>
> MyButton.StaticForeColor = Color.Blue;
>
> The problem is, the Designer Generated Code automatically puts in lines
> like this:
>
> this.MyButton1 = new MyNameSpace.MyButton();
>
> //
> // MyButton1
> //
> ...
> this.btnBuildingView.BackColor = System.Drawing.Color.Black;
> this.btnBuildingView.ForeColor =
> System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
> ((System.Byte)(255)));
>
> And even though the button class (MyButton) the StaticForeColor is not
> initialized, it's just:
>
> public static Color StaticForeColor;
>
> The Designer Still generates code for the ForeColor and BackColor in the
> //
> // MyButton1
> //
> section because I set those values in the constructor.
>
> So, during runtime, no matter what I change the StaticForeColor to, the
> button will have it's ForeColor set to the StaticForeColor but immediately
> afterwards, it will be reset to:
>
> this.btnBuildingView.ForeColor =
> System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
> ((System.Byte)(255)));
>
> or something like it.
>
> Thanks
> Steve
>
>
>
>




Re: Prevent Designer Generated Code by Sijin

Sijin
Sat Sep 04 02:07:50 CDT 2004

You might want to take a look at this
http://msdn.microsoft.com/library/en-us/dndotnet/html/custcodegen.asp?frame=true


Sijin Joseph
http://www.indiangeek.net
http://weblogs.asp.net/sjoseph



steve wrote:
> I've created a button class (MyButton) that derives from
> System.Windows.Forms.Button.
> In the constructor, I set the ForeColor and BackColor properties of the
> button with a static color like this:
>
> this.ForeColor = StaticForeColor
> this.BackColor = StaticBackColor
>
> It's really important that the Designer Generated Code doesn't set the
> ForeColor and BackColor at design time. Is there a way to prevent the
> Designer Generated Code from doing this?
> Let me explain why. My idea behind creating a class this way, is so I can
> set the colors of the button for the whole class dynamically in my project
> when the project is loaded like this:
>
> MyButton.StaticForeColor = Color.Blue;
>
> The problem is, the Designer Generated Code automatically puts in lines
> like this:
>
> this.MyButton1 = new MyNameSpace.MyButton();
>
> //
> // MyButton1
> //
> ...
> this.btnBuildingView.BackColor = System.Drawing.Color.Black;
> this.btnBuildingView.ForeColor =
> System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
> ((System.Byte)(255)));
>
> And even though the button class (MyButton) the StaticForeColor is not
> initialized, it's just:
>
> public static Color StaticForeColor;
>
> The Designer Still generates code for the ForeColor and BackColor in the
> //
> // MyButton1
> //
> section because I set those values in the constructor.
>
> So, during runtime, no matter what I change the StaticForeColor to, the
> button will have it's ForeColor set to the StaticForeColor but immediately
> afterwards, it will be reset to:
>
> this.btnBuildingView.ForeColor =
> System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
> ((System.Byte)(255)));
>
> or something like it.
>
> Thanks
> Steve
>
>
>
>

Re: Prevent Designer Generated Code by steve

steve
Thu Sep 09 15:01:05 CDT 2004

Sijin

I took a look at this article:
http://msdn.microsoft.com/library/en-us/dndotnet/html/custcodegen.asp?frame=true

Thanks for your input.

Never new about Custom Code Generation and the
DesignerSerializationVisiblity.Hidden Attribute. That would probably work
fine, but I figured out that my solution worked fine. Because the DLL was a
separate project from the project I was using it in, I think I just got an
earlier version which didn't work. Briefly I'll show how it works:

public class MyButton: System.Windows.Forms.Button
{
private Color m_foreColor;
private Color m_backColor;

public static Color StaticForeColor;
public static Color StaticBackColor;

public MyButton()
{
m_foreColor = StaticForeColor;
m_backColor = StaticBackColor;

if (!m_foreColor.IsEmpty)
this.ForeColor = m_foreColor;
if (!m_backColor.IsEmpty)
this.BackColor = m_backColor;
}
}

So when I add a MyButton to a Form, the IDE creates the Designer Generated
Code, it sees that m_foreColor indeed IsEmpty, and doesn't put in a line
like:

this.btnBuildingView.ForeColor = Color.whatever.

But, in my application, that has buttons (of the MyButton class) on a Form,
I'll write a statement like:
MyButton.StaticForeColor = Color.Red;
MyButton.StaticBackColor = Color.Blue;
now, all of my buttons of type MyButton will have a Red forcolor and a Blue
backcolor. The MyButton Class becomes much more dynamic this way.

Steve

"Sijin Joseph" <sijinNOSPAMdotnet@hotmail.com> wrote in message
news:e2wvQ4kkEHA.324@TK2MSFTNGP11.phx.gbl...
> You might want to take a look at this
>
http://msdn.microsoft.com/library/en-us/dndotnet/html/custcodegen.asp?frame=true
>
>
> Sijin Joseph
> http://www.indiangeek.net
> http://weblogs.asp.net/sjoseph
>
>
>
> steve wrote:
> > I've created a button class (MyButton) that derives from
> > System.Windows.Forms.Button.
> > In the constructor, I set the ForeColor and BackColor properties of the
> > button with a static color like this:
> >
> > this.ForeColor = StaticForeColor
> > this.BackColor = StaticBackColor
> >
> > It's really important that the Designer Generated Code doesn't set the
> > ForeColor and BackColor at design time. Is there a way to prevent the
> > Designer Generated Code from doing this?
> > Let me explain why. My idea behind creating a class this way, is so I
can
> > set the colors of the button for the whole class dynamically in my
project
> > when the project is loaded like this:
> >
> > MyButton.StaticForeColor = Color.Blue;
> >
> > The problem is, the Designer Generated Code automatically puts in lines
> > like this:
> >
> > this.MyButton1 = new MyNameSpace.MyButton();
> >
> > //
> > // MyButton1
> > //
> > ...
> > this.btnBuildingView.BackColor = System.Drawing.Color.Black;
> > this.btnBuildingView.ForeColor =
> > System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
> > ((System.Byte)(255)));
> >
> > And even though the button class (MyButton) the StaticForeColor is not
> > initialized, it's just:
> >
> > public static Color StaticForeColor;
> >
> > The Designer Still generates code for the ForeColor and BackColor in the
> > //
> > // MyButton1
> > //
> > section because I set those values in the constructor.
> >
> > So, during runtime, no matter what I change the StaticForeColor to, the
> > button will have it's ForeColor set to the StaticForeColor but
immediately
> > afterwards, it will be reset to:
> >
> > this.btnBuildingView.ForeColor =
> > System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(102)),
> > ((System.Byte)(255)));
> >
> > or something like it.
> >
> > Thanks
> > Steve
> >
> >
> >
> >