PDA

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



rezaiy.ali
شنبه 06 بهمن 1386, 13:10 عصر
با سلام
من در رویداد KeyDown فرم برنامه کد زیر را قرار دادم


if (e.KeyCode == Keys.F12 ())
{
}

به دلیل انکه از این تکه بسیار در برنامه استفاده می کنم می خوام در زمان شرط از یک تابع برای این کار استفاده کنم



if (e.KeyCode == Function())

}
{

باید نوع خروجی تابع را از چه نوعی تعریف کنم
باتشکر

mamali_programer
شنبه 06 بهمن 1386, 13:20 عصر
سلام دوست عزیز
من خودم وقتی می خواهم متود بسازم میام کل قسمت که باید توی متدم باشرو سلکت میکنم بعد دکمه سمت راستو میزنم و در قسمت Refactor گزینه Extratc Method انتخاب میکنم
خودش به صورت خود کار همه کارهارو میکنه

hassan razavi
شنبه 06 بهمن 1386, 14:03 عصر
فقط Keys.F12 رو در یک function نوشتن چه کمکی میکنه ؟ من منظورتون رو متوجه نمیشم . شاید متظورتون اینه :


if (e.KeyCode == Keys.F12 ())
{
Function();
}

Mahdi.Kiani
شنبه 06 بهمن 1386, 15:02 عصر
با سلام
من در رویداد KeyDown فرم برنامه کد زیر را قرار دادم


if (e.KeyCode == Keys.F12 ())
{
}

به دلیل انکه از این تکه بسیار در برنامه استفاده می کنم می خوام در زمان شرط از یک تابع برای این کار استفاده کنم



if (e.KeyCode == Function())

}
{

باید نوع خروجی تابع را از چه نوعی تعریف کنم
باتشکر


سلام دوست عزیز
من خودم وقتی می خواهم متود بسازم میام کل قسمت که باید توی متدم باشرو سلکت میکنم بعد دکمه سمت راستو میزنم و در قسمت Refactor گزینه Extratc Method انتخاب میکنم
خودش به صورت خود کار همه کارهارو میکنه

چه ربطی داشت؟


فقط Keys.F12 رو در یک function نوشتن چه کمکی میکنه ؟ من منظورتون رو متوجه نمیشم . شاید متظورتون اینه :


if (e.KeyCode == Keys.F12 ())
{
Function();
}



با این که درست منظورشون را نرسوندند ولی فکر کنم یه چنین چیزی میخوان





if (IsValidKey(e.KeyCode))
{
//TODO ...
}
--------------------------------------------------------------
Boolean IsValidKey(Keys key)
{
return key == Keys.F12;
}




که در این صورت پیشنهاد می کنم از همون روش (خودشون) استفاده کنند. مگر اینکه نیاز به تابع IsValidKey در جاهای دیگه برنامه داشته باشند که در این صورت بهتره از کد زیر استفاده بشه




Boolean IsEqualKeys(Keys firstKey, Keys secondKey)
{

return firstKey == secondKey;
}



ابنجوری وابستگی به F12 هم از بین میره و مثلا برای کار شما می تونین به صورت زیر استفاده کنید




if (IsEqualKeys(e.KeyCode, Keys.F12))
{
//TODO ...
}
}

_hosseini_
شنبه 06 بهمن 1386, 22:51 عصر
من در رویداد KeyDown فرم برنامه کد زیر را قرار دادم

اگه منظورتان رویداد Form1_KeyDown است ، خوب این چه مشکلی از شما را حل می کنه ؟ و چرا اصلا رویداد Form1_KeyDown ؟
فرض می کنیم شما در رویداد ذیل اونو می خوای فراخوانی کنی و در فرم تان هم چنین

نوشتی :
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == (char)Keys.A)
MessageBox.Show("Hello");
}

و در رویداد مثلا button1 اونو فراخوانی کردی :


private void button1_Click(object sender, EventArgs e)
{
KeyEventArgs e1=new KeyEventArgs(Keys.F12);
Form1_KeyDown(sender, e1);
}

به نظرم یک کار بیهوده است ، البته اگه منظورتان رویداد keyDown فرم تان می باشد ؟!

mahdi_farhani
شنبه 06 بهمن 1386, 23:40 عصر
ماشالا اینجا هرکی یه برداشتی کرده ، این مشکل هم از سازنده تاپیک آب میخوره ..
--------------------------------------------------------------------------------------------------------
اول جواب سوالی که پرسیدی رو میدم .

private Keys test()
{
return Keys.F12;
}
اگر از Mdi فرم ها استفاده میکنی ، کافی فقط خصویت Keypreview رو True کنی تا در تمام فرمهات بتوی از این کد استفاده کنی ، فقط کافی تو رویداد frmMain_onkeydown منظورم از frmMain همون فرم Parrent هست.
اگر هم از فرم معمولی استفاده میکینی بازهم به همین شکله ولی فقط تو فرم خودت تاثیر داره
البته این برداشت من از مشکل شما بوده ، با این همه جواب فکر نکنم دیگه مشکلی داشته باشی.

Mahdi.Kiani
یک شنبه 07 بهمن 1386, 07:45 صبح
ماشالا اینجا هرکی یه برداشتی کرده ، این مشکل هم از سازنده تاپیک آب میخوره ..
--------------------------------------------------------------------------------------------------------
اول جواب سوالی که پرسیدی رو میدم .

private Keys test()
{
return Keys.F12;
}
اگر از Mdi فرم ها استفاده میکنی ، کافی فقط خصویت Keypreview رو True کنی تا در تمام فرمهات بتوی از این کد استفاده کنی ، فقط کافی تو رویداد frmMain_onkeydown منظورم از frmMain همون فرم Parrent هست.
اگر هم از فرم معمولی استفاده میکینی بازهم به همین شکله ولی فقط تو فرم خودت تاثیر داره
البته این برداشت من از مشکل شما بوده ، با این همه جواب فکر نکنم دیگه مشکلی داشته باشی.

اینکه خیلی بیخوده
یک متد که تنها یک لید بر می گردونه .. اونم بدون هیچ عمل دیگه ای
خوب خود




Keys.F12;


را هر جا که خواستن استفاده می کنند دیگه ...
متد هایی که اینگونه فقط یک مقدار را بر میگردانند، اون مقدار معمولا بایستی در طی اجرای برنامه تغییر کنه .. مثلا درون یک کلاسی یک متغیر صحیح توسط آبجکت های دیگه قابل تغییر است . حالا این منطقی هست که یک متد بنویسیم که مقدار اون متغیر را برگردونه (اگه از property ها استفاده نشده باشه) .. ولی اینکه یک متد به این شکلی که شما نوشتین، فقط یک کلید برگردونه خیلی کار بیهوده و اضافی انجام دادین .. به این دلیل که Keys همه جا قابل استفاده می باشد. در نتیجه Keys.F12 هم همینطور

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