تقييم الموضوع :
  • 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 

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تصميم ثيمات للكونترول Control Theme silverlight 1 130 17-02-17, 02:18 AM
آخر رد: الماجيك مسعد
  Control Finder Class silverlight 3 155 03-12-16, 06:11 AM
آخر رد: أبو عمر
  Generic Delegates & ًWindows Forms Control - Part 2 silverlight 0 258 19-01-16, 02:01 PM
آخر رد: silverlight
  Generic Delegates & ًWindows Forms Control - Part 1 silverlight 1 337 16-01-16, 06:35 PM
آخر رد: 10468
  [كود] Line Control silverlight 0 251 14-01-16, 03:03 PM
آخر رد: silverlight
  Capture Mouse Position within Control Coordinates silverlight 0 272 11-12-15, 10:30 PM
آخر رد: silverlight
  [كود] تأثيرات على Form او على Objects HASAN6.0 4 606 30-11-15, 10:36 PM
آخر رد: Bettayeb
  [مقال] Fun with Windows Forms & Graphics - Spy Form silverlight 1 591 23-06-15, 09:33 PM
آخر رد: silverlight
  إيجاد جميع الكونترول الموجودة في الفورم Recursively Find All Controls in Form silverlight 0 598 26-05-15, 12:31 AM
آخر رد: silverlight
Rainbow Toolbox in VB.NET - Common Controls - Lesson One - Button Control Properties Genius Live 18 4,668 26-03-14, 09:21 PM
آخر رد: رابح11

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


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