PDA

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



mdssoft
پنج شنبه 06 تیر 1387, 12:12 عصر
سلام به همگی.
بچه ها تو این کد میشه بگید keyHandled چه کاری انجام میده ؟


private bool keyHandled;
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.A)
{
textBox1.SelectAll();
keyHandled = true;
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (keyHandled)
{
e.Handled = true;
keyHandled = false;
}
}

reza.palang
پنج شنبه 06 تیر 1387, 13:10 عصر
یک متغیر bool هست که کد نویس تعریف کرده و بر اساس نیازی که داشته ازش استفاده میکنه.
(همون طور که نوشته شده) توی event اول بر اساس کلید های ترکیبی که زده میشه مقدار keyhandled رو true میذاره و توی دومی اگر true باشه اون دو مقدار رو عوض میکنه

razavi_university
جمعه 07 تیر 1387, 00:48 صبح
رویداد KeyPress قابلیت فهمیدن کلیدهای زده شده غیر کاراکتری(مثل کلید Ctrl) رو نداره واسه همین از KeyDown برای این استفاده کرده تا بفهمه چه زمانی Ctrl+A در این TextBox زده می شود. هر زمانی که Ctrl+A زده شده متغیر KeyHandled رو true می کنه و کل چیزهای درون TextBox رو انتخاب می کنه
در رویداد KeyPress هم زمانی که متغیر keyHandled برابر True بود Handle رو True می کنه حالا می رسیم سر اینکه این هندل چیکارمی کنه :اشتباه:
بهتره این تیکه که از Msdn گرفتم رو بخونی (نمیشه با ترجمه کل مطلب رو رسوند):لبخندساده:


Handled is implemented differently by different controls within Windows Forms. For controls like TextBox (http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx) which subclass native Win32 controls, it is interpreted to mean that the key message should not be passed to the underlying native control. If you set Handled to true on a TextBox (http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx), that control will not pass the key press events to the underlying Win32 text box control, but it will still display the characters that the user typed.

mdssoft
جمعه 07 تیر 1387, 04:17 صبح
ممنون ، اما حقیقت من انگلیسیم اصلا خوب نیست.
برا همین چیزی از متن انگلیسی نفهمیدم .

razavi_university
شنبه 08 تیر 1387, 16:57 عصر
متن خیلی روانیست چیز مبهمی توش نبود من انگلیسی گذاشتم تا بیشتر متوجه بشید.
حلاصه بخوام ترجمه کنم زمانی که Handle برای TextBox رو True کنین دیگه کلیدی رو دریافت نمی کنه (در TextBox نوشته نمیشه)