In C# (and Visual Basic) you can add several non-UI components (those that don't inherit from System.Windows.Forms.Control
) directly from the form designer. Examples of those components are System.Windows.Forms.FolderBrowserDialog
and System.Windows.Forms.Timer
.
But what's the benefit from adding non-UI controls with the UI designer instead of instancing them directly from code? There's a rationale behind that?
I think using non-UI components in designer at least has these benefits:
Design-Time Support
One of most powerful things that you have in windows forms is the ability to use designer to setup Components.
Even though
Timer
is not a UI component, but you can set its properties like interval at design time. This applies to many other components likeBindingSource
,ErrorProvider
, ... that you can use very friendly property grid and type editors and type converters to configure properties at design time.BindingSource
to designer, it makes data binding very easy.HelpProvider
andTooltip
, since they are related to other controls, it is very easy to configure them at design mode.DataSource
andDataMember
, it is very friendly to use designer and use great property grid features.Localizable
feature ofForm
for your components, it's completely available using designer.Standard Code
If you take a look at designer generated code you will see:
ISupportInitialize
uses theirBeginInit
andEndInit
this.components
to constructor and then use it whenDispose
If you don't need design-time support and you write standard code for components, so it's completely OK to use theme in code.