PDA

View Full Version : سوال: تعدادی سوال در رابطه با خاصیت ها و رویداد های نوشته شده توسط کاربر



Balanar
چهارشنبه 17 آبان 1391, 07:00 صبح
با عرض سلام خدمت دوستان
یه چند وقت پیش تعدادی سوال در رابطه با خاصیت ها و رویداد ها پرسیثدم جوابی دریافت نکردمو تاپیکم رحذف شد. الان باز دوباره اون سوال هارو می پرسم شاید کسی یلد باشه، ممنون میشم کمکم کنید
1 - من کنترلی ساخته ام که در آن احتیاج دارم خاصیت هایی و یا تابع هایی را زیر مجموعه خاصیت ای قرار بدهم مانند خاصیت Item در کنترل Listbox در صورت امکان نحوه انجام این کار را توضیح دهید.
2-نحوه حذف کردن خصوصیات و رویدادهای یک کنترل نوشته شده توسط کاربر
3-اضافه کردن رویداد به کنترل

mohanad1993
پنج شنبه 18 آبان 1391, 11:37 صبح
1 - من کنترلی ساخته ام که در آن احتیاج دارم خاصیت هایی و یا تابع هایی را زیر مجموعه خاصیت ای قرار بدهم مانند خاصیت Item در کنترل Listbox در صورت امکان نحوه انجام این کار را توضیح دهید.

سلام دوست عزیز
این برداشتی بود که من از این قسمت از سوال شما کردم. اگر اشتباه کردم بگید که تا که اونو درست کنم.
شما اگر به خاصیت آیتم کنترل لیست باکس نگاهی بکنیدو متوجه می شوید که این خاصیت از نوع یک کلاس تعریف شده که حالا کاری به چگونگی تعریف و کار اون کلاس ندارید.
تا اینجا فهمیدیم که به یک کلاس نیاز داریم.
شما هم می تونسد که با تعریف اون قسمت از خاصیت های مد نظرتون که قصد دارید زیر مجموعه مشخصه آیتمتون بشه در یک کلاس مجزا و بعد از اون تعریف مشخصه آیتمتون از این کلاس به راحتی به اون هدفتون برسید
واسه نمونه هم می تونید تیکه کد زیر رو ببینید

Public Class A
Public Sub Show()
msgbox(""Yes)
End Sbub
End Class

Public Class B
Public Property ReadOnly Item As A
Get
Return Item
End Get
End Property
End Class

Balanar
دوشنبه 06 آذر 1391, 14:28 عصر
ممنون از شما:قلب:
اون دو سوال دیگرو کسی بلد نیست:افسرده:

gilsoft
سه شنبه 07 آذر 1391, 04:59 صبح
2-نحوه حذف کردن خصوصیات و رویدادهای یک کنترل نوشته شده توسط کاربر

سلام دوست عزیز

Imports System.ComponentModel
Imports System.Runtime.InteropServices

Public Class MyComponent1
Inherits RichTextBox

Private m_AutoValidate As AutoValidate
Private m_BackgroundImage As Image
Private m_BackgroundImageLayout As ImageLayout

<Browsable(False)> _
Public Property AutoValidate() As AutoValidate
Get
Return m_AutoValidate
End Get
Set(value As AutoValidate)
m_AutoValidate = value
End Set
End Property

<Browsable(False)> _
Public Overrides Property BackgroundImage() As Image
Get
Return m_BackgroundImage
End Get
Set(value As Image)
m_BackgroundImage = value
End Set
End Property

<Browsable(False)> _
Public Overrides Property BackgroundImageLayout() As ImageLayout
Get
Return m_BackgroundImageLayout
End Get
Set(value As ImageLayout)
m_BackgroundImageLayout = value
End Set
End Property

End Class

موفق باشید

gilsoft
سه شنبه 07 آذر 1391, 05:36 صبح
3-اضافه کردن رویداد به کنترل

سلام دوست عزیز

اینم یه نمونه کامل :

Imports System.ComponentModel
Imports System.Runtime.InteropServices

Public Class MyComponent1
Inherits RichTextBox

Enum eLanguageMode
Persian = 0
English = 1
End Enum

Private mOnLanguageChanged As EventHandler
Public Event LanguageChanged(ByVal sender As Object)

Private _Language As eLanguageMode
Private _CurrentLanguage As eLanguageMode

<Category("Appearance")> _
Public ReadOnly Property CurrentLanguage() As eLanguageMode
Get
Return _CurrentLanguage
End Get
End Property

<Category("Appearance"), DefaultValue(eLanguageMode.Persian)> _
Public Property Language() As eLanguageMode
Get
Return _Language
End Get
Set(ByVal value As eLanguageMode)
_Language = value
OnLanguageChanged(EventArgs.Empty)
End Set
End Property 'Language()

Protected Overridable Sub OnLanguageChanged(ByVal e As EventArgs)
Invalidate()
If Not (mOnLanguageChanged Is Nothing) Then mOnLanguageChanged.Invoke(Me, e)
End Sub 'OnLanguageChanged()

Protected Overrides Sub OnEnter(e As System.EventArgs)
MyBase.OnEnter(e)

_Language = eLanguageMode.Persian
SettingLanguage()

End Sub 'OnEnter()

Protected Overrides Sub OnLeave(ByVal e As System.EventArgs)
MyBase.OnLeave(e)

_Language = eLanguageMode.English
SettingLanguage()

End Sub 'OnLeave()

Private Sub SettingLanguage()

If Me.Language.ToString() = "Persian" Then
Me.RightToLeft = System.Windows.Forms.RightToLeft.Yes
System.Windows.Forms.InputLanguage.CurrentInputLan guage = System.Windows.Forms.InputLanguage.FromCulture(New System.Globalization.CultureInfo("fa-IR"))

_CurrentLanguage = eLanguageMode.Persian
RaiseEvent LanguageChanged(Me)

End If
'************************************************* ****
If Me.Language.ToString() = "English" Then
Me.RightToLeft = System.Windows.Forms.RightToLeft.No
System.Windows.Forms.InputLanguage.CurrentInputLan guage = System.Windows.Forms.InputLanguage.FromCulture(New System.Globalization.CultureInfo("en-Us"))

_CurrentLanguage = eLanguageMode.English
RaiseEvent LanguageChanged(Me)
End If
End Sub 'SettingLanguage()
End Class

در این کنترل با تغییر زبان رویداد LanguageChanged اتفاق میوفته

میدونم درک این کد یه کم سخته ! ... ولی این کد جواب سوال 3 شما هست ..

موفق باشید