Announcement

Collapse
No announcement yet.

[C#] [Thắc mắc] Tạo sự kiện ấn phím trong C#

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] [Thắc mắc] Tạo sự kiện ấn phím trong C#

    Em đang viết thử chương trình tách họ tên trên Windowns Forms.
    Trong chương trình có button Tách để thực hiện tách họ tên khi có sự kiện Click. Giờ em muốn sau khi nhập họ tên xong, nhấn Enter thì chương trình sẽ thực hiện tách. Em thiết lập thuộc tính KeyPreview=true cho form và viết sự kiện KeyDown:
    Code:
    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter) btn_Tach.PerformClick();
            }
    Nhưng mỗi lần nhấn phím thì nó lại phát ra âm thanh như báo lỗi (mặc dù vẫn thực hiện tách). Có cách nào để chỉnh lại không ạ?

  • #2
    Originally posted by 11520215 View Post
    Em đang viết thử chương trình tách họ tên trên Windowns Forms.
    Trong chương trình có button Tách để thực hiện tách họ tên khi có sự kiện Click. Giờ em muốn sau khi nhập họ tên xong, nhấn Enter thì chương trình sẽ thực hiện tách. Em thiết lập thuộc tính KeyPreview=true cho form và viết sự kiện KeyDown:
    Code:
    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter) btn_Tach.PerformClick();
            }
    Nhưng mỗi lần nhấn phím thì nó lại phát ra âm thanh như báo lỗi (mặc dù vẫn thực hiện tách). Có cách nào để chỉnh lại không ạ?
    Bạn vào properties của form (phần design ấy), chỗ thuộc tính AcceptButton bạn chọn tên cái button thực hiện tách là ok.
    Hãy là chính mình!

    Comment


    • #3
      Thực hiện trên nhiều button được không anh? những nút khác khi ấn vẫn phát ra âm thanh đó

      Comment


      • #4
        Originally posted by 11520215 View Post
        Thực hiện trên nhiều button được không anh? những nút khác khi ấn vẫn phát ra âm thanh đó
        mỗi Form chỉ có một acceptbutton thôi bạn ah
        Hãy là chính mình!

        Comment


        • #5
          PHP Code:
           protected override bool ProcessCmdKey(ref Message msgKeys keydata)
                  {
                      if (
          keydata == Keys.Enter)
                      {
                          
          btn_Tach.PerformClick()
                          return 
          true;
                      }
                      return 
          false;
                  } 
          Bạn thử code này xem sao
          Get link VIP FShare
          http://linhf.com/fshare
          To the world you may be one person, but to one person you may be the world.

          Comment


          • #6
            chỉ cần thêm câu lệnh this.AcceptButton = cái button ảnh hướng đến trong chỗ Form_Load là dc mà
            PHP Code:
             private void Form_Load(object senderEventArgs e)
                    {
                        ..........
                        
            this.AcceptButton button ảnh hưởng đến;
                    } 

            Comment


            • #7
              Originally posted by 11520215 View Post
              Thực hiện trên nhiều button được không anh? những nút khác khi ấn vẫn phát ra âm thanh đó
              nếu nhiều nút như vậy thì khi nhấn Enter thì nút nào sẽ đc thực hiện đây em?
              em chọn cái nút nào muốn là nút chính để gán vào thuộc tính accept button đó
              -----------------------------
              Mai Văn Khải
              Software Engineering, University Information of Technology
              a07d26eb5cbc98f77b36a461eb629456

              Comment


              • #8
                Originally posted by 11520215 View Post
                Em đang viết thử chương trình tách họ tên trên Windowns Forms.
                Trong chương trình có button Tách để thực hiện tách họ tên khi có sự kiện Click. Giờ em muốn sau khi nhập họ tên xong, nhấn Enter thì chương trình sẽ thực hiện tách. Em thiết lập thuộc tính KeyPreview=true cho form và viết sự kiện KeyDown:
                Code:
                private void Form1_KeyDown(object sender, KeyEventArgs e)
                        {
                            if (e.KeyCode == Keys.Enter) btn_Tach.PerformClick();
                        }
                Nhưng mỗi lần nhấn phím thì nó lại phát ra âm thanh như báo lỗi (mặc dù vẫn thực hiện tách). Có cách nào để chỉnh lại không ạ?
                Mình thấy bạn nên bắt sự kiện KeyPress cho cái textbox họ tên thì hay hơn.
                Blog: http://khuongntrd.blogspot.com/ Email: khuongntrd@gmail.com
                Facebook: https://www.facebook.com/dkuns2

                Comment


                • #9
                  Originally posted by 09520133 View Post
                  nếu nhiều nút như vậy thì khi nhấn Enter thì nút nào sẽ đc thực hiện đây em?
                  em chọn cái nút nào muốn là nút chính để gán vào thuộc tính accept button đó
                  Ý em là mình tạo nhiều sự kiện nhấn phím, như là phím Enter để thực hiện tách, phím ESC để thoát chương trình.
                  Originally posted by 11520185 View Post
                  Mình thấy bạn nên bắt sự kiện KeyPress cho cái textbox họ tên thì hay hơn.
                  Bạn nói cụ thể hơn được không?

                  Comment


                  • #10
                    nếu chỉ có 2 nút vậy thì gán this.AcceptButton cho button Tách, còn this.CancelButton cho button thoát là dc mà? mình nghĩ thế
                    Originally posted by 11520215 View Post
                    Ý em là mình tạo nhiều sự kiện nhấn phím, như là phím Enter để thực hiện tách, phím ESC để thoát chương trình.

                    Comment


                    • #11
                      Originally posted by 11520215 View Post
                      Ý em là mình tạo nhiều sự kiện nhấn phím, như là phím Enter để thực hiện tách, phím ESC để thoát chương trình.

                      Bạn nói cụ thể hơn được không?
                      Bạn nên xác định là đang làm việc với control cụ thể hay là với cả cái Form luôn. Ở đây nếu bạn chỉ làm việc với cái TextBox thì bạn tìm hiểu các sự kiện Key của textBox đó, còn làm việc với cả Form thì xem các sự kiện Key trên Form.
                      Hãy là chính mình!

                      Comment


                      • #12
                        Tất nhiên là được chứ em. Em thích làm sao chả được. Cứ if (sự kiện đó) rồi thực hiện thôi.
                        Xem thêm về overridelại sự kiện keydown.
                        Ví dụ đơn giản như thế này:
                        Code:
                        //
                                //HotKey
                                //
                        
                                protected override bool ProcessDialogKey(Keys keyData)
                                {
                                    if (keyData == Keys.F2)
                                    {
                                        NewMDI();
                                        return true;
                                    }
                                    else if (keyData == (Keys.Control | Keys.Alt | Keys.F4))
                                    {
                                        foreach (Form f in this.MdiChildren)
                                        {
                                            f.Close();
                                        }
                                        return true;
                                    }
                                    else if (keyData == Keys.F1)
                                    {
                                        Help.ShowHelp(this,"huongdan.chm");
                                        return true;
                                    }
                                    else return false;
                                }
                        Originally posted by 11520215 View Post
                        Ý em là mình tạo nhiều sự kiện nhấn phím, như là phím Enter để thực hiện tách, phím ESC để thoát chương trình.

                        Bạn nói cụ thể hơn được không?
                        -------------------------------------
                        Đời là bể khổ.
                        Quay đầu là bờ ai ngờ là đại dương.
                        ------------------------------------------------------------------------

                        Comment

                        LHQC

                        Collapse
                        Working...
                        X