PDA

View Full Version : سوال: مشکل با Collection ها



rooshan2008
شنبه 19 بهمن 1387, 01:39 صبح
با سلام خدمت اساتید و مدایران و دوستان ، سایت برنامه نویس
من یک سوال دارم یا بهتر بگم یک مشکل دارم اگه من رو راهنمایی کنید واقعاً ممنون میشم

من معمولاً زیاد UserControl می نویسم .در نوشتن یکی از این کنترول ها به یک مشکل برخوردم مشکل از اونجا آب میخوره که من یک پروپرتیس ایجاد میکنم از نوع CollectionBase همون طور که میدونیم کلوکسیونها این قابلیت رو دارن که در حالت طراحی هم مقدار دهی یا ایجاد بشن (مثلاً پروپرتیس Columns در دیتا گرید ویو که شما در حالت دیزاین میتونید تعداد ستون ها رو کم یا زاد کنید) من این کار رو انجام میدم و اضافه هم میشه ولی کدی که خود وبی در فایل .Designer خودش ذخیره میکنه خطا ایجاد میکنه من نمونه کدی رو اینجا میزارم :

این کد کلاس هست که برنامتون اضافه کنید :

28031




این کد یک نمونه است و کد برنامه من نیست ولی این کد هم همون مشکل رو داره
خوب کد بالا کلاس مربوط بود که شما اونو میتونید داخل یک فایل کلاس ذخیره کنید.

حالا یک یوزر کنترول درست کنید و این کد رو به برنامتون اضافه کنید :




Dim a As New TestCollection
Public Property Roshan() As TestCollection
Get
Return a
EndGet
Set(ByVal value As TestCollection)
a = value
End Set
End Property


حالا یوزرکنترول رو روی فرم برنامتون بزارید و به خاصیت Roshan توجه کنید شما میتونید بهش مقدار بدید حالا یک یا چنتا سلول ایجاد کنید و برنامه رو ذخیره کنید الان باید به تعداد سلول های ایجاد شده Syntax error دادخ باشه اگه میشه لطفاً یه کمکی بکنید چون اگه نتونستم این مشکل رو حل کنم

از همه اساتید ممنون متشکرم ....

Ali_Mor
شنبه 19 بهمن 1387, 23:51 عصر
داخل یوزرکنترل پروپرتی رو readOnly تعریف کنید


Dim a As New TestCollection
Public ReadOnly Property Roshan() As TestCollection
Get
Return a
End Get
End Property

rooshan2008
یک شنبه 20 بهمن 1387, 16:14 عصر
با سلام خدمت دوست عزیز ، ممنون که جواب دادین این کارو کرده بودم درسته خطا نمیده ولی ذخیره نمیشه اگه دوستان بازم یه نگاه بندازن ممنون میشم

Ali_Mor
دوشنبه 21 بهمن 1387, 00:15 صبح
سلام
بالای پروپرتی از این اتریبیوت استفاده کن


<DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content)> _
Public Property Roshan() As TestCollection
Get
Return a
End Get
Set(ByVal value As TestCollection)
a = value
End Set
End Property

راستی در نمونه کدی که گذاشتی یک مشکل وجود داره، در سازنده کلاس TestCollection باید این رو بنویسی تا این کد کار کنه


Public Sub New()
MyBase.new("Address")
End Sub