PDA

View Full Version : سوال: معتبر بودن ME در تمام برنامه



R_Rajaee_Rad
دوشنبه 22 شهریور 1389, 21:36 عصر
سلام

این متد تمام تسکت باکس ها رو بعد از ثبت خالی میکنه(به صورتی نوشتم که در تمام برنامه قابل استفاده باشه ولی نمیدونم درست نوشتم یا نه)


Private Shared Sub ClearAll()
Dim item As Object
For Each item In Me.Controls
If item.GetType() Is GetType(SuperTextBox) Then
DirectCast(item, TextBox).Clear()
End If
Next
End Sub


اما برای ME این خطا رو میده

'Me' is valid only within an instance method.
برای حل این مشکل و ساتفاده از این متد در کل برنامه باید چکار کرد؟

salehbagheri
دوشنبه 22 شهریور 1389, 23:15 عصر
به جای Me باید فرم خودتون رو به متد ارسال کنید. البته دقیق نمیدونم که این کار شما اصولی هست یا خیر و آیا این روش جواب میده یا خیر!


Public Shared Sub ClearAll(ByVal Form As System.Windows.Forms.Form)
For Each Item As Control In Form.Controls
'TODO
Next
End Sub

Saman_12
دوشنبه 22 شهریور 1389, 23:43 عصر
کد تون رو اینجوری تغییر بدین :

For Each Txt As Object In Me.Controls
If TypeOf Txt Is SuperTextBox Then Txt.ResetText()
Next

و آیا این روش جواب میده یا خیر!
من هر وقت خواستم از اسم خود فرم به جای Me استفاده کنم خطا گرفته پس فکر کنم شدنی نباشه.

salehbagheri
دوشنبه 22 شهریور 1389, 23:56 عصر
ما با این روش زیاد موافق نیستم. راههای متفاوت و بهتری هم هست.

مثلاً یک کلاس جدید ایجاد کنید که از Form ارث بری داشته باشه بعد متد Clear رو برای همه کنترلهاش بنویسید و سپس فرم خودتون رو از اون کلاس به ارث ببرید.

سپس با صدا زدن اون متد تمامی کنترلهای اون فرم پاکسازی میشن ...

فکر کنم اینجوری بهتر باشه ...