تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Retrieve Owner and Form of a Control
#1
السلام عليكم ورحمة الله وبركاته

أحيانا و عندما تقوم بكتابة كونترول جديد قد نحتاج إلي الحصول علي الكونترول الموجود به الكونترول الخاص بنا وأيضا قد نحتاج أن نحصل علي الفورم الموجود به الكونترول  الخاص بنا

عموما علليك ان تعلم ان مايكروسوفت و لسبب ما جعلت من هذا الأمر مخفيا خلال جميع الكونترول الخاصة بها

و للحصول علي الكونترول الموجود به الكونترول الخاص بنا أضف الي الكونترول الخاص بك الصفة التالية ومن الأفضل أن تجعها من النوع Friend

PHP كود :
   ' Retrieve container of our control
    Public Property Owner As Control
        Get
            Return MyBase.Parent
        End Get
        Set(value As Control)
            If MyBase.Parent IsNot value Then
                If value Is Nothing Then
                    value.Controls.Add(Me)
                End If
            End If
            MyBase.Parent.Controls.Remove(Me)
        End Set
    End Property 

و للحصول علي الفورم الموجود به الكونترول الخاص بنا أضف الي الكونترول الخاص بك الصفة التالية ومن الأفضل أن تجعها من النوع Friend

PHP كود :
  '  ' Retrieve form of our control
    Public ReadOnly Property Form 
As ContainerControl
        Get
            Dim _designer 
As Control MyBase.Parent
            While _designer IsNot Nothing
                If TypeOf _designer Is ContainerControl Then
                    Return TryCast
(_designerContainerControl)
 
               End If
 
               _designer _designer.Parent
            End 
While
 
           Return Nothing
        End Get
    End Property 

الكونترول التالي يوضح شكل الكود كاملا

PHP كود :
Public Class CairoControl
    Inherits Control

    
' Retrieve container of our control
    Public Property Owner As Control
        Get
            Return MyBase.Parent
        End Get
        Set(value As Control)
            If MyBase.Parent IsNot value Then
                If value Is Nothing Then
                    value.Controls.Add(Me)
                End If
            End If
            MyBase.Parent.Controls.Remove(Me)
        End Set
    End Property

    ' 
 ' Retrieve form of our control
    Public ReadOnly Property Form As ContainerControl
        Get
            Dim _designer As Control = MyBase.Parent
            While _designer IsNot Nothing
                If TypeOf _designer Is ContainerControl Then
                    Return TryCast(_designer, ContainerControl)
                End If
                _designer = _designer.Parent
            End While
            Return Nothing
        End Get
    End Property

End Class 

يمكن إستخدام نفس الفكرة مع أي كونترول نقوم ببناؤه أو يتم توريثه من اي كونترول أخر

بالتوفيق للجميع
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم