PDA

View Full Version : استفاده از کنترل ها همراه با آرایه



r0ot$harp
پنج شنبه 08 فروردین 1387, 03:25 صبح
سلام دوستان
من در VB6 برای اینکه مثلا یه Label رو آرایه کنم Index رو تغییر می دهم ولی در Vb.Net نمی دونم چی کار کنم هر کاری می کنم نمی تونم کنترل های آرایه ای بسازم .
من می خوام یه لیبل داشته باشم به نام ehsan و 5 تا از اونو به اینصورت آرایه کنم .
ehsan(0) - ehsan(1) - ehsan(2) - ehsan(3) - ehsan(4)
باتشکر

Dariuosh
پنج شنبه 08 فروردین 1387, 10:43 صبح
دیگه تو دات نت کنترلها آرایه نمیشن مثل VB6 ولی به جاش یه سری امکانات خیلی بیشتر و بهتر داره که حتماً راضیت میکونه
مثلاً میتونی چندتا کنترل که حتی بعضی وقتی مثله هم نیستن رو هم به یه زیربرنامه بایند کنی

sinpin
پنج شنبه 08 فروردین 1387, 15:21 عصر
سلام دوستان
من در VB6 برای اینکه مثلا یه Label رو آرایه کنم Index رو تغییر می دهم ولی در Vb.Net نمی دونم چی کار کنم هر کاری می کنم نمی تونم کنترل های آرایه ای بسازم .
من می خوام یه لیبل داشته باشم به نام ehsan و 5 تا از اونو به اینصورت آرایه کنم .
ehsan(0) - ehsan(1) - ehsan(2) - ehsan(3) - ehsan(4)
باتشکر
یک ژنریک کالکشن از کنترل مورد نظرتون بسازید...

r0ot$harp
پنج شنبه 08 فروردین 1387, 15:22 عصر
دیگه تو دات نت کنترلها آرایه نمیشن مثل VB6 ولی به جاش یه سری امکانات خیلی بیشتر و بهتر داره که حتماً راضیت میکونه
مثلاً میتونی چندتا کنترل که حتی بعضی وقتی مثله هم نیستن رو هم به یه زیربرنامه بایند کنی
دوست من باتشکر از جوابتون ولی من احتیاج به کنترل آرایه ای دارم .

من یه عکس دارم می خوام با استفاده از حلقه ها اونو 20 تا کنم یعنی picturebox آرایه ای بشه یا نه اصلا اینجوری باشه :
pic1-pic2-pic3 ...
باتشکر

r0ot$harp
پنج شنبه 08 فروردین 1387, 15:38 عصر
یک ژنریک کالکشن از کنترل مورد نظرتون بسازید...

دوست عزیز منظورتون از ژنریک کالکشن چیست :؟
این کارو از کجا و چه جوری باید نجام بدهم ؟
باتشکر

sinpin
پنج شنبه 08 فروردین 1387, 15:59 عصر
دوست عزیز منظورتون از ژنریک کالکشن چیست :؟
این کارو از کجا و چه جوری باید نجام بدهم ؟
باتشکر



Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim pictures As New List(Of PictureBox)()
For i As Integer = 0 To 20
Dim pic As New PictureBox()
pic.BackColor = Color.Red
pic.Height = 10
pictures.Add(pic)
pictures(i).Location = New Point(10, i * 20)
Next
End Sub

r0ot$harp
پنج شنبه 08 فروردین 1387, 16:05 عصر
Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim pictures As New List(Of PictureBox)()
For i As Integer = 0 To 20
Dim pic As New PictureBox()
pic.BackColor = Color.Red
pic.Height = 10
pictures.Add(pic)
pictures(i).Location = New Point(10, i * 20)
Next
End Sub

sinpin عزیز ممنون از جوابهای سریع و خوبتان
یک سوال :
من چه جوری مثل Vb6 بیام و در محیط Design کنترل PictureBox آرایه ای بسازم .
در VB6 برای کنترل ها Index بود ولی در اینجا نمی دونم چگونه این کار رو انجام دهم .
باتشکر

sinpin
پنج شنبه 08 فروردین 1387, 16:11 عصر
sinpin عزیز ممنون از جوابهای سریع و خوبتان
یک سوال :
من چه جوری مثل Vb6 بیام و در محیط Design کنترل PictureBox آرایه ای بسازم .
در VB6 برای کنترل ها Index بود ولی در اینجا نمی دونم چگونه این کار رو انجام دهم .
باتشکر
خواهش میکنم.
در design-time ممکن نیست و کاری که با Vb6 انجام میشد با اصول oop منافات دارد.
اما همانطور که در تیکه کد پستهای قبلی دیدید میتونید یک لیست از کنترلها در زمان اجرا بسازید
اما اگر همچنان دنبال روشی در design-time هستید شاید از کنترل ImageList بتونید برای این مورد خاص استفاده کنید و یا خودتون یک یوزرکنترل بسازید.
دقیقا میخواین چیکار کنید تا بشه دقیقتر پاسخ داد.

