PDA

View Full Version : سوال: نحوه آرایه ای کردن اشیا



setareh69
سه شنبه 23 اسفند 1390, 20:20 عصر
سلام خسته نباشید
چطوری میتوانیم hyperlink یا هر شی دیگر را آرایه ای کنیم؟(index کنیم؟)در vb6 اگر گزبنه index را عدد میدادیم آرایه ای می

شد.در visual studio 2010 چه کاری باید انجام دهیم تا کنترل آرایه ای داشته باشیم؟
ممنون

Hybrid
سه شنبه 23 اسفند 1390, 20:57 عصر
سلام ، قبلا بحث شده :

ساختن یک شی به صورت آرایه (http://barnamenevis.org/showthread.php?126840-%D8%B3%D8%A7%D8%AE%D8%AA%D9%86-%DB%8C%DA%A9-%D8%B4%DB%8C-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87&highlight=array)

Control Array در دات نت (http://barnamenevis.org/showthread.php?65768-Control-Array-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA&highlight=control+array)

setareh69
سه شنبه 23 اسفند 1390, 21:55 عصر
سلام ، قبلا بحث شده :

ساختن یک شی به صورت آرایه (http://barnamenevis.org/showthread.php?126840-%D8%B3%D8%A7%D8%AE%D8%AA%D9%86-%DB%8C%DA%A9-%D8%B4%DB%8C-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87&highlight=array)

Control Array در دات نت (http://barnamenevis.org/showthread.php?65768-Control-Array-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA&highlight=control+array)


ممنون
ولی جواب سوال من نبود.من یک کدنوشتم شامل چند تا label . میخوام در یک حلقه for بزارم و هربار که i زیاد میشه از label1 شروع کنه و محتواشو داخل متغیر بریزه .چون تعداد label زیاده نمیتونم عدد بدم .در vb کدش اینطوری میشه.
Dim i As Integer
Dim txt As String
Private Sub Command1_Click()
For i = 0 To 20
txt = txt + Label1(i).Caption
Next
MsgBox (txt)
End Sub

خیلی راحت میتونیم با اضافه کردن عدد i مقدار داخل label را بخوانیم .همین کار رو در vb.net چطور میتونیم انجام بدیم؟
بازم ممنون

فرید نجفلو
سه شنبه 23 اسفند 1390, 22:17 عصر
همین کد تو VB.NET درسته فقط باید Caption رو به Text تغییر بدید(تغییر دادید؟)
البته با اصولی بودنش کاری ندارم

setareh69
سه شنبه 23 اسفند 1390, 22:53 عصر
همین کد تو VB.NET درسته فقط باید Caption رو به Text تغییر بدید(تغییر دادید؟)
البته با اصولی بودنش کاری ندارم

بله نوشتم ولی چون label آرایه نیست error میده.من با آرایه ای کردن label مشکل دارم . نمیتونم این کاررو انجام بدم.کدش را میخوام.ممنون

فرید نجفلو
سه شنبه 23 اسفند 1390, 23:02 عصر
بله نوشتم ولی چون label آرایه نیست error میده.من با آرایه ای کردن label مشکل دارم . نمیتونم این کاررو انجام بدم.کدش را میخوام.ممنون

بله شرمنده چون سریع نوشتم متوجه نشدم:
CType(Me.Controls("Lable" & i), Label).Text

setareh69
چهارشنبه 24 اسفند 1390, 00:27 صبح
بله شرمنده چون سریع نوشتم متوجه نشدم:
CType(Me.Controls("Lable" & i), Label).Text

ممنون
شرمنده ولی من این کدونوشتم
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
For Me.i = 1 To 2
MsgBox(CType(Me.Controls("Lable" & i), Label).Text)
Next
End Sub

ولی این خطا رو میده.
Conversion from string "Lable1" to type 'Integer' is not valid.
علتش چیه؟چه تغییری باید در کد ایجاد کنم؟
بازم ببخشید

Hybrid
چهارشنبه 24 اسفند 1390, 00:43 صبح
سلام دوست عزیز سوالت رو خوب متوجه نمیشم ، یک نمونه کد واستون نوشتم ببین همین منظورت بود :

setareh69
چهارشنبه 24 اسفند 1390, 13:56 عصر
سلام دوست عزیز سوالت رو خوب متوجه نمیشم ، یک نمونه کد واستون نوشتم ببین همین منظورت بود :

خیلی ممنون بله منظورم همین سواله.
این کد فقط مخصوص application هست؟؟آخه من این کد رو برای صفحه وبم میخوام این کد رو نوشتم

Partial Class Shop1
Inherits System.Web.UI.Page
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim txtAll As String = ""
For Each i As Control In Me.Controls
If TypeOf i Is Label Then
txtAll &= i.Text + vbTab
End If
Next
MsgBox(txtAll)
End Sub
End Class
ولی در خط 7زیر i.text خط میکشه و این error را میده.
'Text' is not a member of 'System.Web.Ui.Control'

شرمنده میشم اگر کمکم کنید.خیلی گیرم.
راستی چطوری مشخص کنم که مثلا فقط label 5 و label6 را میخوام محتواشوجمع کنه.شما در این برنامه شماره label را مشخص نکردید.


بازم ممنون و شرمنده

فرید نجفلو
چهارشنبه 24 اسفند 1390, 15:41 عصر
شما For i As Control in رو به صورت for i In بنویسید(در واقع از نو Object تعریف میشه)
یا بنویسید:
CType(i, Label).Text

راستی چطوری مشخص کنم که مثلا فقط label 5 و label6 را میخوام محتواشوجمع کنه.شما در این برنامه شماره label را مشخص نکردید.
با همین کد :
If i.ID = "Lable1" OrElse i.ID = "Lable2" Then
txtAll &= CType(i, Label).Text + vbTab
End If



ولی این خطا رو میده.

1
Conversion from string "Lable1" to type 'Integer' is not valid.




علتش چیه؟چه تغییری باید در کد ایجاد کنم؟
اگه شما از اول می گفتید واسه ASP.Net می خواید بهتر بود چون این روش تو ASP.Net ساگورت نمیشه

setareh69
چهارشنبه 24 اسفند 1390, 21:04 عصر
شما For i As Control in رو به صورت for i In بنویسید(در واقع از نو Object تعریف میشه)
یا بنویسید:
CType(i, Label).Text

با همین کد :
If i.ID = "Lable1" OrElse i.ID = "Lable2" Then
txtAll &= CType(i, Label).Text + vbTab
End If



اگه شما از اول می گفتید واسه ASP.Net می خواید بهتر بود چون این روش تو ASP.Net ساگورت نمیشه



ممنون.ولی یعنی چی؟؟؟یعنی در asp.net نمیتونیم اشیا آرایه ای داشته باشیم؟؟؟پس این کدروچطوری ایجاد کنیم؟؟

فرید نجفلو
چهارشنبه 24 اسفند 1390, 22:32 عصر
ممنون.ولی یعنی چی؟؟؟یعنی در asp.net نمیتونیم اشیا آرایه ای داشته باشیم؟؟؟پس این کدروچطوری ایجاد کنیم؟؟

دوست عزیز اگه شما می گفتید واسه چی این روش رو می خواید استفاده کنید شاید راه های بهتری پیدا می شد
به هر حال تو ASP.NET تابع(کالکشن) Me.Controls کنترل ها رو فقط با Index بر می گردونه در حالی که در WindowsApplication یک Overlord دیگه داره که با اسم کنترل هم کار می کنه!
حالا اگه شما می خواید با روش خودتون یعنی پیشوند باضافه عدد بدست بیارید باید با کد دوم بنده اسم ها رو مقایسه کنید
البته راه های دیگه هم هستن مثل استفاده از LINQ که باز هم دقیقا مثل دریافت با اسم راحت و سر راست نیست!