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

 

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

Πως μπορούμε να αποτρέψουμε τον προγραμματιστή από το να τοποθετήσει ένα UserControl περισσότερες από μία φορές;

Îåêßíçóå áðü ôï ìÝëïò Simonetos The Greek. Τελευταία δημοσίευση από το μέλος Simonetos The Greek στις 17-04-2018, 16:00. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-04-2018, 11:42 78264

    Πως μπορούμε να αποτρέψουμε τον προγραμματιστή από το να τοποθετήσει ένα UserControl περισσότερες από μία φορές;

    Καλημέρα σε όλους!!!

    Δουλεύω ένα UserControl σε VB.NET (VS2017) και ψάχνω  έναν τρόπο έτσι ώστε να αποτρέπω τον προγραμματιστή να το τοποθετήσει σε μία φόρμα πάνω από μία φορά, σε Design Time.
    Με άλλα λόγια, θέλω μέσω του κώδικα μου σε Design Time, να εντοπίσω αν το UserControl μου έχει ήδη τοποθετηθεί σε κάποιο ParentForm ή όχι και να αποτρέψω τη δεύτερη τοποθέτηση εάν υπάρχει ήδη.

    Προσπάθησα κάτι, σαν αυτό που θα δείτε στο παράδειγμα παρακάτω... Αλλά δεν είμαι σίγουρος αν αυτός είναι ο "σωστός" τρόπος και δεν μπορώ να βρω πώς να αφαιρέσω ή να σταματήσω την τοποθέτηση του UserControl.

    Και πάλι, όλα αυτά, σε Design Time!!!

    Private Sub MyUserControl_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim _Count As Integer
        Dim _UserControl As MyUserControl
        For Each _UserControl In Me.ParentForm.Controls
            If _UserControl.Name.Contains("MyUserControl") Then
                _Count += 1
            End If
        Next
        If _Count > 1 Then
            MsgBox("Control have been placed.")
        Else
            MsgBox("Control haven't placed yet.")
        End If
    End Sub


    Η μετριότητα είναι ο μεγαλύτερο εχθρός μου!!!
    Δημοσίευση στην κατηγορία: , ,
  •  17-04-2018, 14:29 78265 σε απάντηση της 78264

    Απ: Πως μπορούμε να αποτρέψουμε τον προγραμματιστή από το να τοποθετήσει ένα UserControl περισσότερες από μία φορές;

    Νομίζω ότι πρέπει να κανείς override τη Serialize μέθοδο του CodeDomSerializer και να βάλεις εκεί τη λογική για υπάρχονται αλλά controls. 

    https://stackoverflow.com/questions/4305140/how-to-use-designerserializerattribute-on-a-custom-user-control/4305495#4305495 

  •  17-04-2018, 16:00 78266 σε απάντηση της 78265

    Απ: Πως μπορούμε να αποτρέψουμε τον προγραμματιστή από το να τοποθετήσει ένα UserControl περισσότερες από μία φορές;

    Νίκο σε ευχαριστώ πολύ για την απάντηση, τελικά κατέληξα σε αυτή τη λύση...
    Private Sub Me_ParentChanged(sender As Object, e As EventArgs) Handles Me.ParentChanged
        Dim _ParentForm = DirectCast(Me.FindForm, Control)
        Dim _ControlName As String
        If _ParentForm IsNot Nothing Then
            For Each _Control As Control In _ParentForm.Controls
                If TypeOf _Control Is MyUserControl AndAlso _Control IsNot Me Then
                    Throw New ArgumentOutOfRangeException("", "You can place only one " & _ControlName & " control per form.")
                End If
                _Control = _ParentForm.GetNextControl(_Control, True)
            Next
        End If
    End Sub

    Η μετριότητα είναι ο μεγαλύτερο εχθρός μου!!!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems