من روش استفاده از رویدادهای صفحه کلید را می خواستم بدونم. یعنی وقتی من شماره 1 را در صفحه کلید بزنم برنامه فلان کار را بکنه یا وقته کلید "ع" را زدم فلان کار را بکنه!
برای این کار باید از چه دستوری استفاده کنم ؟
من روش استفاده از رویدادهای صفحه کلید را می خواستم بدونم. یعنی وقتی من شماره 1 را در صفحه کلید بزنم برنامه فلان کار را بکنه یا وقته کلید "ع" را زدم فلان کار را بکنه!
برای این کار باید از چه دستوری استفاده کنم ؟
if(e.KeyCode==Keys.D1)
MessageBox.Show("You pressed 1 key");
در مورد حرف ع هم نمی دونم چطوری.
میشه بجای حرف ع از حرف u استفاده کرد
if (e.KeyChar == 'ع')
{
//your code
}
موفق باشید.
مرسی از راهنمایی...
ولی یه سوال :
اگر بخوام این کار را برای یک ماشین حساب انجام بدم باید برای هر باتون این کد را بنویسم یا اینکه راهی هست؟ شما حساب کنید برنامه ای دارید که خیلی از رویداد صفحه کلید دارید. آن وقت هم این روشی که گفتید مناسب است یا اینکه روش بهتری هست؟
مثل خاصیت اینتر در باتون ها که می توان آن را تنظیم کرد. حال چنین خاصیتی برای دیگه دکمه های صفحه کلید در سی شارپ وجود دارد؟
از دستور Switch استفاده کنید
switch(e.KeyChar )
{
case 'ع' :
MessageBox.Show("ع");
break;
case '1':
MessageBox.Show("1");
break;
}
من دقیق نمیدونم شما چه کاری میخواهید انجام بدید و با توجه به شرایط مختلف تصمیمات مختلفی میشه گرفت
مثلا اگر کار شما اینه که با توجه به هر کلیدی که فشار داده میشه یه کار خاصی انجام بدید راهش اینه که آقای رضوی فرمودن.
یا اگر شما میخواید با زدن هر کلید مقدار اون در صورتی که جزء کاراکتر های قابل قبول بود مقدارش به کاربر نشون داده بشه و مثلا شما 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);
}
در کل تصمیمات نصبت به شرایط فرق میکنه شما اگر بگی دقیقا چه کاری مد نظرتون هست بهتر میشه راهنمایی کرد.
موفق باشید.
برای رویداد Click تمام دکمه ها، میتشه فقط یک متد مشخص کرد... سپس اگر پارامتر sender رو به نوع Button تبدیل کنید، به دکمه ای که روی آن کلیک شده دسترسی دارید.نوشته شده توسط man_iran