PDA

View Full Version : سوال: معادل کد KeyPress در WPF



PetekDincos
دوشنبه 24 آبان 1389, 17:33 عصر
با سلام
معادل کد زیر در WPF چیه



protected override void OnKeyPress(KeyPressEventArgs e)
{
if (!((int)e.KeyChar >= 48 && (int)e.KeyChar <= 57) && e.KeyChar !=8)
e.KeyChar = char.MinValue;
}

مهدی فرزاد
دوشنبه 24 آبان 1389, 23:07 عصر
سلام
شما میتونید شرط رو به این شکل که نوشتم در رویداد KeyDown بنویسید
همون کار شرط شما رو میکنه و فقط عدد قبول میکنه


if (Convert.ToInt32(e.Key) < 34 || (Convert.ToInt32(e.Key) > 43 && Convert.ToInt32(e.Key) < 74) || Convert.ToInt32(e.Key) > 83)
{
e.Handled = true;
}

PetekDincos
سه شنبه 25 آبان 1389, 10:13 صبح
با سلام

سلام
شما میتونید شرط رو به این شکل که نوشتم در رویداد KeyDown بنویسید
همون کار شرط شما رو میکنه و فقط عدد قبول میکنه


if (Convert.ToInt32(e.Key) < 34 || (Convert.ToInt32(e.Key) > 43 && Convert.ToInt32(e.Key) < 74) || Convert.ToInt32(e.Key) > 83)
{
e.Handled = true;
}

من فقط می خوام اعداد 0 تا 9 و کلیدهای جهتی وارد بشه با تشکر

مهدی فرزاد
سه شنبه 25 آبان 1389, 10:49 صبح
مگه این کد غیر از این عمل میکنه؟؟!!!
اینم کد کوتاه تر


e.Handled = (!(((int)e.Key >= 74 && (int)e.Key <= 83) || ((int)e.Key >= 34 && (int)e.Key <= 43)));


این لینک رو هم ملاحظه بفرمایید میتونه مفید باشه
http://www.codeproject.com/KB/WPF/MaskableTextBox.aspx

PetekDincos
سه شنبه 25 آبان 1389, 18:04 عصر
با سلام
این کد درسته اعداد 0 تا 9 را قبول می کنه اما من می خوام حتی اگر کاربر خواست از طریق Clipboard رشته ای را به تکست باکس اضافه کنه رشته های متنی اضافه نشه با تشکر

farashah_jalal
سه شنبه 25 آبان 1389, 21:40 عصر
شما می توانید از رویداد textchange استفاده کنید تا در زمانی که کاربر می خواهد یک رشته ای رو وارد کند بررسی کند.

PetekDincos
چهارشنبه 26 آبان 1389, 13:45 عصر
با سلام

مگه این کد غیر از این عمل میکنه؟؟!!!
اینم کد کوتاه تر


e.Handled = (!(((int)e.Key >= 74 && (int)e.Key <= 83) || ((int)e.Key >= 34 && (int)e.Key <= 43)));


این لینک رو هم ملاحظه بفرمایید میتونه مفید باشه
http://www.codeproject.com/KB/WPF/MaskableTextBox.aspx
کد بالا برای حالتی که دکمه Shift را نگه داشته و کلید های عددی را وارد نمایید کاراکترهای @#$%^&*()! را می توان وارد کرد آیا برای این مشکل راه حلی دارید یا خیر