Hi,
Let's say we have a base form and an inherited form. When the inherited
form is opened in the designer, an instance of the base form is created --
the designer calls the default constructor of the base form to create the
instance and this is why a default constructor is needed.
Generally speaking, we could judge whether it is at design-time or run-time
through the DesignMode property of the form. The DesignMode property
depends on the Site property to determine design-time or run-time (at
run-time, the Site property is null; otherwise, the Site property has a
value).
Note that it's early to judge design-time or run-time using the DesignMode
property in the constructor, because the instance has not finished the
construction and the Site propery has NOT been assigned at this time.
I suggest that you add a public field of type bool in your project to
denote design-time. The default value of this field is false. Set the
field's value to true in the static Main methd. The following is a sample.
class Program
{
public static bool IsDesignTime = true;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
IsDesignTime = false;
Application.Run(new derivedform());
}
}
public partial class baseform : Form
{
public baseform()
{
if (!Program.IsDesignTime)
{
throw new Exception("this construtor can't be called at run
time!");
}
else
{
InitializeComponent();
}
}
}
Hope this helps.
If you have any question, please feel free to let me know.
Sincerely,
Linda Liu
Microsoft Online Community Support
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.