PDA

View Full Version : چطوری به کنترل های که حین برنامه اضافه میکنم دسترسی پیدا کنم



mylove_iman
دوشنبه 26 خرداد 1393, 10:01 صبح
سلام دوستان
من میخوام یه برنامه ازمون طراحی کنم که بدین صورتکه این آزمون به این صورته که من چندتا عکس (تعداد عکس ها قابل تنظیم باشه) را به شما نشون میدم بعد از چند ثانیه اونا را مخفی میکنم و از شما سوال میکنم.
یعنی یک عکس به شما میده بعد از شما میخواد روی عکس کلیک کنید.در مواقع باید جای عکس را تو ذهن داشته باشیمو سریع روش کلیک کنیم


من تونستم تعداد عکس ها که قرار نمایش داده بشه را تنظیم و به تعداد تنظیم شده در لود صفحه عکس ها را در فرمم نشون بدم.حتی میتونم از بین عکس ها یکی را تصادفی انتخاب کنم و از شما سوال بپرسم.تا اینجا مشکل ندارم
مشکل من اینکه بعد از اینو نمیدونم باید چکار کنم.یعنی چطور بفمم شما روی کدوم عکس کلیک کردید که با عکس سوال مقایسه کنم و ببینم شما درست جواب دادید یا خیر؟؟؟

در واقع نمیدونم چطوری باید متدهای کنترل های که حین اجرای برنامه به فرم اضافه میشه را باهاشون کار کنم؟؟

اگر قبلا فرمی داشتم که عکس ها را روش چیده بودم خیلی راحت از متدهاش استفاده می کردیم ولی حالا چی؟؟؟

راستی دوستان اصلا از عکس میتونم برای این آزمونم استفاده کنم یا باید دکمه اضافه کنم و عکس هامو زمینه دکمم بزارم؟؟

ممنون از وقتی که میزارید

matin.soft
دوشنبه 26 خرداد 1393, 10:28 صبح
هر عکسی که اضافه میشه حتما دارای یه نامی هست شما از این نام استفاده کنید دیگه.

aliagamon
دوشنبه 26 خرداد 1393, 10:44 صبح
منظورتون اینه که رویداد هارو تعریف کنید ؟

PictureBox pb = new PictureBox();
pb.MouseClick += new MouseEventHandler(MouseclickFunction);

تو کد بالا کافیه یه تابع mouseclick بهش بدی ...
اگه مشکلتون این نیست توضیج بدین

mylove_iman
دوشنبه 26 خرداد 1393, 10:55 صبح
دقیقا مشکلم همین بود.واقعا ممنون از وقتی که گذاشتید
یه سوال دیگم بپرسم؟ببخشیدا ولی الان کدمو کجا باید بزارم
pb.MouseClick += new MouseEventHandler(MouseclickFunction);

باید یه تابع با نام

MouseclickFunction
ایجاد کنم و کدهامو اینجا بنویسم

ببخشید من یکم نابلدم

واقعا ممنون

aliagamon
دوشنبه 26 خرداد 1393, 11:15 صبح
شما یه تابع mouse_click درست کنید و اون رو بدید به کد بالا ...
کد بالا رو هم در هنگام ساخت pictureBox ها اضافه کنید

private void MouseClickFunc(object sender, EventArgs e)
{
MessageBox.Show((sender as PictureBox).Name);
}

mylove_iman
چهارشنبه 28 خرداد 1393, 08:58 صبح
دوستان برنامم باز دچار مشکل شد
من تو لود صفحه کد زیر را نوشیتم

timer1.Start();
for (int i = 1; i < 4; i++)
{
for (int j = 1; j < 4; j++)
{
Image newImage = Image.FromFile("C:\\1.jpg");
PictureBox lbl = new PictureBox();
Point p = new Point((i * 100), (j * 100));
lbl.Location = p;
Control[] cont = new Control[] { lbl };
Controls.AddRange(cont);
lbl.Image = newImage;
lbl.Name = "PictureBox"+System.Convert.ToString(j) + System.Convert.ToString(i);
lbl.MouseClick += new MouseEventHandler(MouseClickFunc);
}
}



حالا میخوام تو کد تایمرم بگم که تمام پیکچرباکس هام یه عکس دیگه را نشون بدن ولی نمیتونم .اصلا نمیتونم به تک تک شی هام که اضافه کردم دسترسی پیدا کنم.حالا چه تو تایمر چه جای دیگه.لطفا یکم راهنماییم کنه.برای هر کدوم که یک اسم گذاشتم ولی چطوری بهشون دسترسی پیدا کنم