A: 

Yes, inherit in a custom control and set the default properties in the default constructor.

Example:

   class Class1:TextBox{
        public Class1():base(){
            this.TextAlign = HorizontalAlignment.Center;
            this.Dock = DockStyle.Left;
        }
    }
Igor Zelaya
+1  A: 

You have two options here.

The first is to create a method that iterates over all nested controls on a form, and picks the textboxes and change the properties, then call this property in the form's initialization code.

The other is to inherit the textbox control in question, and change the properties to your liking in its constructor (and maybe shadowing the properties to expose different defaultvalues to the propertygrid). To make the control available in the form designer, it must be created in a separate propject from where it is supposed to be used, and then referenced in the first project.

It is not necessary to create a separate project for the control, but is a good programming practice.
Igor Zelaya
A: 

In my project I have a similar need. What I did was listen to the ControlAdded event, and check that if that control is of the desired type... I set those properties.

To this be really automatic... you should place such logic in the Form Base Class. In my case, ALL my Forms inherits from a base one with the logic of painting a gradient background and set standard properties for my forms (Icon, borders, etc.

In the following example, I use a control called "MGButton" and set its properties. You can do a CASE here to customize all your controls. I also use a custom property to know when NOT to use the defaults.

Private Sub FormBase_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles MyBase.ControlAdded
        If e.Control.GetType().ToString = "CommonUI.MGButton" Then
            Dim boton As CommonUI.MGButton = CType(e.Control, CommonUI.MGButton)
            With boton
                If CType(.Tag, String) <> "OverrideDefaults" Then
                    .ColorBorde = System.Drawing.Color.Black
                    .ColorBordeFocus = System.Drawing.Color.Transparent
                    .ColorFinal = System.Drawing.Color.NavajoWhite
                    .ColorFinalDisabled = System.Drawing.Color.WhiteSmoke
                    .ColorFinalOver = System.Drawing.Color.Sienna
                    .ColorInicial = System.Drawing.Color.Peru
                    .ColorInicialDisabled = System.Drawing.Color.SeaShell
                    .ColorInicialOver = System.Drawing.Color.Sienna
                End If
            End With       
        End If
    End Sub
Romias