r0ot$harp
پنج شنبه 08 فروردین 1387, 16:19 عصر
خواهش میکنم.
در زمان طراحی ممکن نیست و کاری که با Vb6 انجام میشد با اصول oop منافات دارد.
همانطور که دیدید میتونید یک لیست از کنترلها در زمان اجرا بسازید
اما اگر همچنان دنبال روشی در design-time هستید شاید از کنترل ImageList بتونید برای این مورد خاص استفاده کنید و یا خودتون یک یوزرکنترل بسازید.
دقیقا میخواین چیکار کنید تا بشه دقیقتر پاسخ داد.

من می خوام در ابتدای شروع برنامه اطلاعات از دیتابیس خوانده می شود و من اینگونه می خوام عمل کنم :

10 pictue باز شود و مثلا Picture های 1-2-6-8 همشون عکساشون مثلا عکس یک باشند و بقیه عکسهای قرمز ولی هر دفعه تعداد Picture ها متفاوت می باشد .
باتشکر

r0ot$harp
پنج شنبه 08 فروردین 1387, 17:36 عصر
بخوام به زبون ساده تر بگم :

من الان 10 Picturebox تو محیط Design گذاشتم , حالا الان می خوام وقتی برنامه شروع شد با حلقه این 10 Picturebox که از قبل Visible=false بود الان Visible=True بشه .
باتشکر

bad_boy_2007
پنج شنبه 08 فروردین 1387, 18:53 عصر
من هم همچین مشکلی داشتم واسه DatePicker فارسی که واسه برنامه ام مینوشتم و مشکلم رو اینطور حل کردم :

ابتدا کنترلها رو روی فرم قرار دادم مثلا TXT1 , TXT2 و سپس کدی مشابه کد زیر نوشتم :



Public Class Form1

Private Arr(1) As TextBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Arr(0) = txt1
Arr(1) = txt2
End Sub
End Class




این هم دقیقا همون آرایه از کنترلهایی هست که تو VB6 بود و تو Designer هم کنترلت طراحی میشه

r0ot$harp
پنج شنبه 08 فروردین 1387, 19:40 عصر
من هم همچین مشکلی داشتم واسه DatePicker فارسی که واسه برنامه ام مینوشتم و مشکلم رو اینطور حل کردم :

ابتدا کنترلها رو روی فرم قرار دادم مثلا TXT1 , TXT2 و سپس کدی مشابه کد زیر نوشتم :



Public Class Form1

Private Arr(1) As TextBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Arr(0) = txt1
Arr(1) = txt2
End Sub
End Class


این هم دقیقا همون آرایه از کنترلهایی هست که تو VB6 بود و تو Designer هم کنترلت طراحی میشه


باتشکر از جوابتون .

دوستان من این کد رو نوشتم ولی مشکل داره ممنون می شم مشکل رو حل کنید .
در ضمن : من 20 تا کنترل Picturebox در محیط Design گذاشتم .


Private arr(10) As PictureBox
For f = 1 To 10
Dim m As Object
m = "PictureBox" & f
arr(f) = m
Next f

For d = 1 To 2
arr(d).Visible = True
Next d

باتشکر

sinpin
پنج شنبه 08 فروردین 1387, 21:43 عصر
بخوام به زبون ساده تر بگم :

من الان 10 Picturebox تو محیط Design گذاشتم , حالا الان می خوام وقتی برنامه شروع شد با حلقه این 10 Picturebox که از قبل Visible=false بود الان Visible=True بشه .
باتشکر

یکبار (مثلا در لودینگ فرم) تمام پیکچرباکسها رو بریزید توی یک لیست و بعد با اون لیست کار کنید.

r0ot$harp
پنج شنبه 08 فروردین 1387, 21:55 عصر
دوستان عزیز همین الان یکی از دوستانم بهم کمک کرد و گفت که چی کار کنم اینم نتیجه ی کار :

کد زیر 10 Picturebox که از قبل رویه فورم هست رو Visible=true می کنه :


For f = 1 To 10


arr(1) = Controls.Find("picturebox" & f, True)(0)
arr(1).Visible = True
Next