PDA

View Full Version : سوال: پیدا کردن مشخصه Name زمان اجرا



mehdi.safavie
جمعه 07 تیر 1392, 02:29 صبح
نمیدونم چطور باید توضیح بدم چی نیاز دارم . زمانی که برنامه در حال اجراست ، میخوام با کلیک بر روی یک Button مشخصه Name اون Button رو برام پیغام بده .

در زمان کد نویسی به هر دلیلی نمیدونیم که Name اون چیه ، در کل آیا کدی هست که مثلا اینطوری کار کنه :

MsgBox(Me.Name)

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

یه برنامست که با موس هر جایی از فرم کلیک کنی همونجا یه Button ایجاد میکنه .
برای اینکار یه آرایه از نوع Button گرفتم . با فرض اینکه آرایه 10 مقدار داره . حالا به هر Button ایجاد شده یه برنامه داده شده و همشون یه کار رو انجام میدن (مثلا یه پیام میدن) ، حالا میخوام وقتی روش راست کلیک میکنم اون Button حذف بشه یا اصلا غیب بشه . ولی مشکل اینجاست که من نمیتونم Name اون Button ی که کلیک کردم رو پیدا کنم تا تو روال راست کلیکش رو بگم نام فلان رو حذف یا مخفی کن .
پس به این نیاز دارم یه چیز مثله Me.Name که به جای فرم همون Button ی که کلیک شده رو برام نمایش بده .

hosein320
جمعه 07 تیر 1392, 04:08 صبح
سلام
شما تو کدی که رویداد اون کنترلتون رو نوشتید این کد رو اضافه کنید
Dim Ctr as control = sender
msgbox ctr.name

m.webgard
جمعه 07 تیر 1392, 04:11 صبح
سلام
متوجه نشدم منظورت چیه ولی چیزی که به ذهن من میرسه اینه
MsgBox(sender.name)

mehdi.safavie
جمعه 07 تیر 1392, 07:36 صبح
این کدی که هر دوی شما گفتید هیچ کاری نمیکنه و کادر پیام خالیه متاسفانه

hosein320
جمعه 07 تیر 1392, 16:17 عصر
دوست عزیز sender اون شی رو بر میگردونه
حتما شما یه جای کار اشتباه کردین
شما این مثال (http://barnamenevis.org/attachment.php?attachmentid=103236&d=1366726838) رو ببینید

mehdi.safavie
جمعه 07 تیر 1392, 20:30 عصر
مثال شما درسته ، اما کاری که من کردم استفاده از شی ها به صورت آرایه ای هست . و این برنامه ای که دادید در این روش به کار نمیاد . من با هر بار کلیک کردن در مختصات موس یک شی ایجاد میکنم و میخوام با هر بار کلیک روی اون شی ایجاد شده اون شی رو پاک کنم ، فقط به نام اون شی ای که کلیک کردم نیاز دارم تا دستور پاک شدنش رو باهاش اجرا کنم .

mehdi.safavie
جمعه 07 تیر 1392, 22:10 عصر
بزار یه کم ساده ترش کنیم ، تصور کنید که چشمهاتون رو با چشم بند بستید ، حالا 5 تا Button روی فرم در زمان طراحی اضافه میکنید . حالا میاید به صورت اتفاقی بدون اینکه چشم ها رو باز کنید روی یکی از این Button ها کلیک میکنید و میخواین که در یک کادر پیام بهتون نام اون Button رو بگه .
*( روی Button ها هیچ تکس ی هم نوشته نشده ):قهقهه:

مهرداد صفا
جمعه 07 تیر 1392, 23:11 عصر
این کدی که هر دوی شما گفتید هیچ کاری نمیکنه و کادر پیام خالیه متاسفانه

با سلام.
به دلیل اینکه زمانی که قصد ساختن و اضافه کردن button ها به فرم را داشتید مشخصه Name آنها را تنظیم نکردید!

Button(n).Name="Button"+n


حالا برای حذف کنترلی که رویداد روی آن اتفاق می افتد:

Me.Controls.Remove(sender)

mehdi.safavie
شنبه 08 تیر 1392, 05:39 صبح
دم همتون گرم جواب رو M.Safa برای من روشن کردند که اشتباهم کجا بود . ( فراموش کردن این نکات که از اصولی نویسیه برنامه نویسیه همیشه باعث دردسره )