Έχω δημιουργήσει ένα UserControl το οποίο περιέχει ένα DataGridView. Έχω δημιουργήσει και 2 public properties DataSource και GridColumns. Το πρώτο είναι τύπου DataView και ενημερώνει το DataSource του DataGridView ώστε από το designer κάποιος να μπορεί να συνδέσει το DataGridView με ένα DataView. Το δεύτερο είναι τύπου DataGridViewColumnCollection και αναφέρεται στο property Columns του DataGridView. Το πρόβλημα έγκειται στο ότι, αν και στο designer βλέπω κανονικά τα columns του DataGridView και μπορώ να κάνω αλλαγές στα properties τους, όταν τρέξει το πρόγραμμα οι αλλαγές έχουν χαθεί. Και αυτό παρόλο που έχω βάλει το attribute DesignerSerializationVisibility(DesignerSerializationVisibility.Content) στο property GridColumns. Προφανώς, για κάποιο λόγο που δε γνωρίζω, ο designer δε γράφει τον κατάλληλο κώδικα. Χρειάζεται μήπως κάποιο πρόσθετο attribute στη δήλωση του property GridColumns ή πρέπει να δημιουργώ εγώ τον κατάλληλο κώδικο και αν ναι πώς γίνεται κάτι τέτοιο;
Ακολουθεί ο κώδικας του UserControl
Public
Class DataGridViewControl
Public Property DataSource() As DataView
Get
Return DirectCast(Me.dgvTable.DataSource, DataView)
End Get
Set(ByVal value As DataView)
Me.dgvTable.DataSource = value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property GridColumns() As DataGridViewColumnCollection
Get
Return Me.dgvTable.Columns
End Get
Set(ByVal value As DataGridViewColumnCollection)
While Me.dgvTable.Columns.Count > 0
Me.dgvTable.Columns.Remove(Me.dgvTable.Columns(0))
End While
Dim column As DataGridViewColumn
For Each column In value
Me.dgvTable.Columns.Add(column)
Next
End Set
End Property
End
Class