PDA

View Full Version : درست کردن کلید ترکیبی برای عملی در همه فرم ها



amir_pro
چهارشنبه 16 خرداد 1386, 00:45 صبح
میخوام یه کلید ترکیبی درست کنم مثل alt + ctrl در ویندوز که اگه روی هر فرمی و روی هر آیجکتی که فوکوس روی اونه زدم زبان عوض بشه یعنی تبدیل به فارسی یا انگلیسی شود - کد تغییر زبان را دارم فقط مشکل درست کردن این چنین کلیدی می باشد.

morteza57
چهارشنبه 16 خرداد 1386, 01:13 صبح
اگه اشتباه نکنم منظورتون اینه که چه جوری متوجه بشید که Alt+Control کلیک شده.
برای حل این مشکل در رویداد KeyDown کنترل مربوطه (یا فرم مورد نظر) عبارت زیر رو بنویسید.

(if (e.Alt && e.Control
{
Clicked //
{

amir_pro
چهارشنبه 16 خرداد 1386, 01:45 صبح
ممنون از جوابتون ولی اشتباه فهمیدید
می خوام کدی بنویسم که توی هر فرمی و وقتی روی هر ابجکتی که هستیم وقت یکلید زده شد عملی انجام بشه اون کلیدهای alt + ctrl هم نمونه بودند - کلیدی مثل shrtcut های مربوط به منوها که هر جا باشیم می زنیم اون عمل مربوط به اون منوی خاص انجام میشه

Pioneers
چهارشنبه 16 خرداد 1386, 01:55 صبح
از این dll استفاده کنید. فقط اگه ممکنه کد تغییر زبان رو هم بگذارید استفاده کنیم.

amir_pro
چهارشنبه 16 خرداد 1386, 02:54 صبح
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";
}

amir_pro
چهارشنبه 16 خرداد 1386, 03:24 صبح
دوست عزیز جناب Pioneers
این dll توی 2003 نه به رفرنس ها اضافه میشه نه به toolbox?
راه حلش چیه؟

MH2538
چهارشنبه 16 خرداد 1386, 07:59 صبح
سلام
اگر اشتباه نکرده باشم منظور شما باید HotKey باشه.
امیدوارم نمونه زیر بدرد بخوره

amir_pro
چهارشنبه 16 خرداد 1386, 14:46 عصر
ممنون از جنابMH2538
کد شما را بررسی کردم یه چیزایی فهمیدم ولی میشه توضیح کاملشا مطرح کنید؟ ممنون میشم

amir_pro
چهارشنبه 16 خرداد 1386, 14:51 عصر
یه چیز دیگه اونم اینه که hotkey همه جا کار میده و موقعی که برنامه تو حالت اجرا است ولی مثلا کاربر الان تو محیط paint باشه و اون کلید که به عنوام hotkey تعریف شده را بزنه برنامه ای فعال نبوده انجام میشه - میشه کدی نوشت که فقط کد داخل برنامه کار بده خیلی بهتره

dot_net_lover2
چهارشنبه 16 خرداد 1386, 15:11 عصر
یک menuStrip به فرمت اضاف کن و یک منو واسش تعریف کن و واسه اون ShortcutKey را تعریف کن و بعد menuStrip.Visible را برابر false قرار بده.(به همین سادگی)
اگر هم در فرمت منو داشتی که کار ساده تر ، یک Item واسه تغییر زبان تعریف میکنی و این ShortcutKey را واسش Set میکنی.

MH2538
چهارشنبه 16 خرداد 1386, 15:20 عصر
دوست عزیز چیز پیچیده ای نیست
یک usercontrol وجود داره به اسم SystemHotkey.cs
وقتی برنامه رو کامپایل کنی می تونی اون رو بالای نوار ابزارت ببینی و به پروژه است addکنی
بعد از اضافه کردن به پروژه می تونی property های اون رو بیاری و از گزینه Shortcut ، کلید هایی رو که می خوای تنظیم کنی

PC2st
چهارشنبه 16 خرداد 1386, 17:56 عصر
خاصیت KeyPreview از فرم رو برابر True و در رخداد KeyDown از فرم، کد لازم رو بنویس.

MH2538
پنج شنبه 17 خرداد 1386, 13:06 عصر
دوستان عزیز روش هایی که شما فرمودید یا پشتیبانی کامل از ضرب کلید ها نمی دهند یا وقتی کار می کنند برنامه فعال باشد.
روشی من که نمونه اون رو خدمتتون فرستادم مزیت عمده ای که دارد این است که حتی وقتی برنامه شما مینیمایز شده و در حال کار با یک برنامه دیگر هستید هم به کلید هایی که شما بعنوان hotkey تعریف کرید جواب می دهد.
مثل hotkey های jetaudio که به شما این امکان را می دهد که هر زمان و از هر برنامه ای بتوانبد آهنگ رو مدیریت کتید و عقب و جلو ببرید.

kiani.mehdi
پنج شنبه 17 خرداد 1386, 18:25 عصر
دوستان عزیز روش هایی که شما فرمودید یا پشتیبانی کامل از ضرب کلید ها نمی دهند یا وقتی کار می کنند برنامه فعال باشد.
روش من که نمونه اون رو خدمتتون فرستادم مزیت عمده ای که دارد این است که حتی وقتی برنامه شما مینیمایز شده و در حال کار با یک برنامه دیگر هستید هم به کلید هایی که شما بعنوان hotkey تعریف کرید جواب می دهد.
مثل hotkey های jetaudio که به شما این امکان را می دهد که هر زمان و از هر برنامه ای بتوانبد آهنگ رو مدیریت کتید و عقب و جلو ببرید.

مطمئنید این روش و کد مال شماست ؟
آخه خیلی تصادفی تو سایت codeproject کدی پیدا کردم که با کد شما مو نمیزنه و دقیقا موقع design هم یه error میده (هر دوش) :خجالت:

فقط نمیدونم چرا اسم نویسندش هم نام اسم شما نیست :ناراحت:
نویسندش ایشونه : Alexander Werner

**** ویرایش شد - یه مقدار توضیحات اضافه بودن - omid_Ahmadi ****

به هرحال همین که زحمت کشیدید خودش خیلی ارزش داره
موفق باشید
مهدی کیانی
راستی یادم رفت بگم اینم اون لینکیه که گفتم
http://www.codeproject.com/cs/miscctrl/systemhotkey.asp
اینم لینک پروفایل نویسندش
http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&id=43098

راستی دوستانی که دنبال hotkey میگشتند این لینک هم هست
http://www.codeproject.com/cs/miscctrl/ashsimplehotkeys.asp

omid_Ahmadi
پنج شنبه 17 خرداد 1386, 18:33 عصر
دوست عزیز، فکر کنم ایشون منظورشون "روشی که من نمونه اون رو خدمتتون فرستادم ..." بوده که به خاطر اشتباه تایپی به صورت "روشی من که نمونه اون رو خدمتتون فرستادم ..." نوشته شده.

موفق باشید.

MH2538
شنبه 19 خرداد 1386, 16:01 عصر
سلام دوستان
من این برنامه رو خودم ننوشتم.
من خیلی وقت پیشتر ،این برنامه رو از یکی از همکارهایم گرفتم
جایی هم نگفتم که خودم نوشتم اگر از نوشته های من چنین برداشتی میشه من از همه شما عزیزان معذرت خواهی می کنم.
از آقای احمدی هم به خاطر دید مثبتشون تشکر می کنم.

حامد مصافی
شنبه 19 خرداد 1386, 16:28 عصر
اگر خطا داره می تونید از کلاس من استفاده کنید.قبلاً در تاپیکی در بخش VB.NET در مورد میانبر ها بحث شده و من یک DLL نوشتم و (به همراه سورس) آپلود کردم.می تونید از اون استفاده کنید.