فیلتر کردن مقادیر یک Property

ms_vb

Member
سلام
یه Component داریم که یه Property داره که این Property به تمامی TextBox ها اشاره میکند (از نوع TextBox) میباشد
حالا چکار کنم که این Property فقط به آن TextBox هایی اشاره کند که ReadOnly میباشند؟
ممنونم از جوابتون
 

the_king

مدیرکل انجمن
سلام
یه Component داریم که یه Property داره که این Property به تمامی TextBox ها اشاره میکند (از نوع TextBox) میباشد
حالا چکار کنم که این Property فقط به آن TextBox هایی اشاره کند که ReadOnly میباشند؟
ممنونم از جوابتون

مقدار Property رو شما در کد تون تعیین می کنید، می توانید جلوی اینکار رو با هر شرط دلخواهی بگیرید.
در هنگامی که مقدار property تعیین میشه (بخش Set) می توانید مقدار Value.ReadOnly رو بررسی کنید :

کد:
    Private mTextBox As TextBox

    Public Property TextBox() As TextBox
        Get
            Return mTextBox
        End Get
        Set(ByVal value As TextBox)
            If Not value Is Nothing Then
                If value.ReadOnly = False Then
                    Throw New Exception("ReadOnly property must be true.")
                End If
            End If
            mTextBox = value
        End Set
    End Property
 

ms_vb

Member
ممنون از جوابتون
ببخشید راهی نداره که اصلا توی اون Property این شی که همه TextBox ها رو نمایش میده فقط اونایی رو نشان بده که ReadOnly شان True باشه؟!
 

the_king

مدیرکل انجمن
ممنون از جوابتون
ببخشید راهی نداره که اصلا توی اون Property این شی که همه TextBox ها رو نمایش میده فقط اونایی رو نشان بده که ReadOnly شان True باشه؟!

چرا میشه، باید برای اینکار یک ویرایشگر مخصوص اون مشخصه بسازید یعنی اول باید یک کلاس بسازید که از UserControl
یا ListBox ارث بری کنه که هر چی کنترل در یک فرم هست جستجو کنه و در لیست اش فقط کنترل هایی رو نمایش بده
که هم ListBox باشند و هم ReadOnly شون True باشه.
سپس باید یک کلاس بسازید که از UITypeEditor ارث بری کنه و بعد در این کلاس اون کلاسی که از ListBox
ارث بری می کرد رو به عنوان یک DropDownControl فراخوانی کنید.

بعد در اون کلاسی که مشخصه TextBox داره، درست قبل از تعریف اون مشخصه یک صفت EditorAttribute اضافه
می کنید تا اون کلاسی که از UITypeEditor ارث بری می کرد رو به عنوان Editor اون مشخصه معرفی کنه.
با اینکار هر زمانی که ویژوال استدیو می خواهد مقادیر مجاز برای اون مشخصه رو لیست کنه، اون کلاس رو
فراخوانی می کنه.

مثال اش اینجا هست :
Walkthrough: Implementing a UI Type Editor
 

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

بالا