• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Sự kiện KeyDown đối với phím mũi tên của CommandButton

Góc trao đổi, hỏi đáp của ngôn ngữ Visual Basic 6 và Visual Basic Script

Moderator: tungblt

User avatar
trungtrung
Thành viên tích cực
Thành viên tích cực
Posts: 171
Joined: Wed 17/09/2008 10:14 am
Been thanked: 1 time
Contact:

Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trungtrung » Fri 04/09/2009 4:09 pm

Code: Select all

  1. Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
  2. MsgBox KeyCode
  3. End Sub


Lệnh trên không thể thực hiện được với các phím mũi tên và phím Enter?
Khi nhấn phím mũi tên hoặc Enter thì không có MsgBox nào hiện lên cả, các phím khác thì vẫn bình thường? (Command1 đang nhận Focus)
Các anh giải thích hộ em với!
Thank nhiều :)


Hello!

boy1234
Guru
Guru
Posts: 448
Joined: Mon 13/10/2008 3:12 pm
Location: Dĩ An - Bình Dương
Been thanked: 32 times

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby boy1234 » Fri 04/09/2009 4:26 pm

Bạn giữ phím Shift rồi nhấn các phím nói thử coi.
Dạo này nghiện honda SS50

User avatar
trungtrung
Thành viên tích cực
Thành viên tích cực
Posts: 171
Joined: Wed 17/09/2008 10:14 am
Been thanked: 1 time
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trungtrung » Fri 04/09/2009 4:29 pm

Dùng phím Shift thì vừa đè xuống là MsgBox xuất hiện rồi, sao mà dùng chung được :D, với cả em muốn xài mỗi phím mũi tên thôi :D
Anh giúp em được chứ?
Hello!

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby vo_minhdat2007 » Fri 04/09/2009 4:56 pm

Chuyển qua cho Form (bật KeyPreview lên), phím nào cũng nhận tất >:)

User avatar
trungtrung
Thành viên tích cực
Thành viên tích cực
Posts: 171
Joined: Wed 17/09/2008 10:14 am
Been thanked: 1 time
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trungtrung » Sat 05/09/2009 12:06 pm

Nhưng mà mục đích của em không phải là để xem KeyCode, mà là để xem phím nào đang được nhấn (trong 4 phím mũi tên) khi 1 Command Button đang nhận Focus :D

Ban đầu tưởng dể, khi làm hóa ra lại khó, làm với 2 button thì càng khó nữa :|
Hello!

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby vo_minhdat2007 » Sat 05/09/2009 12:46 pm

Chi bằng cứ đăt như vậy, rồi đặt biến lưu control đang giữ focus!

User avatar
trungtrung
Thành viên tích cực
Thành viên tích cực
Posts: 171
Joined: Wed 17/09/2008 10:14 am
Been thanked: 1 time
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trungtrung » Sat 05/09/2009 5:33 pm

vo_minhdat2007 wrote:Chi bằng cứ đăt như vậy, rồi đặt biến lưu control đang giữ focus!

Chả hiểu anh Đạt nói gì :D
Giải thích lại cho em với?
Đặt như vậy là như thế nào :D
Lưu Control đang giữ Focus, trong trường hợp có nhiều Command Button thì sao :-/ tất cả các Command Button đều Enable = True

Làm sao giờ hả các anh? =((
Hello!

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby vo_minhdat2007 » Sat 05/09/2009 7:06 pm

Giả sử có but1 và but2.

  • Đặt 1 biến Variant (hay String thì tuỳ) để lưu object đang giữ focus (nếu là biến String thì lưu Name của nó). Trong 2 sự kiện GotFocus của 2 button thì đặt lại biến này.
  • Còn lại để sự kiện KeyDown của Form giải quyết, dựa vào biến kia để xem cái gì đang focus.

User avatar
trungtrung
Thành viên tích cực
Thành viên tích cực
Posts: 171
Joined: Wed 17/09/2008 10:14 am
Been thanked: 1 time
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trungtrung » Sat 05/09/2009 9:12 pm

Ban đầu em cũng nghĩ vậy. Nhưng khi làm rồi thì thấy: Vừa nhấn phím mũi tên thì Focus chuyển ngay sang Button khác, sự kiện GotFocus của but1 & but2 xảy ra liên tục ~> lộn xộn hết cả...

Anh thử làm cái Demo em học hỏi thử :D
Hello!

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby vo_minhdat2007 » Sun 06/09/2009 6:47 am

Thêm 1 cái OldFocus và NewFocus luôn :D

User avatar
andylam1992
Thành viên danh dự
Thành viên danh dự
Posts: 380
Joined: Mon 06/04/2009 12:57 pm
Location: TP.HCM Q5
Has thanked: 2 times
Been thanked: 4 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby andylam1992 » Sun 06/09/2009 7:56 am

Dùng API là xong thôi!

不相信未作牺牲竟先可拥有
只相信是靠双手找到我欲求
Cần - Kiệm- Liêm(liêm kiết) - Nghĩa - Chí - Tín

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby vo_minhdat2007 » Sun 06/09/2009 8:35 am

Dùng API cũng phải lưu focus thôi! Không cần đao to búa lớn thế :))

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby truongphu » Sun 06/09/2009 9:13 am

