PDA

View Full Version : استفاده از کلی های ترکیبی (shortcut) برای اجرای دستورات



amirepsilon
چهارشنبه 10 تیر 1388, 10:57 صبح
سلام
چطور میتونم بفهمم کاربر کلید هایی که من میخوام رو فشار داده تا دستوراتی رو اجرا کنم ؟
ممنون

happy65_sh
چهارشنبه 10 تیر 1388, 11:14 صبح
توی ایونت Keydown


if (e.KeyCode == Keys.Escape)
کارهایی که می خواهی انجام شود

حالا به جای Escape می تونی هر چی می خواهی بنویسی حتی می تونی ترکیبی از جند کلید را با هم چک کنی


if (e.Control && e.KeyCode == Keys.A)

مثلا کد بالادر صورت فشار دادن Ctrl+A کد خاصی را اجرا می کند
در ضمن یادت نره که keypreview فرمت را هم True کنی

amirepsilon
چهارشنبه 10 تیر 1388, 11:41 صبح
اگر فرم فوکاس نداشت چیکار کنم ؟
در ضمن چطور میشه فوکاس رو به یه فرم بدی ؟
ممنون

happy65_sh
چهارشنبه 10 تیر 1388, 12:38 عصر
اگه منظورت این هست که با زدن کلید خاصی فوکوس از یک فرم به فرم دیگه بره:
مثلا من دوتا فرم دارم form1 و form2 .میخواهم وقتی focuse روی فرم 2 هست با زدن حرف Aفوکوس به فرم 1 برگردد در keydown فرم 2 کد زیر را بنویس:


Form f = Application.OpenForms["form1"];
if (this.Focused && e.KeyCode == Keys.A)
{
f.Show();
f.Focus();
}

البته من قبلا همچون کاری نکرده بودم نمی دونم بدون ایراد هست یا نه خودم امتحان کردم مشکلی نداشت.شما هم امتحان کن.
امیدوارم مشکلت را حل کنه

amirepsilon
چهارشنبه 10 تیر 1388, 14:05 عصر
سوال اول :

این خط:
Form f = Application.OpenForms["form1"];
با این خط :
form f = new form();
چه فرقی میکنه ؟


سوال دوم :

منظورم اینه که اگه اصلا فوکوس روی برنامه ما نبود چیکار میشه کرد ؟
من امتحان کردم کلید های کترلی کار نمیکردن

Reza_Yarahmadi
چهارشنبه 10 تیر 1388, 16:44 عصر
در مورد سؤال اولتون:
کدی که دوستمون نوشته واسه زمانیه که یه فرم باز با دستور Hide مخفی شده، به جای اینکه هر بار یه شئ از اون فرم درست کنه و اونو نمایش بده (دستوری که شما نوشتید) همون فرمی که Hide شده رو نمایش میده.
و در مورد سؤال دومتون:
یه راهش اینه که KeyEvent سیستم رو بدست بسارید و بر اساس اون کاری که میخواید رو انجام بدید.
قبلا در این رابطه بحث شده یه جستجو کوچیک کنید به نتیجه مورد نظرتون میرسید.

amirepsilon
چهارشنبه 10 تیر 1388, 21:07 عصر
سلام
ممنون
در مورد سوال اول یک سوال داشتم

فکر کن من با یه فرمی کار دارم
از کجا بفهمم فرم hide هست یا اصلا لود نشده ؟
چون امتحان کردم اگه لود نشده باشه این کد ارور میده:

Form f = Application.OpenForms["form1"];

احمد سامعی
چهارشنبه 10 تیر 1388, 21:32 عصر
از کجا بفهمم فرم hide هست یا اصلا لود نشده ؟

يك راه ساده استفاده از يك كليد App Setting از نوع Boolin مسازي هر وقت مي خواي فرم لود كني مقدار چك مي كني اگر قبلاً نمونه سازي كرده بودي كه هيچ فراخواني مي كني واگر نه اول مي سازي بعد مقدار true مي كنه وقتي هم كه مي بندي فرم رو مقدار false كن

Reza_Yarahmadi
پنج شنبه 11 تیر 1388, 21:54 عصر
از کجا بفهمم فرم hide هست یا اصلا لود نشده ؟
چون امتحان کردم اگه لود نشده باشه این کد ارور میده:



if (Application.OpenForm["Form1"] == null)
Form1 f = new Form1();

amirepsilon
شنبه 13 تیر 1388, 14:13 عصر
من یه همچین کدی میخوام ولی جواب نمیده :


if (Application.OpenForms["main"] == null)
{
main frm_main = new main();
}
else
{
Form frm_main = Application.OpenForms["main"];
}

if (frm_main.Visible == false)

Reza_Yarahmadi
شنبه 13 تیر 1388, 17:04 عصر
باید هم جواب نده!
شما شئ فرمتون رو دارید توی بلاکهای if و else تعزیف میکنید، اینطوری بیرون بلاکها اون شئ اعتبار نداره (حتی وجود هم نداره)
بصورت زیر امتحان کن ببین درست میشه یا نه


main frm_main;
if (Application.OpenForms["main"] == null)
{
frm_main = new main();
}
else
{
frm_main = Application.OpenForms["main"];
}
if (frm_main.Visible == false)
frm_main.Show();

amirepsilon
یک شنبه 14 تیر 1388, 10:48 صبح
ارور داره !


frm_main = Application.OpenForms["main"];



Error 1 Cannot implicitly convert type 'System.Windows.Forms.Form' to 'main'. An explicit conversion exists (are you missing a cast?) C:\Documents and Settings\My Documents\Visual Studio 2008\Projects\start.cs 40 28

Reza_Yarahmadi
یک شنبه 14 تیر 1388, 14:48 عصر
من اشتباه کردم شما که متن خطا رو دارید! :چشمک: خطا داره میگه خروجی دستور از نوع Form است و نمیتونه به
main تبدیلش کنه (یا یه همچین چیزی!!)
کافیه دستور زیر رو معادل کنی


main frm_main;
//Convert to
Form frm_main;