PDA

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



system32
دوشنبه 17 بهمن 1390, 10:23 صبح
دوستان سلام:

بنده یه برنامه دارم با کلی پنجره. حالا می خوام یه سری کلید ترکیبی تعریف کنم تا وقتی کاربر اون کلیدها را زد حالا هرجایی از برنامه و توی هر پنجره ای از برنامه که بود دستوراتی که برای اون کلید ترکیبی تعریف شده اجرا بشه در این مورد خاص من قصد دارم تا برای هر کلید ترکیبی یک سری متن توسط کاربر تعیین بشه تا هنگامی که کاربر کلیهای ترکیبی مورد نظر را فشار داد برنامه متن اشاره شده به کلید ترکیبی را بازیابی و در مکانی که کاربر روی آن فوکوس نموده است جایگذاری کند. خواهشا اگه می شه روشی را ارائه دهید که نخواهم روی تک تک پنجره ها اعمال کنم همچنین فقط اشاره نفرمایید که باید از رویدادهای صفحه کلید استفاده کنم بلکه اگر امکان دارد یه روش امتحان شده برای کلیدهای ترکیبی ارائه دهید. با تشکر

majid.gymnast
دوشنبه 17 بهمن 1390, 11:18 صبح
اگر برنامه دارای MdiParent هست میتونی یه کنترل menuStrip در داخل فرم paren اضافه کنی و کلیدهایی که میسازی براش میانبر هم تعریف کنی

system32
دوشنبه 17 بهمن 1390, 11:32 صبح
نه از نوع والد و فرزندی نیست.

b.saminjad
دوشنبه 17 بهمن 1390, 11:57 صبح
سلام

دوست عزیز اگه نخاین در هر فرمی دستوراتو بنویسید پس باید با api کلیدهارو چک کنید که این هم کدنویسیش بیشتر میشه(البته واسه چن شرت کات) هم باید مدام
چک کنه که موجب کاهش سرعت برنامه میشه اگه موافقی شرط ننوشتن کد در دیگر صفحاتو بردار تا دوستان یه الگوریتم خوب پیشنهاد بدن چون دیگه لااقل باید یکی دو دستور بنویسی

system32
دوشنبه 17 بهمن 1390, 12:05 عصر
نه دوست عزیز باید اصولی پیش رفت قطعا روشی هست.

system32
دوشنبه 17 بهمن 1390, 18:42 عصر
همچنان منتظر راه حل های شما عزیزان

mmd2009
دوشنبه 17 بهمن 1390, 18:56 عصر
با سلام

در چنین مواقعی که شما نیاز دارید که یک عملیاتی مشابه ای رو روی تمامی پتجره هاتون انجام بدید کافیه به این صورت عمل کنید که در template برنامتون متد مورد نظر خودتون رو override کنید به چیزی که مدنظرتون هست.

فرضا به این شکل عمل کنید و بقیه فرمهاتون رو از این قالب مشتق کنید :


public class Template : Form
{
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.P)
{
MessageBox.Show(@"print");
}
}
}


حالا این فقط یک مثال بود ولی در کل قبلا در این مورد بحث شده بود.

موفق باشید

shadi khanum
دوشنبه 17 بهمن 1390, 20:31 عصر
فک کنم اینجوری جواب بده دوست عزیز که شما ابتدا یه baseForm تعریف کنید و تمام فرم هایی که میخواید این قابلیت رو داشته باشن، از اون baseForm ارث بری کنید و توی اون baseForm توی رویداد keyDown بگید که مثلا یه چیزی رو بنویسه..
موفق باشی