PDA

View Full Version : سوال: فراخوانی Eventهای چندین کنترل با یک تابع برای جلوگیری از تکرار



ghayour
جمعه 30 مهر 1395, 17:22 عصر
سلام
منظورم از عنوان سوال اینه که مثلا 20 تا تکست باکس داریم که قراره textchanged اونها یک تابع رو اجرا کنن. چجوری میشه بدون اینکه همه اون تکست باکس ها رو بنویسیم و تابع رو داخلش قرار بدیم یدونه تابع کلی بنویسیم(و تابع مورد نظر رو در اون قرار بدیم) و به همه اون تکست باکس ها متصل کنیم که اگه هر کدوم از تکست باکس ها متنشون تغییر کردن تابع اجرا بشه

ممنون

Mahmoud.Afrad
جمعه 30 مهر 1395, 18:42 عصر
http://barnamenevis.org/showthread.php?446869-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF-%DB%8C%DA%A9%D8%B3%D8%A7%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%86%D9%86%D8%AF-%DA%A9%D9%86%D8%AA%D8%B1%D9%84

ghayour
جمعه 30 مهر 1395, 19:03 عصر
نمیدونم چجوری گشتم که پیدا نشد شرمنده :خجالت:

ممنون کارم راه افتاد :قلب:

ghayour
جمعه 30 مهر 1395, 22:29 عصر
یه مشورت دیگه واسه همین جلوگیری از تکرار
توی رویداد KeyDown هر تکست باکسی این کد رو نوشتم

if (e.KeyCode == Keys.Down)
textBox4.Focus();
else if (e.KeyCode == Keys.Up)
textBox2.Focus();

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

چه کدی میشه نوشت واسه فوکوس روی تکست باکس های کناری بدون اینکه این همه تکرار کد بشه
مثلا اینجوری که توی هر تکست باکسی بودیم با فشردن کلید اول از همه نام اون تکست باکس گرفته شه و متناسب با اون تکست باکس اسم تکست باکس کناریشو حدس بزنه و بره رو اون. یا چیز دیگه ای خود ویژال نداره واسه این؟!

ممنون

Mahmoud.Afrad
شنبه 01 آبان 1395, 20:55 عصر
میتونید یک TableLayoutPanel با تعداد سطر و ستون مورد نیاز به فرم اضافه کنید و کنترلهایی که قصد جا به جا شدن بینشون رو دارید در سلولها فرار بدید. از طریق متد GetPositionFromControl از شئ TableLayoutPanel میتونید اندیس سطر و ستون کنترل جاری رو بدست بیارید. با توجه به کلید فشرده شده اندیس کنترل مقصد رو ایجاد و با متد GetControlFromPosition کنترل رو پیدا و فوکوس کنید.

ghayour
یک شنبه 02 آبان 1395, 13:18 عصر
خیلی ممنون :قلب:

برنامه این تاپیک رو نوشتم تا هرکی خواست استفاده کنه

ghayour
یک شنبه 02 آبان 1395, 21:01 عصر
یه مشکل مسخره توی tablelayoutpanel
143130
تکست باکس ها دقیقه و ساعت هستند که در حالت عادی حتی یک پیکسل داخل هم فرو رفتن تا زیباتر جلوه کنه ولی وقتی داخل tableLayoutPanel میذارم نه تنها به اون حالت نیست بلکه سه پیکسل هم از اطراف فاصله میندازه. راه حلی واسه این نیست؟ یا راه دیگه ای واسه جا بجا شدن بین تکست باکسها یا کلا پیشنهاد بهتری واسه این تکست باکسها

این هم تصویر کل فرم :
143131

Mahmoud.Afrad
یک شنبه 02 آبان 1395, 22:28 عصر
اون فاصله ها به خاطر margin تکست باکسها هست که میتونید تنظیم کنید.
برای دریافت زمان، میتونید از DateTimePicker با Format برابر Time استفاده کنید.