PDA

View Full Version : مشکل با آرایه و حلقه



VBdotNet
پنج شنبه 23 مهر 1388, 14:10 عصر
سلام . یه سوال داشتم .
من یه آرایه 6 تایی ساختم که مقدارهای آن دربردارنده ی رنگ هستند ، من می خوام از این آرایه برای تغییر رنگ برنامم استفاده کنم . (مثلا وقتی کاربر روی یک دکمه کلید کرد به ترتیب به مقدار بعدی آرایه بره ، یعنی رنگ برنامه به ترتیب با کلیک کردن روی اون دکمه عوض شه و وقتی که به آخرین مقدار رسید دوباره روی مقدار اولیه بیاد . اما مشکل اینجاست که من آرایه رو تعریف کردم و مقدار ها رو هم دادم و آرایه را روی یه حلقه ی For گذاشتم ولی وقتی روی اون دکمه کلیک می کنم آخرین رنگ آرایه رو میاره ، اگه کسی می دونه لطفا کمکم کنه .


Dim c As Integer
Dim i As Integer
Dim array(6) As Color
array(1) = Color.Blue
Array(2) = Color.Red
Array(3) = Color.Green
Array(4) = Color.White
Array(5) = Color.Yellow
Array(6) = Color.SeaGreen
For i = 6 To 1 Step -1
Me.BackColor = array(i)
c = c + 1
Next

Mani_rf
پنج شنبه 23 مهر 1388, 15:35 عصر
دوست عزیز، حلقه For برای پیمایش یک آرایه استفاده می شود. برای اینکار شما به متغیری نیاز دارید که اندیس خانه فعال آرایه را در بر داشته باشد و در موقع کلیک شدن به اندیس بی افزاید.

بدین صورت :


تعریف I به صورت متغییر دائمی و یا تعریف در بالا ترین سطر برنامه '


Static i Integert
'--------------------------'
Dim c As Integer

Dim array(6) As Color

array(1) = Color.Blue
Array(2) = Color.Red
Array(3) = Color.Green
Array(4) = Color.White
Array(5) = Color.Yellow
Array(6) = Color.SeaGreen

i += 1

Me.BackColor = array(i)

VBdotNet
پنج شنبه 23 مهر 1388, 16:26 عصر
دوست عزیز، حلقه For برای پیمایش یک آرایه استفاده می شود. برای اینکار شما به متغیری نیاز دارید که اندیس خانه فعال آرایه را در بر داشته باشد و در موقع کلیک شدن به اندیس بی افزاید.

بدین صورت :


تعریف I به صورت متغییر دائمی و یا تعریف در بالا ترین سطر برنامه '


Static i Integert
'--------------------------'
Dim c As Integer


Dim array(6) As Color


array(1) = Color.Blue
Array(2) = Color.Red
Array(3) = Color.Green
Array(4) = Color.White
Array(5) = Color.Yellow
Array(6) = Color.SeaGreen


i += 1


Me.BackColor = array(i)


با تشکر از راهنماییتون ، عالی بود . :تشویق:
یه سوال دیگه : اما اگر یک دکمه ی دیگه روی فرم بذاریم که رنگ قبلی رو نمایش بده باید کدش به چه صورت باشه ؟

VBdotNet
جمعه 24 مهر 1388, 10:45 صبح
یعنی کسی نمی دونه که چه جوری می شه یک دکمه ی دیگه روی فرم بذاریم که رنگ قبلی رو نمایش بده؟!!! :متفکر:

reza1944
جمعه 24 مهر 1388, 13:23 عصر
i -= 1
يا
i=i-1

Me.BackColor = array(i)

همين

VBdotNet
جمعه 24 مهر 1388, 14:40 عصر
i -= 1

يا
i=i-1


Me.BackColor = array(i)


همين


من این کار رو قبلا کردم ولی ارور زیر رو میده (ارور توی عکس)
http://up.iranblog.com/2/1255775621.jpg

sari-1369
جمعه 24 مهر 1388, 22:31 عصر
اون عددی که توی پرانتز نوشته شده تعداد خونه های آرایه شماست . و ایندکس های آرایه از 0 شروع میشن ، شما برای مقدار دهی به خونه های آرایه از 0 شروع کن و آخریش باشه 5 .

VBdotNet
شنبه 25 مهر 1388, 16:11 عصر
اون عددی که توی پرانتز نوشته شده تعداد خونه های آرایه شماست . و ایندکس های آرایه از 0 شروع میشن ، شما برای مقدار دهی به خونه های آرایه از 0 شروع کن و آخریش باشه 5 .

می شه اینی که میگین رو به صورت کد به من بگین چون من این راه رو امتحان کردم ولی باز همون ارور را داد.(شاید من منظورتون رو اشتباه فهمیدم)

Mani_rf
شنبه 25 مهر 1388, 19:03 عصر
دوست عزیزکمی تلاش برای نوشتن کد ها باعث افزایش قدرت برنامه نویسی ، خلاقیت و شناختن امکانات زبان می شود. سعی کنید قبل از پرسیدن کمی برای رفع مشکل فکر و تلاش کنید. (البته جسارت نشه ، قصد توهین ندارم تجربیاتم را گفتم. من در هین رفع مشکلات برنامه نویسی ام همیشه چندین مطلب جدید می آموزم)

در هر صورت : کد کی می خواهید رنگ را به قبل ببرد را درون این شرط قرار دهید :


IF I >0 Then
.
.
.
End If


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


IF I <= Array.GetUpperBound(0) Then
.
.
.
End If

موفق باشید...

sari-1369
شنبه 25 مهر 1388, 22:04 عصر
می شه اینی که میگین رو به صورت کد به من بگین چون من این راه رو امتحان کردم ولی باز همون ارور را داد.(شاید من منظورتون رو اشتباه فهمیدم)

Static i As Integer
Dim array(5) As Color
array(0) = Color.Blue
array(1) = Color.Red
array(2) = Color.Green
array(3) = Color.White
array(4) = Color.Yellow
array(5) = Color.SeaGreen
If i = 5 Then
i = 0
Else
i = i + 1
End If
Me.BackColor = array(i)

VBdotNet
یک شنبه 26 مهر 1388, 16:44 عصر
دوست عزیزکمی تلاش برای نوشتن کد ها باعث افزایش قدرت برنامه نویسی ، خلاقیت و شناختن امکانات زبان می شود. سعی کنید قبل از پرسیدن کمی برای رفع مشکل فکر و تلاش کنید. (البته جسارت نشه ، قصد توهین ندارم تجربیاتم را گفتم. من در هین رفع مشکلات برنامه نویسی ام همیشه چندین مطلب جدید می آموزم)


در هر صورت : کد کی می خواهید رنگ را به قبل ببرد را درون این شرط قرار دهید :


IF I >0 Then
.
.
.
End If


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


IF I <= Array.GetUpperBound(0) Then
.
.
.
End If


موفق باشید...


حرف شما متین ، ولی من خودم همیشه عادت دارم ، اول سعی می کنم خودم به جواب برسم ، بعد اگه موفق نشدم می پرسم.

alonmahdi
سه شنبه 10 اردیبهشت 1392, 10:39 صبح
سلام به عزیزان دل
اگر از حلقه استفاده کنید آخرین رنگ را نشون میده.اگه از i+=1 یا i++ استفاده کنید بعد از شش بار برنامه خطا میده پس برنامه را اینجور مینویسیم



'--------------------------'
Dim c As Integer

Dim array(6) As Color

array(1) = Color.Blue
Array(2) = Color.Red
Array(3) = Color.Green
Array(4) = Color.White
Array(5) = Color.Yellow
Array(6) = Color.SeaGreen
(if(i<=6
i++;
else
i=1;

Me.BackColor = array(i