Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Tạo hàm sử dụng sự kiện Enter cho tất cả các TextBox??

  1. #1
    Ngày gia nhập
    05 2011
    Bài viết
    78

    Mặc định Tạo hàm sử dụng sự kiện Enter cho tất cả các TextBox??

    Trên sự kiện enter của textBox1
    Code:
            private void textBox1_Enter(object sender, EventArgs e)
            {
                textBox1.BackColor = Color.Aqua;
            }
    Bây giờ mình muốn viết hàm sử dụng chung sự kiện enter trên cho tất cả các textbox trên form thì phải làm thế nào.
    Mình đã tìm trên diễn đàn, cũng có 1 số bài viết liên quan, nhưng không có trả lời, hay trả lời không cụ thể lắm. Mong mọi người giúp mình với.
    Cám ơn mọi người.

  2. #2
    Ngày gia nhập
    12 2009
    Nơi ở
    The country of happiness
    Bài viết
    182

    bạn select tất cả các textbox trên form, sau đó vào Properties > gõ tên hàm gọi cần dùng và save lại.
    Trích dẫn Nguyên bản được gửi bởi Wazi Armstrong Xem bài viết
    Ôi skill của mình đã đạt đến hàng tuyệt đỉnh
    Không chỉ ăn, tắm, đi lại có thể code
    Mà giờ đã mình có thể code cả khi ngủ. Code tạm vào buffer của não, lúc nào dậy chỉ việc viết ra một cách trôi chảy không lưỡng lự.
    PS: Nếu ngủ dài rảnh rảnh có thể debug luôn, dậy chỉ việc build ?
    Trích dẫn Nguyên bản được gửi bởi vietanh8286 Xem bài viết
    Lập trình viên giỏi là lập trình viên có vợ

  3. #3
    Ngày gia nhập
    05 2011
    Bài viết
    78

    Như thế không được đâu bạn à. Ở đây mình chỉ muốn khi click chuột vào textbox nào thì textbox đó đổi màu. Làm như bạn thì sẽ tạo ra 1 hàm sử dụng chung với tên ví dụ: private void textBox1_Enter(object sender, EventArgs e), thì khi bạn click vào textbox 1 thì ok, nhưng click vào các textbox khác thì textbox1 đổi màu, mà các textbox khác không có thay đổi gì.

  4. #4
    Ngày gia nhập
    05 2010
    Bài viết
    505

    Ý bạn là làm giống mấy cái form trên website, focus vào input nào thì highlight cái đó đúng ko ? Mình có ý tưởng vầy nè.

    1. Trong hàm Form_Load bạn gán sự kiện Focus và LostFocus cho tất cả các textbox. Ví dụ

    Visual C# Code:
    1.         private void Form4_Load(object sender, EventArgs e)
    2.         {
    3.             foreach (Control control in this.Controls)
    4.             {
    5.                 if (control is TextBox)
    6.                 {
    7.                     control.GotFocus += new EventHandler(textBox_Focus);
    8.                     control.LostFocus += new EventHandler(textBox_LostFocus);
    9.                 }
    10.             }
    11.         }

    2. Viết 2 hàm trên để thay đổi màu nền. Ví dụ:
    Visual C# Code:
    1.         void textBox_Focus(object sender, EventArgs e)
    2.         {
    3.             ((TextBox)sender).BackColor = Color.Yellow;
    4.                
    5.         }
    6.  
    7.         void textBox_LostFocus(object sender, EventArgs e)
    8.         {
    9.             ((TextBox)sender).BackColor = Color.White;
    10.  
    11.         }

    cái textBox_Focus là để đổi màu, còn textBox_LostFocus là trả về màu ban đầu (mặc định) khi chuyển sang textbox hoặc control khác.

    hy vọng đúng ý bạn

  5. #5
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Trích dẫn Nguyên bản được gửi bởi luxubu Xem bài viết
    Ý bạn là làm giống mấy cái form trên website, focus vào input nào thì highlight cái đó đúng ko ? Mình có ý tưởng vầy nè.

    1. Trong hàm Form_Load bạn gán sự kiện Focus và LostFocus cho tất cả các textbox. Ví dụ

    Visual C# Code:
    1.         private void Form4_Load(object sender, EventArgs e)
    2.         {
    3.             foreach (Control control in this.Controls)
    4.             {
    5.                 if (control is TextBox)
    6.                 {
    7.                     control.GotFocus += new EventHandler(textBox_Focus);
    8.                     control.LostFocus += new EventHandler(textBox_LostFocus);
    9.                 }
    10.             }
    11.         }

    2. Viết 2 hàm trên để thay đổi màu nền. Ví dụ:
    Visual C# Code:
    1.         void textBox_Focus(object sender, EventArgs e)
    2.         {
    3.             ((TextBox)sender).BackColor = Color.Yellow;
    4.                
    5.         }
    6.  
    7.         void textBox_LostFocus(object sender, EventArgs e)
    8.         {
    9.             ((TextBox)sender).BackColor = Color.White;
    10.  
    11.         }

    cái textBox_Focus là để đổi màu, còn textBox_LostFocus là trả về màu ban đầu (mặc định) khi chuyển sang textbox hoặc control khác.

    hy vọng đúng ý bạn
    Đúng ý bạn đó rồi. Nếu không đúng thì do bạn chủ thớt viết sai.hihi
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  6. #6
    Ngày gia nhập
    05 2011
    Bài viết
    78

    Mặc định Tạo hàm sử dụng sự kiện Enter cho tất cả các TextBox??

    Hi, đúng rồi. Đẹp lắm. hi. Cám ơn bạn đã giúp đỡ.
    Mà bạn ơi, nó chỉ có tác dụng với các textbox nằm ngay trên form thôi.
    Các textbox năm trong 1 Group hay panel thì nó lại không có tác dụng. Làm sao bây giờ

  7. #7
    Ngày gia nhập
    12 2009
    Nơi ở
    The country of happiness
    Bài viết
    182

    Trích dẫn Nguyên bản được gửi bởi hu-xeko Xem bài viết
    Như thế không được đâu bạn à. Ở đây mình chỉ muốn khi click chuột vào textbox nào thì textbox đó đổi màu. Làm như bạn thì sẽ tạo ra 1 hàm sử dụng chung với tên ví dụ: private void textBox1_Enter(object sender, EventArgs e), thì khi bạn click vào textbox 1 thì ok, nhưng click vào các textbox khác thì textbox1 đổi màu, mà các textbox khác không có thay đổi gì.
    trong cái hàm ấy bạn gọi object sender đổi màu, chứ đương nhiên là đã làm cho mọi textbox thì ai lại gọi riêng textbox1 đổi màu nữa =.=
    Trích dẫn Nguyên bản được gửi bởi Wazi Armstrong Xem bài viết
    Ôi skill của mình đã đạt đến hàng tuyệt đỉnh
    Không chỉ ăn, tắm, đi lại có thể code
    Mà giờ đã mình có thể code cả khi ngủ. Code tạm vào buffer của não, lúc nào dậy chỉ việc viết ra một cách trôi chảy không lưỡng lự.
    PS: Nếu ngủ dài rảnh rảnh có thể debug luôn, dậy chỉ việc build ?
    Trích dẫn Nguyên bản được gửi bởi vietanh8286 Xem bài viết
    Lập trình viên giỏi là lập trình viên có vợ

  8. #8
    Ngày gia nhập
    05 2011
    Bài viết
    78

    À, mình làm được rồi. Cám ơn các bạn.
    Mình tách thành hàm như sau:
    Code:
            void ChangeBack(params TextBox[] txt)
            {
                foreach (TextBox chiTxt in txt)
                {
                    chiTxt.GotFocus += new EventHandler(textBox_Focus);
                    chiTxt.LostFocus += new EventHandler(textBox_LostFocus);
                }
            }
    Rồi trong formLoad mình
    Code:
    ChangeBack(textBox1, textBox2, textBox3, textBox4,textBox5,...);
    Như thế thì các textbox nằm ở đâu cũng nhận được sender. hi.
    (Mình nói ra để các bạn khác có thể giải quyết luôn, hi.)
    Một lần nữa cảm ơn các bạn.

  9. #9
    Ngày gia nhập
    05 2010
    Bài viết
    505

    ok, cách của bạn cũng đc nhưng là chữa cháy thôi, vì khi số lượng textbox thay đổi (ví dụ thêm hoặc bớt 1 vài textbox) bạn lại phải thay trong hàm ChangeBack.

  10. #10
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hi. Bạn sửa kiểu đó cũng được. Nhưng bjo mà thêm vài cái nữa, hoặc nhiều nhiều lại phải vào sửa code. Bạn hoàn toàn vẫn dùng vòng lặp được mà.
    + Duyệt các control trên Form
    -1: nếu là textbox => gán...
    -2: là control khác: group box,checkbox... thì bạn lại duyệt những cái textbox trong control đó.
    => Viết hàm đệ quy: Đầu tiên truyền vào form hiện tại( this).... là ok.
    Ví dụ:
    Visual C# Code:
    1.        private void SetReadOnlyTxt(Control rCtrl)
    2.         {
    3.             foreach (Control ctr in rCtrl.Controls)
    4.             {
    5.                 if (ctr is TextBox)
    6.                 {
    7.                     (ctr as TextBox).ReadOnly = true;
    8.                     ctr.BackColor = Color.White;
    9.                 }
    10.                 if (ctr is GroupBox)
    11.                 {
    12.                     SetReadOnlyTxt(ctr);
    13.                 }
    14.             }
    15.         }
    Đã được chỉnh sửa lần cuối bởi mrfour.it : 17-03-2012 lúc 02:09 PM.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

Các đề tài tương tự

  1. Textbox tự động lưu dữ liệu không cần enter (winfrom)
    Gửi bởi atlantiky trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 11-10-2013, 09:44 PM
  2. làm sao bôi đen dữ liệu trong textbox sau khi ấn Enter
    Gửi bởi eya_storm trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 18-12-2011, 07:24 PM
  3. Trả lời: 14
    Bài viết cuối: 10-10-2011, 03:58 PM
  4. nhập dữ liệu vào textbox enter con trỏ xuống textbox kế tiếp?
    Gửi bởi hoanghuynh2409 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 25-12-2010, 09:57 PM
  5. Nhấp Enter thì textbox được bôi xanh
    Gửi bởi minhitcn2 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 30-05-2008, 04:25 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn