• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 8 رای - 3.13 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: نمایش کلید فشرده شده
حالت موضوعی
#1
Question 
سلام
روی
datagridview
می خوام هر کلیدی را که فشار می دم اونا با مسیج باکس نمایش بده
از
e.KeyData
استفاده کردم ولی موقعی که صفحه کلید فارسی است حروف انگلیس را نشون می ده
مثلا بجای حرف ب ، اف انگلیسی را نشون می ده
چکار کنم؟
 
پاسخ
#2
راه حل زیاده یکیشو میگم.
باید وضعیت کیبرد رو پیدا کنی یه دستور شرطی بزار اگر رو en بود کارکتر انگلیسی بگیره و اگر fa بود کارکتر a رو به عنوان ش در نظر بگیره

کد:
C# Signature:
[DllImport("user32.dll")]
static extern IntPtr GetKeyboardLayout(uint idThread);


کد:
///For using "imm32.dll"'s functions.

const int GCL_REVERSECONVERSION = 0x0002;

[DllImport("Imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hWnd);

[DllImport("User32.dll")]
public static extern IntPtr GetKeyboardLayout(int idThread);

[DllImport("Imm32.dll")]
public static extern int ImmGetConversionList(
    IntPtr hKL,
    IntPtr hIMC,
    string lpSrc,
    IntPtr lpDst,
    int dwBufLen,
    int uFlag          
    );

[DllImport("Imm32.dll")]
public static extern bool ImmReleaseContext(IntPtr hWnd,IntPtr hIMC);

[StructLayout(LayoutKind.Sequential)]
public class CANDIDATELIST
{
    public int  dwSize;      
    public int  dwStyle;      
    public int  dwCount;      
    public int  dwSelection;  
    public int  dwPageStart;  
    public int  dwPageSize;  
    public int  dwOffset;  
}

public string[] GetReverseConversion(string AText)
{
    string[] strList = null;
    if (AText.Length > 0)
    {
    IntPtr hIMC = ImmGetContext(this.Handle);
    IntPtr hKL = GetKeyboardLayout(0);
    int dwSize = ImmGetConversionList(hKL,hIMC,AText,IntPtr.Zero,0,GCL_REVERSECONVERSION);
    if (dwSize > 0)
    {
        IntPtr BufList = Marshal.AllocHGlobal(dwSize);
        try
        {
        ImmGetConversionList(hKL,hIMC,AText,BufList,dwSize,GCL_REVERSECONVERSION);
        CANDIDATELIST list = new CANDIDATELIST();
        Marshal.PtrToStructure(BufList,list);
        byte[] buf = new byte[dwSize];
        Marshal.Copy(BufList,buf,0,dwSize);
        Marshal.FreeHGlobal(BufList);
        int os = list.dwOffset;
        string str = System.Text.Encoding.Default.GetString(buf,os,buf.Length-os-3);
        char[] par = "\0".ToCharArray();
        strList = str.Split(par);
        }
        finally
        {
        ImmReleaseContext(this.Handle,hIMC);
        }
    }
    }
    return strList;
}

///The example of use of the above code

private void button1_Click(object sender, System.EventArgs e)
{
    listBox1.Items.Clear();
    listBox1.Items.AddRange(GetReverseConversion(textBox1.Text));
}


وضعیتو چک کن میتونی حتی زبان هم کاملا روی فارسی ست کنی در برنامه [/quote]
گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
 
پاسخ
#3
ممنون از توضیحی که دادید
با این دستور مشکل حل شد
MessageBox.Show(((Char)e.KeyChar).ToString(), "");
 
پاسخ
#4
خوبه
ولی بهتره وضعیت کیبرد هم چک کنید که روی فارسی هست یا انگلیسی
بدرود
گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
 
پاسخ
  


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Photo دیدن صفحه نمایش طرف کلاینت از طرف سرور atpf 4 8,896 06-24-2012، 07:04 AM
آخرین ارسال: Amin_Mansouri
  تابعی برای تعمیر و فشرده سازی پایگاه داده Access Ghoghnus 0 3,687 10-31-2011، 03:28 PM
آخرین ارسال: Ghoghnus
  نمایش help با کلید f1 در یک کنترل Ghoghnus 0 3,051 10-31-2011، 03:27 PM
آخرین ارسال: Ghoghnus
Bug قفل کردن صفحه کلید امیر 6 10,718 08-22-2011، 10:14 AM
آخرین ارسال: امیر

پرش به انجمن:


Browsing: 2 مهمان