Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Custom UserControl with ListOF Objects as property

Îåêßíçóå áðü ôï ìÝëïò Johnnyxp64. Τελευταία δημοσίευση από το μέλος Johnnyxp64 στις 22-04-2010, 12:49. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-04-2010, 13:18 58206

    Custom UserControl with ListOF Objects as property

    Καλημερα

    θελω να φτιαξω ενα winforms usercontrol που θα εχει ενα property (φανταζομαι θα πρεπει να ειναι list of object) 
    και σε designtime sto Visual Studio να βλεπω το property (brawsable) και να μπορω απο τον default editor να φτιαχνω κανω add νεα controls.

    μεχρι εδω καλα(i think), το θεμα ειναι οτι αυτα που δημιουργουντε ενο στον constructor υπαρχουν ΔΕΝ εμφανιζονται μεσα στην λιστα αν την ξανα ανοιξω! και τρωω και σφαλμα.
    δεν ετυχε να το ξανακανω, δεν ξερω αν καν λεω τις ορολογιες σωστα (οποτε μην ειστε πολυ αυστηροι) και για το λογο αυτο το google δεν με βοηθαει.

    θελω βοηθεια απο που να ξεκινησω ωστε να κανω ενα τετοιο property control που θα συμπεριφερεται σωστα στο vs σε design time.

    tnx a lot guys (or girls)


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  21-04-2010, 14:06 58209 σε απάντηση της 58206

    Απ: Custom UserControl with ListOF Objects as property

    Δεν δείχνεις όμως τον κώδικα. Έτσι είναι αδύνατον να μαντέψουμε τί μπορεί να συμβαίνει.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-04-2010, 14:26 58210 σε απάντηση της 58209

    Απ: Custom UserControl with ListOF Objects as property

    βασικα μπορουμε να πουμε οτι ΔΕΝ εχω κωδικα, εχω κοψε ραψε απο αλλο κωδικα και δεν μου αρεσει αυτο γιατι δεν ξερω αν κανω το σωστο.

    ας πουμε λοιπον οτι δεν εχω κωδικα, μπορειτε να με κατευθηνετε καπου να διαβασω ή να βρω vb.net samples?

    θελω να ξεκινησω απο το 0 ωστε να το καταλαβω πληρως, τωρα αντεγραφα κωδικα που εκανε Περιπου αυτο που ζητουσα αλλα ετσι ακρη δεν βγαζω.

    ειμαι σε αυτο το σταδιο
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Imports System.ComponentModel
    Imports System.ComponentModel.Design
    
    Public Class UserControl1
        Inherits System.Windows.Forms.UserControl
    
        Dim _vObjects As List(Of Object)
    
        <Browsable(True), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public Property vObjects() As List(Of Object)
            Get
                Return _vObjects
            End Get
            Set(ByVal value As List(Of Object))
                _vObjects = value
            End Set
        End Property
    
    
    End Class

    σε ευχαριστω για το ενδιαφερον αναμενω με αγωνια καποια κατεύθυνση.



    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  21-04-2010, 17:32 58214 σε απάντηση της 58210

    Απ: Custom UserControl with ListOF Objects as property

    Με τη VB έχω πάρει διαζύγιο εδώ και πολλά χρόνια, αλλά από το σφάλμα που παίρνεις φαίνεται ότι το collection δεν έχει γίνει initialized. Αντί για Dim _vObjects As List(Of Object) πρέπει να γράψεις Dim _vObjects As New List(Of Object), εκτός αν κάνεις το initialization στον constructor.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  21-04-2010, 17:36 58215 σε απάντηση της 58209

    Απ: Custom UserControl with ListOF Objects as property

    κατοπιν πολλων δοκιμων κατεληξα στο ασφαλες συμπερασμα οτι δεν μπορω να κανω property list of objects

    με το ακολουθω που φτιαχνω για παραδειγμα textboxes δουλευει μια χαρα

    το μονο προβλημα τωρα ειναι οτι σε dispose, πες οτι το διαγραφω το control πανω απο μια φορμα, τα texboxes που φτιαχτηκαν μεσα του αφηνουν σκουπιδια στον constructor της φορμας!
    στο initializeComponent υπαρχει ο κωδικα για να φτιαχνοντε ξανα τα textboxes! δεν διαγραφεται αυτοματα....

    καμια ιδεα?

    Imports System.ComponentModel
    Imports System.ComponentModel.Design
    Imports System.Windows.Forms.Design
    
    Public Class UserControl1
        Inherits System.Windows.Forms.UserControl
    
        Dim _vObjects As New List(Of TextBox)
    
        <Browsable(True), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public ReadOnly Property vObjects() As List(Of TextBox)
            Get
                Return _vObjects
            End Get
        End Property
    End Class

    και εδω ειναι τι μενει πισω οταν το διαγραφω

     Private Sub InitializeComponent()        '
            'TextBox1
            '
            Me.TextBox1.Location = New System.Drawing.Point(0, 0)
            Me.TextBox1.Name = "TextBox1"
            Me.TextBox1.Size = New System.Drawing.Size(100, 20)
            Me.TextBox1.TabIndex = 0
    
    blablablablabla




    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  21-04-2010, 17:37 58216 σε απάντηση της 58214

    Απ: Custom UserControl with ListOF Objects as property

    Markos:
    Με τη VB έχω πάρει διαζύγιο εδώ και πολλά χρόνια, αλλά από το σφάλμα που παίρνεις φαίνεται ότι το collection δεν έχει γίνει initialized. Αντί για Dim _vObjects As List(Of Object) πρέπει να γράψεις Dim _vObjects As New List(Of Object), εκτός αν κάνεις το initialization στον constructor.


    ναι σωστα ηταν και αυτο ενα λαθος! ξεχασα να το αναφερω πριν.

    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  21-04-2010, 17:47 58217 σε απάντηση της 58215

    Απ: Custom UserControl with ListOF Objects as property

    Johnnyxp64:
    ...
    το μονο προβλημα τωρα ειναι οτι σε dispose, πες οτι το διαγραφω το control πανω απο μια φορμα, τα texboxes που φτιαχτηκαν μεσα του αφηνουν σκουπιδια στον constructor της φορμας!
    στο initializeComponent υπαρχει ο κωδικα για να φτιαχνοντε ξανα τα textboxes! δεν διαγραφεται αυτοματα....

    καμια ιδεα?
    ...
     
    Φτιάξε ένα νέο control που θα λειτουργεί ως container για το collection control και πέταξε αυτό πάνω στη φόρμα και όχι απ' ευθείας το collection control.

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  21-04-2010, 18:05 58219 σε απάντηση της 58217

    Απ: Custom UserControl with ListOF Objects as property

    ναι τελικα με λιγη προσοχη και διωρθωση ειμαι εδω
    και τα αντικειμενα πλεον δεν αφηνουν σκουπιαδια

    Imports System.ComponentModel
    Imports System.ComponentModel.Design
    Imports System.Windows.Forms.Design
    
    Public Class UserControl1
        Inherits System.Windows.Forms.UserControl
    
        Dim _vObjects As New List(Of Object)
    
        <Browsable(True), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public ReadOnly Property vObjects() As List(Of Object)
            Get
                Return _vObjects
            End Get
        End Property
    End Class

    αλλα παλι δεν ειμαι στον τελικο τελικο στοχο! ποioς ειναι? να εχω μια λιστα που ανα επιλεγω τι αντικειμενα θα βαζω στην λιστα αυτη και φυσικα οταν το διαγραφω να διαγραφοντε ολα.
    κατι σαν αυτο δηλαδή


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  22-04-2010, 12:21 58259 σε απάντηση της 58209

    Απ: Custom UserControl with ListOF Objects as property

    ok final code

    μενει ενα προβλημα και δεν μπορω να το δρω, αν διαγραφω τα αντικειμενα απο την λιστα ενα ενα τοτε καθαριζει και ο αντιστοιχος κωδικας στο αρχειο designer αλλα αν διαγραψω το control μονο ολοκληρο οχι παρολο που ο κωδικα ς υπαρχει (line 81)....μπορει καποιος να καταλαβει το γιατι?Huh?


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    Imports System.ComponentModel
    Imports System.ComponentModel.Design
    Imports System.Windows.Forms.Design
    
    Public Class ctrlObjects
        Inherits System.Windows.Forms.UserControl
    
        Dim _vObjects As New List(Of TextBox)
    
        <Browsable(True), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public ReadOnly Property vObjects() As List(Of TextBox)
            Get
                Return _vObjects
            End Get
        End Property
    
    End Class
    
    
    
    
    Friend Class ctrlObjectsDesigner
        Inherits ControlDesigner
    
        Private MyControl As ctrlObjects
    
    
        Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent)
            MyBase.Initialize(component)
    
            'Record instance of control we're designing
            MyControl = DirectCast(component, ctrlObjects)
    
            'Hook up events
            Dim s As ISelectionService = DirectCast(GetService(GetType(ISelectionService)), ISelectionService)
            Dim c As IComponentChangeService = DirectCast(GetService(GetType(IComponentChangeService)), IComponentChangeService)
            AddHandler c.ComponentRemoving, AddressOf OnComponentRemoving
            'AddHandler s.SelectionChanged, AddressOf OnSelectionChanged
    
        End Sub
    
        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
            Dim s As ISelectionService = DirectCast(GetService(GetType(ISelectionService)), ISelectionService)
            Dim c As IComponentChangeService = DirectCast(GetService(GetType(IComponentChangeService)), IComponentChangeService)
    
            'Unhook events
            RemoveHandler c.ComponentRemoving, AddressOf OnComponentRemoving
            'RemoveHandler s.SelectionChanged, AddressOf OnSelectionChanged
    
            MyBase.Dispose(disposing)
    
        End Sub
    
    
        Private Sub OnSelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            'MyControl.OnSelectionChanged()
        End Sub
    
        Private Sub OnComponentRemoving(ByVal sender As Object, ByVal e As ComponentEventArgs)
            Dim c As IComponentChangeService = DirectCast(GetService(GetType(IComponentChangeService)), IComponentChangeService)
    
    
            Dim ctrl As TextBox
            Dim h As IDesignerHost = DirectCast(GetService(GetType(IDesignerHost)), IDesignerHost)
            Dim i As Integer
    
    
            'If the user is removing the control itself
            If e.Component Is MyControl Then
                For i = MyControl.vObjects.Count - 1 To 0 Step -1
                    ctrl = MyControl.vObjects(i)
                    c.OnComponentChanging(MyControl, Nothing)
                    MyControl.vObjects.Remove(ctrl)
                    h.DestroyComponent(ctrl)
                    c.OnComponentChanged(MyControl, Nothing, Nothing, Nothing)
                Next
            End If
    
    
    
            'If the user is removing a button
            If TypeOf e.Component Is TextBox Then
                ctrl = DirectCast(e.Component, TextBox)
                If MyControl.vObjects.Contains(ctrl) Then
                    c.OnComponentChanging(MyControl, Nothing)
                    MyControl.vObjects.Remove(ctrl)
                    c.OnComponentChanged(MyControl, Nothing, Nothing, Nothing)
                    Return
                End If
            End If
    
    
        End Sub
    
        Public Overrides ReadOnly Property AssociatedComponents() As System.Collections.ICollection
            Get
                Return MyControl.vObjects
            End Get
        End Property
    End Class


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  22-04-2010, 12:49 58261 σε απάντηση της 58259

    Απ: Custom UserControl with ListOF Objects as property

    το βρηκα επρεπε να εχω αυτο στην πρωτη γραμμη της class

    <Designer(GetType(ctrlObjectsDesigner))> _


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems