پیدا کردن ParentForm در Component در Vb.net

ms_vb

Member
سلام
چطور میتونم ParentForm رو در یه Component پیدا کنم؟
 
آخرین ویرایش:

the_king

مدیرکل انجمن
سلام
چطور میتونم ParentForm رو در یه Component پیدا کنم؟

قاعدتا یک Component صرفا یک شیء است که داخل کلاس Form قرار می گیرد، نه روی پنجره Form و ارتباطی نظیر ParentForm برای آن بی معنا است.
اما به هر حال زمانی که یک Component را هنگام طراحی فرم رویش قرار می دهیم، یکبار و فقط همان یکبار مشخصه Site این فرصت را دارد که
فرم را شناسایی کند. از آنجایی که این موقعیت دیگر تکرار نمی شود، باید همان موقع Form را در مشخصه ای ذخیره کرد، وگرنه بعدا امکان دسترسی
به آن نیست.

مشخصه ای که برای ذخیره سازی Form بکار می رود :
کد:
    Private _containerControl As ContainerControl

    Public Property ContainerControl() As ContainerControl
        Get
            Return _containerControl
        End Get
        Set(ByVal value As ContainerControl)
            _containerControl = value
        End Set
    End Property

مشخصه Site را Overrides می کنیم تا آن لحظه قرار گرفتن Component روی فرم را در حالت طراحی فرم از دست ندهیم :
کد:
    Public Overrides Property Site() As System.ComponentModel.ISite
        Get
            Return MyBase.Site
        End Get
        Set(ByVal value As System.ComponentModel.ISite)
            MyBase.Site = value
            If value IsNot Nothing Then
                Dim service As System.ComponentModel.Design.IDesignerHost
                service = value.GetService(GetType(System.ComponentModel.Design.IDesignerHost))
                If service IsNot Nothing Then
                    If TypeOf service.RootComponent Is ContainerControl Then
                        _containerControl = service.RootComponent
                    End If
                End If
            End If
        End Set
    End Property

حالا اگر در فرم فایل Designer.vb اش را ببینید، موقع قرار گرفتن Component روی فرم این مشخصه ContainerControl که ایجاد کرده ایم مقدار دهی می شود :
کد:
        '
        'Component11
        '
        Me.Component11.ContainerControl = Me
        '
 

جدیدترین ارسال ها

بالا