Thiết kế Command1_KeyDown(KeyCode As Integer, Shift As Integer) xem các phím sau đây là điều khiển chung cho Form và Command1_KeyDown không nhận biết:
Tab
Enter
Các phím mũi tên
Muốn tìm keycode của Enter và Các phím mũi tên, ta nhờ thiết kế Text1_KeyDown(KeyCode As Integer, Shift As Integer)

Riêng phím Tab là phím điều khiển chung cho các control có tương tác nên khó nhận biết qua sự kiện keydown của các control
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
trungtrung
Thành viên tích cực
Thành viên tích cực
Posts: 171
Joined: Wed 17/09/2008 10:14 am
Been thanked: 1 time
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trungtrung » Sun 06/09/2009 9:00 pm

Các anh các bác đều hiểu sai ý của em cả rồi :D

Em muốn Command Button nhận được sự kiện KeyDown với tham số KeyCode = 38 (phím mũi tên hướng lên trên)
Chứ không phải mục đích là lấy KeyCode của 4 phím mũi tên :D

Điều kiện là form có nhiều hơn 1 command button và các command button đều có enable = true.

Các anh chị giúp em với :)

@truongphu: Vậy nghĩa là Command Button không nhận được sự kiện KeyDown đối với phím mũi tên sao ? :(
Sao trùng hợp vậy nhỉ :((
Hello!

User avatar
xuanquy_th
Guru
Guru
Posts: 803
Joined: Tue 05/08/2008 9:15 pm
Location: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby xuanquy_th » Mon 07/09/2009 9:22 am

Dùng API nhận biết phím, hủy phím, gửi hành động tương ứng theo phím
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

trankimcuongpkkq
Thành viên chính thức
Thành viên chính thức
Posts: 29
Joined: Wed 05/12/2012 8:20 pm
Has thanked: 8 times

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trankimcuongpkkq » Wed 17/06/2015 9:03 am

Tiện đây xin hỏi các tiền bối luôn là em có 1 textbox trên form với thuộc tính text=0, em muốn khi nhấn phím mũi tên lên thì thuộc tính text của textbox đó tăng thêm 1, ngược lại khi nhấn mũi tên xuống thì giảm đi 1. Em thử mãi mà không được. Bác nào biết xin chỉ giúp, xin đa tạ rất nhiều!(Em làm bằng vb.net)

User avatar
xuanha
Guru
Guru
Posts: 1230
Joined: Thu 19/08/2010 4:25 pm
Location: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 times
Been thanked: 380 times
Contact:

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby xuanha » Fri 19/06/2015 3:04 pm

trankimcuongpkkq wrote:Tiện đây xin hỏi các tiền bối luôn là em có 1 textbox trên form với thuộc tính text=0, em muốn khi nhấn phím mũi tên lên thì thuộc tính text của textbox đó tăng thêm 1, ngược lại khi nhấn mũi tên xuống thì giảm đi 1. Em thử mãi mà không được. Bác nào biết xin chỉ giúp, xin đa tạ rất nhiều!(Em làm bằng vb.net)

  1.     Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
  2.         If e.KeyCode.ToString = "Up" Then TextBox1.Text = Val(TextBox1.Text) + 1
  3.         If e.KeyCode.ToString = "Down" Then TextBox1.Text = Val(TextBox1.Text) - 1
  4.     End Sub
Kiểm phiếu Đại hội Đoàn, Đại hội Đảng
http://caulacbovb.com/forum/viewtopic.php?t=23599

trankimcuongpkkq
Thành viên chính thức
Thành viên chính thức
Posts: 29
Joined: Wed 05/12/2012 8:20 pm
Has thanked: 8 times

Re: Sự kiện KeyDown đối với phím mũi tên của CommandButton

Postby trankimcuongpkkq » Sun 21/06/2015 9:28 am

Thanks bác xuanha rất nhiều. E làm thử theo cách của bác được rồi. Trước đây e lại thử bắt sự kiện nhấn phím của form chứ không phải trực tiếp từ Textbox như bác làm. Nhưng e đang băn khoăn là làm theo cách của bác thì mình phải click chuột vào textbox đó sau đó mới nhấn phím thì thực hiện được. E muốn không cần phải đặt con trỏ chuột vào đó mà vẫn thực hiện được thì có giải pháp gì không bác???


Return to “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Who is online

Users browsing this forum: lien88nd and 6 guests