Newsgroup: it.comp.lang.visual-basic
Titolo: [.Net] Controlli ereditati e proprietà predefinite

Ciao.
Ho creato un semplice controllo in .Net che eredita da un TextBox.
Vorrei impostare delle proprietà di default in questo controllo, in modo che
quando viene piazzato sul form queste proprietà siano già impostate.
Facciamo un esempio con le proprietà BackColor, Dock e BorderStyle
Public Class UserControl1
Inherits System.Windows.Forms.TextBox
#Region " Codice generato da Progettazione Windows Form "
Public Sub New()
    MyBase.New()
    'Chiamata richiesta da Progettazione Windows Form.
    InitializeComponent()
    'Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata
a InitializeComponent()
    Me.BackColor = Color.Red
    Me.Dock = DockStyle.Top
    Me.BorderStyle = BorderStyle.FixedSingle
End Sub
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
'
'UserControl1
'
Me.Size = New System.Drawing.Size(320, 20)
End Sub
#End Region
End Class
Questo è il codice del mio controllo.
Ho impostato dopo l'InitializeComponent le proprietà BackColor (rosso), Dock
(top) e BorderStyle (FixedSingle).
Quando metto il controllo sul form le proprietà appaiono correttamente.
A questo punto cambio il backColor, lo metto a Blu e quando il programma
parte vedo correttamente lo sfondo blu.
Pero' se cambio il borderStyle o il Dock, quando parte il programma, vengono
ripristinate le funzioni di default!
Sono io che sbaglio qualcosa?
Grazie, ciao.
-- 
Skysurfer

Skysurfer ha scritto:
[Taglio]
1-
Ho add un User control all'applicazione:
Public Class myTextBox
    Inherits System.Windows.Forms.TextBox '
System.Windows.Forms.UserControl
#Region " Windows Form Designer generated code "
    Public Sub New()
        MyBase.New()
        'This call is required by the Windows Form Designer.
        InitializeComponent()
        'Add any initialization after the InitializeComponent() call
        Me.BackColor = Color.Red
        Me.Dock = DockStyle.Top
        Me.BorderStyle = BorderStyle.FixedSingle
    End Sub
    'UserControl overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub
    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer
    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
        '
        'UserControl1
        '
        Me.Name = "myTextBox"
        Me.Size = New System.Drawing.Size(120, 20)
    End Sub
#End Region
End Class
2-
in un form:
 Private Sub Form2_Load .....
        Dim m As New myTextBox
        m.Top = 50
        m.Left = 50
        m.Dock = DockStyle.None
        m.BackColor = Color.Azure
        Me.Controls.Add(m)
    End Sub
il tutto funziona
Ave
giuseppeD
---
CCR
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Grazie per la risposta.
Tutto funziona se imposti le proprietà via codice come hai fatto tu.
Ma se piazzi lo usercontrol sul form e imposti le proprietà con la finestra
delle proprietà dovresti avere il problema che ho segnalato.
Ciao
Skysurfer

Skysurfer ha scritto:

devi utilizzare le Property
es:
1-
aggiungi nel codice del componente:
  Public Property pDock() As DockStyle
        Get
            Return Me.Dock
        End Get
        Set(ByVal Value As DockStyle)
            Me.Dock = Value
        End Set
    End Property
e nell'inizializzazione:
 InitializeComponent()
        'Add any initialization after the InitializeComponent() call
         pDock = DockStyle.Top
2-
' nella form del progetto
  Private Sub Form2_Load............
 
        Me.MyTextBox1.pDock = DockStyle.None
 
    End Sub


 1-
E dovrei mappare ogni proprietą del componente base?
Ciao
-- 
Skysurfer

 E dovrei mappare ogni proprietà del componente base?
Presumo, dopo test pratico di si.
Non so, potresti add una textbox nell'user control, legare i due,
e accedere alle proprietà del textbox tramite
usercontrol.textbox1.proprietà
Ave
giuseppeD


 giuseppeD
Grazie per l'aiuto.
Ma secondo te č un baco di .Net o pensi che sia un comportamento normale?
Ciao
-- 
Skysurfer