[VB.NET] Gán phím Enter cho nhiều Button

Liên hệ QC

Thanh Bình PV

Thành viên hoạt động
Tham gia
30/10/19
Bài viết
151
Được thích
19
Em chào mọi người,

Em có 1 Form có 17 Button. Em dùng phím Tab để chuyển qua lại giữa các Button và em muốn khi nhấn phím Enter thì Button nào hiện đang được chọn sẽ thực thi Button đó. (Em có 1 số Button nằm trong GroupBox ạ.)

Em đang sử dụng code như sau nhưng nó khá thủ công nên hy vọng có ai giúp em code tốt hơn ạ
Em cảm ơn.

Mã:
Trong Sự kiện KeyDown :
If e.Keycode = Keys.Enter Then
Select Case True
    Case Button1.Focused
        Call Button1.Performclick()
    Case button2.Focused
        Call Button2.Performclick()
    .
    .
    .
    Case button17.Focused
        Call Button17.Performclick()
End select
End If
 
Lần chỉnh sửa cuối:
Em chào mọi người,

Em có 1 Form có 17 Button. Em dùng phím Tab để chuyển qua lại giữa các Button và em muốn khi nhấn phím Enter thì Button nào hiện đang được chọn sẽ thực thi Button đó. (Em có 1 số Button nằm trong GroupBox ạ.)

Em đang sử dụng code như sau nhưng nó khá thủ công nên hy vọng có ai giúp em code tốt hơn ạ
Em cảm ơn.

Mã:
Trong Sự kiện KeyDown :
If e.Keycode = Keys.Enter Then
Select Case True
    Case Button1.Focused
        Call Button1.Performclick()
    Case button2.Focused
        Call Button2.Performclick()
    .
    .
    .
    Case button17.Focused
        Call Button17.Performclick()
End select
End If
Bạn mô tả rõ mục đích bằng hình ảnh hoặc video không ai tưởng tượng hoặc đoán mò để giải quyết vấn đề của bạn !
 
...
Em đang sử dụng code như sau nhưng nó khá thủ công nên hy vọng có ai giúp em code tốt hơn ạ
Em cảm ơn.
...
Code làm việc được rồi thì cứ để yên nó, thủ công chỗ nào? hiểu chết liền.

For Each ctrl In Me.Controls
If ctrl.Name Like "Button*" Then
If ctrl.Focused Then
ctrl.PerformClick
Exit For
End If
End If
Next ctrl
 
Code làm việc được rồi thì cứ để yên nó, thủ công chỗ nào? hiểu chết liền.

For Each ctrl In Me.Controls
If ctrl.Name Like "Button*" Then
If ctrl.Focused Then
ctrl.PerformClick
Exit For
End If
End If
Next ctrl
Thủ công ở đây là em phải nhập tay cho mỗi Button ạ. (Button em đặt theo chú thích của mình)
Em muốn rút ngắn code để sau này gặp trường hợp nhiều Button hơn thì không phải nhập tay từng cái ạ.
Em cảm ơn.
 
Thủ công ở đây là em phải nhập tay cho mỗi Button ạ. (Button em đặt theo chú thích của mình)
Em muốn rút ngắn code để sau này gặp trường hợp nhiều Button hơn thì không phải nhập tay từng cái ạ.
Em cảm ơn.
Không hiểu
Code của bác VetMini đã rút gọn rồi đó
 
Lần chỉnh sửa cuối:
Dậy bạn gì thắc mắc không
Nay em mới có thời gian kiểm tra lại. Em đã thử code của bác VetMini nhưng chỉ sử dụng cho những Button bên ngoài không nằm trong GroupBox. Nếu nó nằm trong GroupBox thì phải tạo vòng lặp 2 lần và thêm 1 vòng lặp cho các Button bên ngoài.
Không biết bác có cách nào khác nữa không ạ.
Mã:
For Each ctrl In Me.GroupBox1.Controls
                If ctrl.Name Like "Button*" Then
                    If ctrl.Focused Then
                        ctrl.PerformClick
                        Exit For
                    End If
                End If
            Next ctrl
For Each ctrl In Me.GroupBox2.Controls
                If ctrl.Name Like "Button*" Then
                    If ctrl.Focused Then
                        ctrl.PerformClick
                        Exit For
                    End If
                End If
            Next ctrl           
For Each ctrl In Me.Controls
                If ctrl.Name Like "Button*" Then
                    If ctrl.Focused Then
                        ctrl.PerformClick
                        Exit For
                    End If
                End If
            Next ctrl
