Prevent UserControl derivative from being designed

T

Tony Maresca

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.
 
B

Bob Powell [MVP]

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.
 
O

Oliver Sturm

Tony said:
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
 
B

Bob Powell [MVP]

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top