PDA

View Full Version : سوال: معادل عددی کلید نقطه یا همون dot چیه؟



moferferi
سه شنبه 07 مهر 1388, 18:33 عصر
سلام.من میخام در کد زیر به علاوه اعداد و کلید space دکمه dot یا همون نقطه هم فابل استفاده بشه ولی نمیدونم معادل عددیش چنده؟


base.OnKeyPress(e);
e.Handled = true;
if (char.IsDigit(e.KeyChar) || e.KeyChar == 8 )
{
e.Handled = false;
}

saed2006
سه شنبه 07 مهر 1388, 19:00 عصر
110
190
یا به نام decimal

moferferi
چهارشنبه 08 مهر 1388, 12:59 عصر
سلام
.اقا ممنون .درسته معادل عددی دکمه (.) همون 110 هستش.ولی چرا کد توی این کد جواب نمیده


base.OnKeyPress(e);
e.Handled = true;
if (char.IsDigit(e.KeyChar) || e.KeyChar ==8 ||e.KeyChar==110)
{
e.Handled = false;
}

Reza_Yarahmadi
چهارشنبه 08 مهر 1388, 14:09 عصر
تا جایی که میدونم کد اسکی Space عدد 32 و کد اسکی (.) عدد 46 است.
برای پیدا کردن کد اسکی کاراکترها کنار یکی از دستوراتتون Break Point بذار و زمان اجرا مقدار e.KeyChar رو چک کنید.

mahdi_7610
چهارشنبه 08 مهر 1388, 14:45 عصر
سلام

من با استفاده از دستور زیر کد اسکی کاراکتر ها را بدست اوردم که کد اسکی نقطه ( . ) را 46 نشون داد .


for (int i = 0; i < 256; i++)
{
listBox1.Items.Add(((char)(i)).ToString() + " " + i.ToString());
}

باید 46 بزارید .


base.OnKeyPress(e);
e.Handled = true;
if (char.IsDigit(e.KeyChar) || e.KeyChar == 8 || e.KeyChar == 46)
{
e.Handled = false;
}

moferferi
چهارشنبه 08 مهر 1388, 20:15 عصر
سلام.اقایون ممنون
اقا رضا عدد 8 keyvalue کلید backspace هست و 110 keyvalue (.) هست.
من توی کدم به جای 110 از 46 استفاده کردم و جواب داد.
من از کد زیر برای بدست اوردن keyvalue استفده میکنم


privatevoid textBoxX2_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show(e.KeyValue.ToString());
}

حالا سوالم اینه که چرا برای کلید backspace باید عدد 8 را وارد کنیم که keyvalue هست
ولی برای دکمه (.) باید از عدد 46 استفاده کنم که کد اسکی هست.

Reza_Yarahmadi
چهارشنبه 08 مهر 1388, 21:57 عصر
توی پست اول گفته بودید دکمه Space کار کنه ، منم فکر کردم منظورتون همون Space خودمونه نه ...!! :چشمک:
توی رویداد KeyDown سه خاصیت KeyCode , KeyData , KeyValue فقط به کلیدی از کیبورد که فشرده شده اشاره میکنه نه به کاراکتری که تایپ میشه. دو مورد اول به کاراکتر استاندارد (حروف بزرگ انگلیسی و ...) هر کلید اشاره میکنه و خاصیت KeyValue به شماره ایی که برای کلید در نظر گرفته شده (کد اسکی کاراکترهای استاندارد). برای مثال اگر زبان در حالت انگلیسی باشه و کلید m فشار داده بشه خاصیت KeyValue برابر عدد 77 (کد اسکی M) میشه ، اگه زبان سیستم رو به فارسی و یا هر زبان دیگه ای تغییر بدید و همون دکمه رو فشار بدید بازم همون مقدار رو میگیره. برای مشکل شما دو کاراکتر OemPeriod و Decimal رو بر میگردونه ، که اولی مربوط به کلید (.) صفحه کلید و دومی مربوط به کلید (.) Numeric است.
ولی خاصیت KeyChar که توی رویداد KeyPress بهش دسترسی دارید چون به کاراکتر تایپ شده وابسته است کد اسکی کاراکتر رو برمیگردونه.

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(((int)e.KeyChar).ToString());
}