-
کدهای ascii در c#
چرادر جدول ASCII کد 37 برابر % هستش ولي موقع استفاده در c# معني کليد جهت نماي چپ رو ميده؟
(e.KeyValue==37)
در ضمن کليدهاي تابعي F1..F12 اصلا ذکر نشدن!
يا مثلا چطور ميشه فهميد که طرف چه کليدهاي ترکيبي رو فشار داده مثل shift+f2 یا ctrl+alt+del ?
در c هم جالبه با کد زیر میشه چی فهمید
#include <iostream>
#include <conio.h>
using namespace std;
main()
{
for (;;)
{
char a,b;
cout << "press Insert key...";
a=getch();
b=getch();
if (a==(char)-32 && b==(char)82)
cout << "\nYes\n";
else
cout << "\nNo\n";
{
{
-
اگه توی یه کنترل رویداد KeyDown رو هندل کنید، می تونید اینکه کدوم کلید زده شده رو به راحتی به دست بیارید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
آموزش تصویریش اینجا هست:
کد:
http://www.homeandlearn.co.uk/csharp/csharp_s9p3.html
البته کد هایی که استفاده می کنه اسکی نیست و همونطور که گفتید 37 معادل چپ هست. می تونید لیست مقادیری که جهت نمایش دادن کاراکترها استفاده می شود را از اینجا بگیرید:
کد:
http://msdn.microsoft.com/en-us/library/system.windows.forms.keys(VS.71).aspx
-
1) کدهای گفته شده در msdn بعضی هاشون مثل A , B مربوط به کد ascii اونهاست ولی بقیه ی کدها کد ascii نیستن ! (هنوز هم نفهمیدم فرق این کدها با کدهای ascii چیه)
2) هنوز هم به کلیدهایی مثل shift+f2 یا ctrl+alt+delete دسترسی ندارم!
3) توی c چطور به کلیدهای کنترلی و تابعی دسترسی داشته باشم؟
-
باید از اون کنترلت یه کلاس جدید ایجاد کنی و متد ProcessCmdKey رو override کنی:
کد:
class MyDataGrid : System.Windows.Forms.DataGrid
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
}
}
بعد هم کد رو توش بنویسی:
کد:
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch(keyData)
{
case Keys.Down:
Console.WriteLine("Down Arrow Captured");
break;
case Keys.Up:
Console.WriteLine("Up Arrow Captured");
break;
case Keys.Tab:
Console.WriteLine("Tab Key Captured");
break;
case Keys.Control | Keys.M:
Console.WriteLine("<CTRL> + m Captured");
break;
case Keys.Alt | Keys.Z:
Console.WriteLine("<ALT> + z Captured");
break;
}
}
این روش توی کنترل های مختلف (مثلاً Grid) عمل می کنه و خیلی به درد بخوره.
کد:
http://support.microsoft.com/kb/320584
برای سی هم getchar کنید ببینید کلیدی که می زنید رو قبول می کنه. البته بعید می دونم توی کنسول قبول کنه.