1590556528879.png
 
Xin hỏi ngoài lề, là mục đích của chủ thớt làm cái này cho công việc gì nhỉ?
 
Nay em mới có thời gian kiểm tra lại. Em đã thử code của bác VetMini nhưng chỉ sử dụng cho những Button bên ngoài không nằm trong GroupBox. Nếu nó nằm trong GroupBox thì phải tạo vòng lặp 2 lần và thêm 1 vòng lặp cho các Button bên ngoài.
Không biết bác có cách nào khác nữa không ạ.
Mã:
For Each ctrl In Me.GroupBox1.Controls
                If ctrl.Name Like "Button*" Then
                    If ctrl.Focused Then
                        ctrl.PerformClick
                        Exit For
                    End If
                End If
            Next ctrl
For Each ctrl In Me.GroupBox2.Controls
                If ctrl.Name Like "Button*" Then
                    If ctrl.Focused Then
                        ctrl.PerformClick
                        Exit For
                    End If
                End If
            Next ctrl          
For Each ctrl In Me.Controls
                If ctrl.Name Like "Button*" Then
                    If ctrl.Focused Then
                        ctrl.PerformClick
                        Exit For
                    End If
                End If
            Next ctrl
View attachment 238124
Thật sự không hiểu bạn muốn gì hình thì gồm hai groupbox code thì có thêm vòng lặp cho các button trên userform ! Tại sao ko dùng một groupbox ?
 
Sao bạn không thiết lập thuộc tính Default=True cho Command Button properties.
Bác nói cụ thể được không ạ. Trong thuộc tính properties e, chỉ thấy có thuộc tính DialogResult để bắt kết quả yes no thôi ạ.

Chọn những cái tích như checkbox và button thì dùng Tab và Space chứ.
Vâng ạ. Tại công ty em có 1 số người không dùng space nên em thêm Enter cho mấy chú đó luôn ạ (hơi lớn tuổi xíu ạ). Bác cũng đừng hỏi em tại sao mà không bảo mấy chú đó sài space. Vì những phần mềm chuyên dụng cơ khí như Autocad mà mấy chú đó chỉ sài Enter thôi, em cũng không hỏi thêm nhiều về việc tại sao chỉ sài Enter mà không dùng space.

Thật sự không hiểu bạn muốn gì hình thì gồm hai groupbox code thì có thêm vòng lặp cho các button trên userform ! Tại sao ko dùng một groupbox ?
Groupbox để em nhóm 1 tính năng lại. Nếu dùng chung 1 Groupbox thì sao phân biệt được những Button nào dùng để ẩn và để hiện ạ.

Khi không dùng code thì thao tác có được không?
Không có code thì không dùng Enter được bác ạ.
 
Bác nói cụ thể được không ạ. Trong thuộc tính properties e, chỉ thấy có thuộc tính DialogResult để bắt kết quả yes no thôi ạ.


Vâng ạ. Tại công ty em có 1 số người không dùng space nên em thêm Enter cho họ ạ.


Groupbox để em nhóm 1 tính năng lại. Nếu dùng chung 1 Groupbox thì sao phân biệt được những Button nào dùng để ẩn và để hiện ạ.


Không có code thì không dùng Enter được bác ạ.
Hiiii trên form bạn có 2 groupbox và các button bên ngoài groupbox ?
 
Hiiii trên form bạn có 2 groupbox và các button bên ngoài groupbox ?
Vâng. Em chỉ mới gửi hình 2 Groupbox nhưng vẫn còn các Button bên ngoài. Vẫn còn những Groupbox khác nhưng nếu giải quyết được 2 Groupbox trên thì em nghĩ có thể giải quyết những Groupbox khác. (Lúc đầu có 17 Button nhưng về sau em thêm 1 số tính năng mới nữa.)
 
Vâng. Em chỉ mới gửi hình 2 Groupbox nhưng vẫn còn các Button bên ngoài. Vẫn còn những Groupbox khác nhưng nếu giải quyết được 2 Groupbox trên thì em nghĩ có thể giải quyết những Groupbox khác. (Lúc đầu có 17 Button nhưng về sau em thêm 1 số tính năng mới nữa.)
Mình thấy Code thực thi cho các button ko có gì khác nhưng thiết như dậy thật khó hiểu.
Nếu dc bạn cho video nói rõ Ý tưởng thế nào nhé
 
Web KT
Back
Top Bottom