تقييم الموضوع :
  • 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 Finder Class silverlight 3 67 03-12-16, 06:11 AM
آخر رد: أبو عمر
  Generic Delegates & ًWindows Forms Control - Part 2 silverlight 0 197 19-01-16, 02:01 PM
آخر رد: silverlight
  Generic Delegates & ًWindows Forms Control - Part 1 silverlight 1 254 16-01-16, 06:35 PM
آخر رد: 10468
  [كود] Line Control silverlight 0 194 14-01-16, 03:03 PM
آخر رد: silverlight
  Capture Mouse Position within Control Coordinates silverlight 0 224 11-12-15, 10:30 PM
آخر رد: silverlight
  [كود] تأثيرات على Form او على Objects HASAN6.0 4 490 30-11-15, 10:36 PM
آخر رد: Bettayeb
  [مقال] Fun with Windows Forms & Graphics - Spy Form silverlight 1 513 23-06-15, 09:33 PM
آخر رد: silverlight
  إيجاد جميع الكونترول الموجودة في الفورم Recursively Find All Controls in Form silverlight 0 507 26-05-15, 12:31 AM
آخر رد: silverlight
Rainbow Toolbox in VB.NET - Common Controls - Lesson One - Button Control Properties Genius Live 18 4,234 26-03-14, 09:21 PM
آخر رد: رابح11
Rainbow Toolbox in VB.NET - Common Controls - Lesson Two - Button Control Events Genius Live 2 1,283 18-03-14, 05:46 AM
آخر رد: Genius Live

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


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