PDA

View Full Version : سوال: تغییر عکس به وسیله دکمه بعد و قبل ( آرایه )



lord_helgard
سه شنبه 07 بهمن 1393, 14:15 عصر
با سلام
دوستان من میخواهم دو دکمه در فرم قرار بدم که بعد از بازیابی اطلاعات از دیتابیس مقدار فیلد آی دی که اولین فیلد از دیتاریدر هست رو در آرایه برزیم و بع همین ترتیب بعد از قراردهی مقدار داده های بدست آمده با استفاده از select عکس موجود دردایرکتوری که آدرس آن در دیتابیس ذخیره شده نمایش بده، وقتی روی دکمه next کلیک کنم عکس بعدی و وقتی روی Preview کلیک کنم قبلی نمایش داده بشه
آرایه رو به صورت زیر تعریف کردم:
List<string> myArr = new List<string>();
int a,i;

دستور جستجواولیه بر اساس کمبوباکس به صورت زیر که فیلد آی دی رو در آرایه قرار میده:


SqlCommand cmd = new SqlCommand("select img_id,exdate,ostad from img_table where dars=N'" + comboBox1.SelectedItem + "'", conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)// اگر ستونی جهت خواندن وجود داره
{
while (dr.Read()) // تا رمانی که میتواند بخواند
{

a = myArr.Count;
myArr.Add(dr[0].ToString());
if (myArr.Count > 1)
{
btnnext.Visible = true;
btnpreiw.Visible = true;



}
....
حالا در دکمه next این کُد ، اما هنگام اجرا فقط آخرین خونه از آرایه رو در متغیر imgid و دستور select قرار مید، لطفاً راهنایی کنید که چه طور میتونم خونه های آرایه رو با فشردن هر بار دکمه next یا بر عکس در دستور select قرار بدم تا هر بار عکس مربوط به آن آی دی قرار گرفته در آرایه نمایش داده بشه.
for (i=0; i < a; i++)
{
string imgid = null;
imgid = myArr[i].ToString();
SqlCommand cmd1 = new SqlCommand("select img_id,img_data,exdate,ostad,uniname from img_table where img_id=N'" + imgid + "'", conn);
conn.Open();
SqlDataReader dr1 = cmd1.ExecuteReader();
if (dr1.HasRows)
{
while (dr1.Read())
{
path = dr1[1].ToString();
pictureBox1.Load(path);
lbltitle.Visible = true;
label1.Visible = true;
string lbl;
lbl = comboBox1.SelectedItem.ToString();
label1.Text = lbl;
label2.Text = dr1[2].ToString();
label3.Text = dr1[3].ToString();
label7.Text = dr1[4].ToString();
}
}

فرم بنده مانند زیر است ، در قبل مقادیر در comboBox قرار میگرفت و با انتخاب هر آیتم عکس مربوط به آن نمایش داده میشد، اما حال میخواهم از این دکمه ها استفاده کنم !!
127954

Share & Learn
سه شنبه 07 بهمن 1393, 14:59 عصر
سلام

من کدتون رو بررسی نکردم ولی چیزی که به نظرم واضح میاد اینه که نباید از for استفاده کنید
هر باری که Next رو می زنید یک واحد به i اضافه کنید و هر باری که روی Previous کلیک می کنید یک واحد از i کم کنید
فقط این رو بررسی کنید که اگر آخرین Id بود دیگه i رو ضافه نکنه و پیغام بده تصویر دیگه ای نیست و اگر اولین Id بود هم از i کم نکنه و یه پیغام مناسب بده

و نکته ی دیگه اینکه Previous به معنی قبلی و Preview به معنی پیش نمایش هست که شما باید اسم باتن رو Previous بذارید نه Preview

موفق باشید :)

lord_helgard
سه شنبه 07 بهمن 1393, 15:55 عصر
سلام

من کدتون رو بررسی نکردم ولی چیزی که به نظرم واضح میاد اینه که نباید از for استفاده کنید
هر باری که Next رو می زنید یک واحد به i اضافه کنید و هر باری که روی Previous کلیک می کنید یک واحد از i کم کنید
فقط این رو بررسی کنید که اگر آخرین Id بود دیگه i رو ضافه نکنه و پیغام بده تصویر دیگه ای نیست و اگر اولین Id بود هم از i کم نکنه و یه پیغام مناسب بده

و نکته ی دیگه اینکه Previous به معنی قبلی و Preview به معنی پیش نمایش هست که شما باید اسم باتن رو Previous بذارید نه Preview

موفق باشید :)

دقیقآ درست میفرمائید، دایرکت مِسِج نذاشتَم که دیگه انقدر مذاحم شُدَم کخ ...
اینجا لااقل تشکر رو میتونم بفرستم!
در مورد برنامه خب برای نمایش میخوام بگم بعد از جستجو این قضیه انجام بشه، یعنی بهتره از چه روشی استفاده کنم، تو لُود فرم که نمیشه نوشت، با تابع یا کلاس میشه ؟
در ضمن خیلی هم کار با توابع و کلاس رو وارد نیستم :افسرده: