PDA

View Full Version : Eventی که هنگام زدن کلید Tab روی یک کنترل اجرا میشه؟



مهدی رحیم زاده
جمعه 04 اردیبهشت 1388, 17:14 عصر
هنگام زدن کلید Tab روی یک کنترل و حرکت از اون به کنترل بعدی ، چه Event ی اتفاق میفته ؟
من KeyDown , KeyPress , TabIndexChange رو تست کردم ، نبود؟
خیلی لازمش دارم . با تشکر

vahid.bz
جمعه 04 اردیبهشت 1388, 17:27 عصر
آیا می خواین ترتیب کنترل ها رو با tab تنظیم کنین؟

مهدی رحیم زاده
جمعه 04 اردیبهشت 1388, 17:34 عصر
http://barnamenevis.org/forum/showpost.php?p=454238&postcount=4

من این لینک رو پیدا کردم اما به هر شکلی که از اون استفاده می کنم نمیتونم کلید Tab رو تشخیص بدم. اگه توستان تونستن کمک کنن ممنون میشم
با تشکر

prankster
جمعه 04 اردیبهشت 1388, 17:47 عصر
کلید Tab در windows forms توسط form کنترل می شود، به این معنی که فرم آنرا می گیرد و هیچ وقفه ای هنگام فشردن آن raise نمی شود.
شما می توانید متد فشرده شدن کلیدها در فرم اصلی را override کنید و event مورد نظر خود را raise کنید:

در فرم اصلی:


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab)
{
// do something
}

return base.ProcessCmdKey(ref msg, keyData);
}

مهدی رحیم زاده
جمعه 04 اردیبهشت 1388, 19:47 عصر
دوست عزیز با تشکر من مشکلم حل شد
سوالی که اینجا مطرح میشه اینه که اگه حالا ما بخواییم کلید Tab رو روی کنترل ها تشخیص بدیم باید چکار کنیم
؟

prankster
جمعه 04 اردیبهشت 1388, 21:04 عصر
متاسفانه در کنترل هایی که در net. وجود دارند، کلید Tab توسط خود کنترل handle می شود.
می توانید کنترل های مورد نظر را باز نویسی کنید و قبل از اینکه کلید Tab توسط کنترل گرفته شود آنرا handle کنید.

مثلا برای کنترل TextBox:


public class MyTextBox : TextBox
{
public override bool PreProcessMessage(ref Message msg)
{
if ((int)msg.WParam == (int)Keys.Tab)
MessageBox.Show("TAB");
return base.PreProcessMessage(ref msg);
}
}


به جای TextBox در برنامه از MyTextBox استفاده کنید