By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,846 Members | 1,631 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,846 IT Pros & Developers. It's quick & easy.

Prevent UserControl derivative from being designed

P: n/a
Hi. I have a class derived from a UserControl,
that I want to allow others to derive controls
from. I don't want them to design the base
class (which is derived from a UserControl).

I know that I can prevent the control from being
designed by making it not the first class in the
code file, but is there another more 'official' way
to do this via attributes.

The user should be able to add the control's source
to a project (or reference it in another assembly),
and then select the control in the Inheritance Picker,
to create a derived class, but I want to prevent the
user from designing the base class.

--
Tony M.
Nov 17 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Doing it with source is pointless because an enterprising programmer will
just alter the source to suit his needs.

If you distribute as a DLL then the problem goes away because you can't
alter the class once it's compiled.

--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.

"Tony Maresca" <to**@whereever.com> wrote in message
news:Oa**************@TK2MSFTNGP15.phx.gbl...
Hi. I have a class derived from a UserControl,
that I want to allow others to derive controls
from. I don't want them to design the base
class (which is derived from a UserControl).

I know that I can prevent the control from being
designed by making it not the first class in the
code file, but is there another more 'official' way
to do this via attributes.

The user should be able to add the control's source
to a project (or reference it in another assembly),
and then select the control in the Inheritance Picker,
to create a derived class, but I want to prevent the
user from designing the base class.

--
Tony M.

Nov 17 '05 #2

P: n/a
Tony Maresca wrote:
Hi. I have a class derived from a UserControl, that I want to allow
others to derive controls from. I don't want them to design the base
class (which is derived from a UserControl).

I know that I can prevent the control from being designed by making
it not the first class in the code file, but is there another more
'official' way to do this via attributes.

The user should be able to add the control's source to a project (or
reference it in another assembly), and then select the control in the
Inheritance Picker, to create a derived class, but I want to prevent
the user from designing the base class.


I'm not quite sure I follow you. The thing is, a control can only be
designed if the source code of that control is available to the user. If
you give the user only the compiled assembly with the control in it, he
won't be able to make changes to the control.

Now, if you're giving the user the source and you assume that the user
might try to make changes to the control although you told him not to do
that, what help would an attribute be? The user could just change that
attribute or remove and design away. Not?
Oliver Sturm
--
omnibus ex nihilo ducendis sufficit unum
Spaces inserted to prevent google email destruction:
MSN oliver @ sturmnet.org Jabber sturm @ amessage.de
ICQ 27142619 http://www.sturmnet.org/blog
Nov 17 '05 #3

P: n/a
To clarify, There are no attributes of that nature.

You can do a runtime check to see if a control is in design mode by looking
at the DesignMode property anywhere except in the constructor but that's
about it.

You can prevent a component from showing up in the toolbox by setting the
ToolboxItem attribute to False but that's not really the same either.

--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.

"Tony Maresca" <to**@whereever.com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
Doing it with source is pointless


I wasn't asking for opinions on whether it is a
good idea, or not, to prevent a class from being
designed with attributes.

I was interested in learning if there are any
attributes that can be used to prevent a class
from being designed.

In any case, thanks for your opinion.

--
Tony M.
"Bob Powell [MVP]" <bob@_spamkiller_bobpowell.net> wrote in message
news:ek**************@tk2msftngp13.phx.gbl...
because an enterprising programmer will
just alter the source to suit his needs.

If you distribute as a DLL then the problem goes away because you can't
alter the class once it's compiled.

--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.

"Tony Maresca" <to**@whereever.com> wrote in message
news:Oa**************@TK2MSFTNGP15.phx.gbl...
Hi. I have a class derived from a UserControl,
that I want to allow others to derive controls
from. I don't want them to design the base
class (which is derived from a UserControl).

I know that I can prevent the control from being
designed by making it not the first class in the
code file, but is there another more 'official' way
to do this via attributes.

The user should be able to add the control's source
to a project (or reference it in another assembly),
and then select the control in the Inheritance Picker,
to create a derived class, but I want to prevent the
user from designing the base class.

--
Tony M.


Nov 17 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.