میخوام یه کلید ترکیبی درست کنم مثل alt + ctrl در ویندوز که اگه روی هر فرمی و روی هر آیجکتی که فوکوس روی اونه زدم زبان عوض بشه یعنی تبدیل به فارسی یا انگلیسی شود - کد تغییر زبان را دارم فقط مشکل درست کردن این چنین کلیدی می باشد.
میخوام یه کلید ترکیبی درست کنم مثل alt + ctrl در ویندوز که اگه روی هر فرمی و روی هر آیجکتی که فوکوس روی اونه زدم زبان عوض بشه یعنی تبدیل به فارسی یا انگلیسی شود - کد تغییر زبان را دارم فقط مشکل درست کردن این چنین کلیدی می باشد.
اگه اشتباه نکنم منظورتون اینه که چه جوری متوجه بشید که Alt+Control کلیک شده.
برای حل این مشکل در رویداد KeyDown کنترل مربوطه (یا فرم مورد نظر) عبارت زیر رو بنویسید.
(if (e.Alt && e.Control
{
Clicked //
{
ممنون از جوابتون ولی اشتباه فهمیدید
می خوام کدی بنویسم که توی هر فرمی و وقتی روی هر ابجکتی که هستیم وقت یکلید زده شد عملی انجام بشه اون کلیدهای alt + ctrl هم نمونه بودند - کلیدی مثل shrtcut های مربوط به منوها که هر جا باشیم می زنیم اون عمل مربوط به اون منوی خاص انجام میشه
از این dll استفاده کنید. فقط اگه ممکنه کد تغییر زبان رو هم بگذارید استفاده کنیم.
foreach (InputLanguage ln in InputLanguage.InstalledInputLanguages)
if(ln.Culture.Name=="fa-IR")
{
InputLanguage.CurrentInputLanguage=ln;
f2.StrLang="farsi";
}
else
{
System.Globalization.CultureInfo english = new System.Globalization.CultureInfo("en-US");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(english);
f2.StrLang="english";
}
دوست عزیز جناب Pioneers
این dll توی 2003 نه به رفرنس ها اضافه میشه نه به toolbox?
راه حلش چیه؟
سلام
اگر اشتباه نکرده باشم منظور شما باید HotKey باشه.
امیدوارم نمونه زیر بدرد بخوره
ممنون از جنابMH2538
کد شما را بررسی کردم یه چیزایی فهمیدم ولی میشه توضیح کاملشا مطرح کنید؟ ممنون میشم
یه چیز دیگه اونم اینه که hotkey همه جا کار میده و موقعی که برنامه تو حالت اجرا است ولی مثلا کاربر الان تو محیط paint باشه و اون کلید که به عنوام hotkey تعریف شده را بزنه برنامه ای فعال نبوده انجام میشه - میشه کدی نوشت که فقط کد داخل برنامه کار بده خیلی بهتره
یک menuStrip به فرمت اضاف کن و یک منو واسش تعریف کن و واسه اون ShortcutKey را تعریف کن و بعد menuStrip.Visible را برابر false قرار بده.(به همین سادگی)
اگر هم در فرمت منو داشتی که کار ساده تر ، یک Item واسه تغییر زبان تعریف میکنی و این ShortcutKey را واسش Set میکنی.
دوست عزیز چیز پیچیده ای نیست
یک usercontrol وجود داره به اسم SystemHotkey.cs
وقتی برنامه رو کامپایل کنی می تونی اون رو بالای نوار ابزارت ببینی و به پروژه است addکنی
بعد از اضافه کردن به پروژه می تونی property های اون رو بیاری و از گزینه Shortcut ، کلید هایی رو که می خوای تنظیم کنی
خاصیت KeyPreview از فرم رو برابر True و در رخداد KeyDown از فرم، کد لازم رو بنویس.
دوستان عزیز روش هایی که شما فرمودید یا پشتیبانی کامل از ضرب کلید ها نمی دهند یا وقتی کار می کنند برنامه فعال باشد.
روشی من که نمونه اون رو خدمتتون فرستادم مزیت عمده ای که دارد این است که حتی وقتی برنامه شما مینیمایز شده و در حال کار با یک برنامه دیگر هستید هم به کلید هایی که شما بعنوان hotkey تعریف کرید جواب می دهد.
مثل hotkey های jetaudio که به شما این امکان را می دهد که هر زمان و از هر برنامه ای بتوانبد آهنگ رو مدیریت کتید و عقب و جلو ببرید.
مطمئنید این روش و کد مال شماست ؟
آخه خیلی تصادفی تو سایت codeproject کدی پیدا کردم که با کد شما مو نمیزنه و دقیقا موقع design هم یه error میده (هر دوش)
فقط نمیدونم چرا اسم نویسندش هم نام اسم شما نیست
نویسندش ایشونه : Alexander Werner
**** ویرایش شد - یه مقدار توضیحات اضافه بودن - omid_Ahmadi ****
به هرحال همین که زحمت کشیدید خودش خیلی ارزش داره
موفق باشید
مهدی کیانی
راستی یادم رفت بگم اینم اون لینکیه که گفتم
http://www.codeproject.com/cs/miscctrl/systemhotkey.asp
اینم لینک پروفایل نویسندش
http://www.codeproject.com/script/pr...=arts&id=43098
راستی دوستانی که دنبال hotkey میگشتند این لینک هم هست
http://www.codeproject.com/cs/miscct...plehotkeys.asp
دوست عزیز، فکر کنم ایشون منظورشون "روشی که من نمونه اون رو خدمتتون فرستادم ..." بوده که به خاطر اشتباه تایپی به صورت "روشی من که نمونه اون رو خدمتتون فرستادم ..." نوشته شده.
موفق باشید.
سلام دوستان
من این برنامه رو خودم ننوشتم.
من خیلی وقت پیشتر ،این برنامه رو از یکی از همکارهایم گرفتم
جایی هم نگفتم که خودم نوشتم اگر از نوشته های من چنین برداشتی میشه من از همه شما عزیزان معذرت خواهی می کنم.
از آقای احمدی هم به خاطر دید مثبتشون تشکر می کنم.
اگر خطا داره می تونید از کلاس من استفاده کنید.قبلاً در تاپیکی در بخش VB.NET در مورد میانبر ها بحث شده و من یک DLL نوشتم و (به همراه سورس) آپلود کردم.می تونید از اون استفاده کنید.