PDA

View Full Version : سوال: یک سوأل ابتدایی،برروی کدام کنترل کلیک شده است؟



vb2005
دوشنبه 18 آذر 1387, 01:09 صبح
سلام دوستان،فرض کنید تعداد 10 Picturebox را برروی فرم قرار داده ایم:
چطور می توان تشخیص داد که در هنگام اجرای برنامه برروی کدام Picturebox کلیک شده است؟:متفکر:
اگر بخواهیم که هر Picturebox دارای رویداهای MosuDown و MouseUp و MouseMove باشد،آیا باید برای هرکدام به صورت مجزا کدنویسی انجام شود؟:متفکر:

r0ot$harp
دوشنبه 18 آذر 1387, 01:35 صبح
سلام دوستان،فرض کنید تعداد 10 Picturebox را برروی فرم قرار داده ایم:
چطور می توان تشخیص داد که در هنگام اجرای برنامه برروی کدام Picturebox کلیک شده است؟:متفکر:
اگر بخواهیم که هر Picturebox دارای رویداهای MosuDown و MouseUp و MouseMove باشد،آیا باید برای هرکدام به صورت مجزا کدنویسی انجام شود؟:متفکر:

دوست عزیز بهترین و راحت ترین راه برای این کار استفاده از آرایه هست . به این صورت که شما تمام PictureBox هاتون رو یک نام و با Index تعریف می کنید به این ترتیب شما هر تعداد از این کنترل استفاده کنید تمام کنترل ها از اندیس 0 شروع و تا اندیس آخری پایان می یابد .

مثلا شما احتیاج به 10 کنترل از نوع PictureBox دارین . نام کنترل هاتون اینگونه میشه :


PictureBox(0) .... PictureBox(9)



و برای کد نویسی اینگونه دارین :


Private Sub Picture1_Click(Index As Integer)

End Sub

که مقدار داخل Index نشان دهنده کنترلی هست که در زمان اجرا رویه اون کلیک شده است .



باتشکر احسان

shask00l
دوشنبه 18 آذر 1387, 02:08 صبح
آقا احسان .... فکر کنم شما منظور دوستمون رو بد متوجه شدید . این 10 تا picbox باید کنار هم باشند و وقتی کاربر روی 1 دونشون کلیک کرد شماره مربوطه رو برگردونه .

فکر میکنم 1 متغییر تعریف کنید و روی هرکدوم از picbox ها که لیک شد مقدار مربوطه توی اون متغییر قرار بگیره . بعد با بررسی اون متغییر میتونید picbox رو شناسایی کنید . البته این یک راه ساده و بسیار کثیف هستش . راه های بهتر و بهینه تری هم وجود داره.

اگر هم من منظورتون رو بد متوجه شدم ..... پیشاپیش عذرخواهی میکنم.

hamed_F
دوشنبه 18 آذر 1387, 09:13 صبح
سلام دوستم

خیلی ساده هست

به این نمونه نگاه کن

vb2005
سه شنبه 19 آذر 1387, 02:47 صبح
احسان جان از توضیحاتی که دادید ممنونم ولی منظورم این نبود.


آقا احسان .... فکر کنم شما منظور دوستمون رو بد متوجه شدید . این 10 تا picbox باید کنار هم باشند و وقتی کاربر روی 1 دونشون کلیک کرد شماره مربوطه رو برگردونه .

فکر میکنم 1 متغییر تعریف کنید و روی هرکدوم از picbox ها که لیک شد مقدار مربوطه توی اون متغییر قرار بگیره . بعد با بررسی اون متغییر میتونید picbox رو شناسایی کنید . البته این یک راه ساده و بسیار کثیف هستش . راه های بهتر و بهینه تری هم وجود داره.

اگر هم من منظورتون رو بد متوجه شدم ..... پیشاپیش عذرخواهی میکنم.

بله دوست عزیزمنظورم همین بود و دنبال راه بهتر وبهینه هستم.

آقا حامد از شما هم به خاطر توجه تون ممنونم.

r0ot$harp
سه شنبه 19 آذر 1387, 10:49 صبح
آقا احسان .... فکر کنم شما منظور دوستمون رو بد متوجه شدید . این 10 تا picbox باید کنار هم باشند و وقتی کاربر روی 1 دونشون کلیک کرد شماره مربوطه رو برگردونه .

فکر میکنم 1 متغییر تعریف کنید و روی هرکدوم از picbox ها که لیک شد مقدار مربوطه توی اون متغییر قرار بگیره . بعد با بررسی اون متغییر میتونید picbox رو شناسایی کنید . البته این یک راه ساده و بسیار کثیف هستش . راه های بهتر و بهینه تری هم وجود داره.

اگر هم من منظورتون رو بد متوجه شدم ..... پیشاپیش عذرخواهی میکنم.


احسان جان از توضیحاتی که دادید ممنونم ولی منظورم این نبود.

بله دوست عزیزمنظورم همین بود و دنبال راه بهتر وبهینه هستم.

آقا حامد از شما هم به خاطر توجه تون ممنونم.


دوستان دقیقا برنامه ای که دوست عزیزم hamed_F (http://barnamenevis.org/forum/member.php?u=17922) قرار داده به صورتی عمل می کنه که من گفتم .

شما به راحتی با خط زیر می تونید شماره PictureBox کلیک شده را بدست آورید :


Private Sub Picture1_Click(Index As Integer)
MsgBox Index + 1
End Sub




باتشکر احسان

shask00l
سه شنبه 19 آذر 1387, 13:54 عصر
دنبال راه بهتر وبهینه هستم.

برای انجام دادن این کار با کثیف کاری کمتر میتونی همه 10 تا تصویر رو توی 1 دونه picbox کنار هم بچینی . بعد وقتی روی این picbox کلیک شد با 1 نسبت ریاضی خیلی ساده میتونی شماره عکس رو بدست بیاری .
فرض کن عرض هر تصویر 150 پیکسل باشه در اون صورت بعد از کلیک کردن باید x رو بر 150 تقسیم بکنی و با کمک تابع abs جزء صحیح رو جدا کنی . عدد بدست اومده شماره عکسته.

vb2005
چهارشنبه 20 آذر 1387, 04:48 صبح
از همه دوستان ممنونم.
اینم نتیجه کار،دقیقاً همون شد که میخواستم.