PDA

View Full Version : رویدادهای صفحه کلید



man_iran
یک شنبه 29 مهر 1386, 22:22 عصر
من روش استفاده از رویدادهای صفحه کلید را می خواستم بدونم. یعنی وقتی من شماره 1 را در صفحه کلید بزنم برنامه فلان کار را بکنه یا وقته کلید "ع" را زدم فلان کار را بکنه!
برای این کار باید از چه دستوری استفاده کنم ؟

choobin84
دوشنبه 30 مهر 1386, 07:12 صبح
if(e.KeyCode==Keys.D1)
MessageBox.Show("You pressed 1 key");

در مورد حرف ع هم نمی دونم چطوری.
میشه بجای حرف ع از حرف u استفاده کرد

alireza643
دوشنبه 30 مهر 1386, 08:19 صبح
if (e.KeyChar == 'ع')
{
//your code
}

موفق باشید.

man_iran
دوشنبه 30 مهر 1386, 10:23 صبح
مرسی از راهنمایی...
ولی یه سوال :
اگر بخوام این کار را برای یک ماشین حساب انجام بدم باید برای هر باتون این کد را بنویسم یا اینکه راهی هست؟ شما حساب کنید برنامه ای دارید که خیلی از رویداد صفحه کلید دارید. آن وقت هم این روشی که گفتید مناسب است یا اینکه روش بهتری هست؟
مثل خاصیت اینتر در باتون ها که می توان آن را تنظیم کرد. حال چنین خاصیتی برای دیگه دکمه های صفحه کلید در سی شارپ وجود دارد؟

hassan razavi
دوشنبه 30 مهر 1386, 10:43 صبح
از دستور Switch استفاده کنید


switch(e.KeyChar )
{
case 'ع' :
MessageBox.Show("ع");
break;

case '1':
MessageBox.Show("1");
break;
}

alireza643
دوشنبه 30 مهر 1386, 15:41 عصر
من دقیق نمیدونم شما چه کاری میخواهید انجام بدید و با توجه به شرایط مختلف تصمیمات مختلفی میشه گرفت
مثلا اگر کار شما اینه که با توجه به هر کلیدی که فشار داده میشه یه کار خاصی انجام بدید راهش اینه که آقای رضوی فرمودن.
یا اگر شما میخواید با زدن هر کلید مقدار اون در صورتی که جزء کاراکتر های قابل قبول بود مقدارش به کاربر نشون داده بشه و مثلا شما 20 تا کاراکتر داشته باشید خوب به تبع نوشتن یه switch خیلی روش طولانی هست و من از روش زیر استفاده میکنم:
فرض کن میخوام کاراکتر به کاربر نشون داده بشه اگر فقط کاراکتر این ها بود (ا ، ب ، ج ، د ، ی ، ث ، 1 ، 2 ، 5)


private bool IsInList(char ch)
{
char[] lst = { 'ا', 'ب', 'ج', 'د', 'ی', 'ث','1','2','5'};
for (int i = 0; i < lst.Length ; i++)
if (ch == lst[i]) return true;
return false;
}

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (IsInList(e.KeyChar))
MessageBox.Show("Your char is: "+ e.KeyChar);
}

در کل تصمیمات نصبت به شرایط فرق میکنه شما اگر بگی دقیقا چه کاری مد نظرتون هست بهتر میشه راهنمایی کرد.
موفق باشید.

PC2st
دوشنبه 30 مهر 1386, 21:37 عصر
اگر بخوام این کار را برای یک ماشین حساب انجام بدم باید برای هر باتون این کد را بنویسم یا اینکه راهی هست؟ شما حساب کنید برنامه ای دارید که خیلی از رویداد صفحه کلید دارید. آن وقت هم این روشی که گفتید مناسب است یا اینکه روش بهتری هست؟
برای رویداد Click تمام دکمه ها، میتشه فقط یک متد مشخص کرد... سپس اگر پارامتر sender رو به نوع Button تبدیل کنید، به دکمه ای که روی آن کلیک شده دسترسی دارید.