PDA

View Full Version : سوال: از بين بردن صداي دينگ TextBox



hosseinsinohe
پنج شنبه 13 فروردین 1388, 02:35 صبح
همونطور كه مي دونيد وقتي كه يك فرم طراحي مي كينم و مجموعه اي از TextBox ها هم بر روي آن قرار گرفته وقتي كه فرم را طوري تنظيم مي كنيد كه با هر بار زدن كليد Enter فوكوس برنامه يا به عبارت ديگر چشمك زن به TextBox بعدي مي رود يك صداي دينگ از اسپيكر پخش مي شود كه من مي خوام اين صدا رو غير فعال كنم و لي روش اين كار رو بلد نيستم.خواهش مي كنم در اين زمينه راهنمايي كنيد

rnm123
پنج شنبه 13 فروردین 1388, 17:01 عصر
دوست عزیز برای حل این مشکل کافیست دستورات زیر را در رویداد KeyPress مربوط به تکس باکس وارد نمائید


if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
SendKeys.Send("{tab}");
}

rezatati
جمعه 14 فروردین 1388, 12:45 عصر
البته روش دیگه ای هم هستش که من تو برنامه هام ازش استفاده می کنم و یک روش کلی هستش
اون هم override کردن تابع ProcessCmdKey هستش به شکل زیر


protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.Msg == 256 && keyData == System.Windows.Forms.Keys.Enter)
{
// Execute an alternative action: here we tabulate in order to focus on the next control in the formular
if(this.ActiveControl.ToString().Contains("System.Windows.Forms.Button"))

return base.ProcessCmdKey(ref msg, keyData);
else
{
System.Windows.Forms.SendKeys.Send("{TAB}");

// return true to stop any further interpretation of this key action
return true;
}

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

seniamail
جمعه 14 فروردین 1388, 16:39 عصر
دوست عزیز برای حل این مشکل کافیست دستورات زیر را در رویداد KeyPress مربوط به تکس باکس وارد نمائید


if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
SendKeys.Send("{tab}");
}


سلام
آیا میشه به همه تکس باکسها همین خاصیت رو به طور یکجا داد؟ یعنی نخواهیم برای KeyPress تک تک تکس باکسها این کد رو تعریف کنیم بلکه با یک کد کاری که کلید TAB انجام میده رو به Enter تبدیل کرد؟

adibadm
جمعه 14 فروردین 1388, 17:04 عصر
دوست عزیز این کدی که جناب rezatati نوشتن همین کارو انجام می ده. لازم نیست برای کلیه تکست باکس ها این کد تعریف بشه. فقط یک بار کد رو در فرم تون بزارید همین

hosseinsinohe
شنبه 15 فروردین 1388, 02:58 صبح
ممنون دوستان
خيلي به درد خود.مخصوصا كدي كه Processcmdkey رو override مي كرد.
Mer30

sepide1
جمعه 21 فروردین 1388, 14:33 عصر
دوست عزیز برای حل این مشکل کافیست دستورات زیر را در رویداد KeyPress مربوط به تکس باکس وارد نمائید


if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
SendKeys.Send("{tab}");
}

خوب معادل این در keydown چی میشه طوری که صدای بیب نده:لبخندساده::لبخند:

nazihosseinioun
چهارشنبه 14 مهر 1389, 15:07 عصر
دوست عزیز این کدی که جناب rezatati نوشتن همین کارو انجام می ده. لازم نیست برای کلیه تکست باکس ها این کد تعریف بشه. فقط یک بار کد رو در فرم تون بزارید همین
اگر برنامه چندين فرم داشته باشد چگونه ميشه فقط يكبار از اين كد استفاده كرد نه در هر فرم برنامه؟

mmd2009
چهارشنبه 14 مهر 1389, 21:42 عصر
یک تکست باکس سفارشی درست و textbox ارث بری کنید مثلا اینطوری :



using System.Windows.Forms;

namespace WindowsFormsApplication7
{
public class mytext : System.Windows.Forms.TextBox
{
public mytext()
: base()
{
this.KeyPress += new KeyPressEventHandler(mytext_KeyPress);
}

void mytext_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
SendKeys.Send("{tab}");
}
}
}
}