PDA

View Full Version : سوال: اطلاع از فشرده شدن دکمه های Alt+Shift - اطلاع از تغییر زبان ورودی



hahaie
یک شنبه 13 تیر 1395, 14:11 عصر
سلام بر همگی
بنده قصد دارم Lanquage bar ی که کنار ساعت ویندوز هستش رو پیاده کنم بنابراین نیاز هست در هر جایی از برنامه (درون تکست باکس ها درون فرم ها و...)که دکمه های alt+shift فشرده میشه متن داخل یک لیبل عوض بشه.چطوری میتونم این کار رو انجام بدم؟
ممنون

hadi vafaii
یک شنبه 13 تیر 1395, 14:51 عصر
سلام میتونین از این کد استفاده کنین
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt == true && e.Shift == true && label1.Text == "انگلیسی")
{
label1.Text = "فارسی";
}
else
if (e.Shift==true&&e.Alt==true)
{
label1.Text = "انگلیسی";
}

hahaie
یک شنبه 13 تیر 1395, 21:56 عصر
ولی این کد فقط فشرده شدن دکمه های alt+shift رو توی Form1 بررسی میکنه و مثلا نمیتونه توی تکست باکس های روی فرم هم تشخیص داده بشه.
یعنی راهی نیست که نخوایم کد بالا رو توی رویداد KeyDown همه اجزای فرم بنویسیم یا صدا بزنیم؟!! (میدونم حرفم یکم غیر منطقیه ولی ...)

دلتنگ اسمان
دوشنبه 14 تیر 1395, 08:23 صبح
با سلام
شدنی هست . البته من خودم خیلی وارد نیستم یه آشنایی کمی دارم. سرچ کنی درباره ش مطلب زیاده :
نمونه کد:

Hotkey hk = new Hotkey();

hk.KeyCode = Keys.1;
hk.Windows = true;
hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); };

hk.Register(myForm);

از هوک (Hook)هم میتونی استفاده کنی.

parsdarab
دوشنبه 14 تیر 1395, 08:33 صبح
سلام
قبلا فرم ها یک خصوصیت داشتن به نام key priviewکه هر کلیدی که درون تکس باکس ها رو میزدی به رویدادی key up,key down,key press فرم هم کال میشد.

hahaie
دوشنبه 14 تیر 1395, 09:07 صبح
با سلام
شدنی هست . البته من خودم خیلی وارد نیستم یه آشنایی کمی دارم. سرچ کنی درباره ش مطلب زیاده :
نمونه کد:

Hotkey hk = new Hotkey();

hk.KeyCode = Keys.1;
hk.Windows = true;
hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); };

hk.Register(myForm);

از هوک (Hook)هم میتونی استفاده کنی.

ممنون دوست عزیز.نمونه کدی که گذاشتی رو اصلا نفهمیدم چی میگه چیکار میکنه کجا استفادش میکنن :ناراحت:

دلتنگ اسمان
دوشنبه 14 تیر 1395, 09:23 صبح
این کد از Hotkey استفاده میکنه و وقتی کلید'1' فشرده میشه ، پیغام میده .
از اساتیدی که در انجمن هستن اگه راهنمایی و توضیحات بیشتری بدن ممنون میشم.

hahaie
دوشنبه 14 تیر 1395, 10:14 صبح
آقا این یه نمونه برنامه ولی...
http://proje724.ir/wp-content/uploads/2014/11/HotkeyWin.rar
ولی تو این برنامه بغیر از کلیدهای Alt یا Shift یا کنترل حتما باید یه کلید دیگه انتخاب بشه.در صورتی که من فقط میخوام فشرده شدن Alt+Shift بررسی بشه.

reza_ali202000
دوشنبه 14 تیر 1395, 10:27 صبح
سلام شرط رو اینجوری بنویسید

if (keyData == (Keys.Alt | Keys.Shift|Keys.ShiftKey))
{
cultureCurrent();
return true;
}

hahaie
دوشنبه 14 تیر 1395, 11:11 صبح
سلام شرط رو اینجوری بنویسید

if (keyData == (Keys.Alt | Keys.Shift|Keys.ShiftKey))
{
cultureCurrent();
return true;
}


ببخشید چی ؟کجا؟کدوم شرط؟؟
میخوام این شرط توی همه جای فرم بررسی بشه ها!!

Mahmoud.Afrad
دوشنبه 14 تیر 1395, 12:49 عصر
Form.InputLanguageChanged Event (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.inputlanguagechanged(v=v s.110).aspx)

reza_ali202000
دوشنبه 14 تیر 1395, 12:55 عصر
شرطی که چک میکنه که فقط الت و شیفت فشرده شده باشن و نیازی به دکمه ای دیگه که فشرده بشه نیست.

hahaie
دوشنبه 14 تیر 1395, 13:44 عصر
Form.InputLanguageChanged Event (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.inputlanguagechanged(v=v s.110).aspx)

بسیار ممنون........................................ ................................................

mn_acer1
دوشنبه 14 تیر 1395, 21:57 عصر
یعنی میخوای مثلا تو محیط ویندوز هم عمل کنه؟