نمایش نتایج 1 تا 12 از 12

نام تاپیک: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

  1. #1

    سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    سلام
    این کلاس keys در رویدادهای کیبرد دقیقا چیه؟ من کد زیر رو وقتی در رویداد KeyDown (فرم) مینویسم ، هر دکمه ای رو میزنم بهم پیام E رو میده. چرا؟ :


    string y = Convert.ToString(Keys.E);
    MessageBox.Show(y);

    مگه نباید فقط وقتی دکمه E را میزنم فقط عمل کنه؟
    و اینکه من در کد زیر که توی رویداد KeyDown گذاشتم ، میخوام وقتی کلیدهای ترکیبی Ctrl+E رو زدم ، بهم پیام بده ولی نمیده . علت اشتباهم کجاست؟ :


    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.Control==true && e.KeyData==Keys.E)
    {
    MessageBox.Show(e.Control.ToString()+" + "+e.KeyData.ToString()+" pressed");
    }


    }

  2. #2
    کاربر دائمی آواتار iman_me
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    Microsoft Visual Studio
    پست
    338

    نقل قول: سئوال درباره رویداد کیبرد

    سوال اول
    خوب شما داری E رو توی یه استرینگ میریزی بعد نشونش میدی پس میخوای چی بهت نشون بده
    سوال دو
    اول keypreveiw رو true کن بعد

    if ((e.Control == true) && (e.KeyCode == Keys.E))
    {
    MessageBox.Show("");
    }


  3. #3

    نقل قول: سئوال درباره رویداد کیبرد

    نقل قول نوشته شده توسط iman_me مشاهده تاپیک
    سوال اول
    خوب شما داری E رو توی یه استرینگ میریزی بعد نشونش میدی پس میخوای چی بهت نشون بده
    سوال دو
    اول keypreveiw رو true کن بعد

    if ((e.Control == true) && (e.KeyCode == Keys.E))
    {
    MessageBox.Show("");
    }

    ممنون آقا ایمان
    اولی را والا متوجه نشدم . مثلا وقتی هر دکمه ای را میزنم بجز E رو باید بنویسه None یا چیزی شبیه این و فقط E رو میزنم باید بنویسه E دیگه؟! پس چرا هر دکمه ای رو تو کد اول میزنم مینویسه E ؟
    دومی هم keyPreview فعاله و با این کد هم که دادی بازم کار نمیکنه برام! نمیدونم مشکل از کجاست . مثلا این کد برام کار میکنه :


    string x=Convert.ToString(e.KeyData);
    if (x=="A")
    {
    MessageBox.Show(x);
    }


    ولی کد دومی که خودم دادم یا کدی که دادی کار نمیکنه

  4. #4
    کاربر دائمی آواتار iman_me
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    Microsoft Visual Studio
    پست
    338

    نقل قول: سئوال درباره رویداد کیبرد

    واسه سوال اول
    شما شرطی نزاشتی ک در چ صورت E رو پیغام بده
    فقط نوشتی پیغام بده بعد گزاشتیش توی key down
    واسه دومی هم
    کدی ک گذاشتم رو کجا قرار دادی

  5. #5

    نقل قول: سئوال درباره رویداد کیبرد

    نقل قول نوشته شده توسط iman_me مشاهده تاپیک
    واسه سوال اول
    شما شرطی نزاشتی ک در چ صورت E رو پیغام بده
    فقط نوشتی پیغام بده بعد گزاشتیش توی key down
    واسه دومی هم
    کدی ک گذاشتم رو کجا قرار دادی
    خوب شرط هم بزارم فرقی نمیکنه چون هر دکمه ای رو که فشار بدم E رو برمیگردونه و کد شرط رو اجرا میکنه .
    دومی هم توی رویداد KeyDown فرم گزاشتم (کد کاملش توی پست اول
    هست)

  6. #6

    نقل قول: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    هر کدوم جداگانه جواب میدن ولی با هم که بشن (اند وسط شون قرار بگیره) شرط دیگه اجرا نمیشه
    چرا؟

  7. #7

    نقل قول: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    کسی نمیدونه؟

  8. #8

    نقل قول: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    سلام دوست عزیز

    این کد رو تست کن.



    if(e.Modifiers == Keys.Control && e.KeyCode == Keys.E)
    {
    MessageBox.Show("fire");
    }


  9. #9

    نقل قول: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    نقل قول نوشته شده توسط vb8334 مشاهده تاپیک
    سلام دوست عزیز

    این کد رو تست کن.



    if(e.Modifiers == Keys.Control && e.KeyCode == Keys.E)
    {
    MessageBox.Show("fire");
    }


    سلام
    ممنون این کد عمل کرد
    ولی اشکال کد من کجا بود مگه؟

  10. #10

    نقل قول: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک

    سلام
    ممنون این کد عمل کرد
    ولی اشکال کد من کجا بود مگه؟

    کد آقا ایمان هم کار میکنه

    اما اگه تفاوتش رو بخوایم بدونیم

    هر دو modifiers و Control از کلاس KeyEventArgs
    Modifiers : میاد میبینه چه کلید های ترکیبی فشرده شده مثلآ (alt,shift,ctrl)


    Control : فقط میاد میگه که آیا کلید ctrl فشرده شده یا نه .

    مثلآ یه کاری که با modifiers ها نمیشه انجام داد این مقایسه هست.



    if(e.KeyCode == Keys.E && (e.Alt || e.Control || e.Shift))
    {
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 06 فروردین 1395 در 20:05 عصر

  11. #11

    نقل قول: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    نقل قول نوشته شده توسط vb8334 مشاهده تاپیک
    کد آقا ایمان هم کار میکنه

    اما اگه تفاوتش رو بخوایم بدونیم

    هر دو modifiers و Control از کلاس KeyEventArgs
    Modifiers : میاد میبینه چه کلید های ترکیبی فشرده شده مثلآ (alt,shift,ctrl)


    Control : فقط میاد میگه که آیا کلید ctrl فشرده شده یا نه .

    مثلآ یه کاری که با modifiers ها نمیشه انجام داد این مقایسه هست.


    if(e.KeyCode == Keys.E && (e.Alt || e.Control || e.Shift))
    {
    }


    ممنون
    مشکل انگار فقط از e.KeyData ای که من گذاشتم هست که با e.KeyCode شما حل شد
    ولی چرا؟ فرق این دو عبارت چی هستن که تفاوت عملکردشون این میشه؟
    البته با modifiers که توضیح دادین . اگه اشتباه نکنم modifier رو گفتین برای زمانی کاربرد داره که کلیدهای ترکیبی مثل همین بخوایم بنویسیم . خوب اگه چند کلید ترکیبی مثلا ctrl+shift+space+H بخوایم بنویسیم اون موقع باز هم کافیه که برای 2 کلید
    ctrl و shift اش از modifier ها استفاده کنیم و برای بقیه از حالت عادی؟

  12. #12

    نقل قول: سوال درباره تشخیص کلیدی خاص در رویداد KeyDown

    keydata و keycode شباهت زیادی با هم دارند



    keydata : فشرده شدن کلیدهای ترکیبی رو هم تشخیص میده

    keycode : کد اسکی دکمه فشرده رو میگیره و بررسی میکنه که چه کلیدی فشره شده


    یه مثال از نحوه استفاده از keydata


    if (e.KeyData == (Keys.E | Keys.Control))
    {


    MessageBox.Show("asdas");
    }


تاپیک های مشابه

  1. تشخیص کلید های ترکیبی در رویداد keydown
    نوشته شده توسط mina.net در بخش VB.NET
    پاسخ: 1
    آخرین پست: یک شنبه 25 بهمن 1388, 17:26 عصر
  2. تشخیص عدد در رویداد keydown
    نوشته شده توسط Mrs.Net در بخش C#‎‎
    پاسخ: 3
    آخرین پست: یک شنبه 31 شهریور 1387, 16:29 عصر
  3. سوال درباره ی فارسی نویسی در دیتابیس
    نوشته شده توسط parvin2 در بخش SQL Server
    پاسخ: 3
    آخرین پست: یک شنبه 12 فروردین 1386, 21:28 عصر
  4. سوال درباره نوشتن برنامه فارسی در ویندوز 98
    نوشته شده توسط alikoochooloo در بخش VB.NET
    پاسخ: 15
    آخرین پست: یک شنبه 02 شهریور 1382, 19:49 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •