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

Thanh Bình PV

Thành viên hoạt động
Tham gia ngày
30 Tháng mười 2019
Bài viết
131
Được thích
19
Điểm
170
Tuổi
24
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:

YêuCN

Thành viên hoạt động
Tham gia ngày
17 Tháng bảy 2019
Bài viết
134
Được thích
44
Điểm
170
Tuổi
29
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 !
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
10,384
Được thích
12,677
Điểm
1,560
...
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
 

Thanh Bình PV

Thành viên hoạt động
Tham gia ngày
30 Tháng mười 2019
Bài viết
131
Được thích
19
Điểm
170
Tuổi
24
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.
 

YêuCN

Thành viên hoạt động
Tham gia ngày
17 Tháng bảy 2019
Bài viết
134
Được thích
44
Điểm
170
Tuổi
29
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:

Thanh Bình PV

Thành viên hoạt động
Tham gia ngày
30 Tháng mười 2019
Bài viết
131
Được thích
19
Điểm
170
Tuổi
24
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
 

nguoiconxunui

Thành viên hoạt động
Tham gia ngày
31 Tháng tám 2006
Bài viết
188
Được thích
109
Điểm
680
Tuổi
38
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ỉ?
 

YêuCN

Thành viên hoạt động
Tham gia ngày
17 Tháng bảy 2019
Bài viết
134
Được thích
44
Điểm
170
Tuổi
29
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 ?
 

Thanh Bình PV

Thành viên hoạt động
Tham gia ngày
30 Tháng mười 2019
Bài viết
131
Được thích
19
Điểm
170
Tuổi
24
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 ạ.
 

YêuCN

Thành viên hoạt động
Tham gia ngày
17 Tháng bảy 2019
Bài viết
134
Được thích
44
Điểm
170
Tuổi
29
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 ?
 

Thanh Bình PV

Thành viên hoạt động
Tham gia ngày
30 Tháng mười 2019
Bài viết
131
Được thích
19
Điểm
170
Tuổi
24
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.)
 

YêuCN

Thành viên hoạt động
Tham gia ngày
17 Tháng bảy 2019
Bài viết
134
Được thích
44
Điểm
170
Tuổi
29
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é
 
Top Bottom