เรารู้ว่าในบางโปรแกรม มีทางลัดอยู่บ้าง (เช่น: ปุ่ม Shift เพื่อย่อเล็กสุด, ปุ่ม ESC เพื่อออก, Ctrl+S เพื่อบันทึก, Alt+x เพื่อออก ฯลฯ) ในอดีตเคยมีการแนะนำว่าสามารถทำได้โดยใช้ Win32 API แต่จริงๆ แล้ว VB เองได้มอบฟังก์ชันนี้ให้กับเราแล้ว
มาสร้างแบบฟอร์มใหม่ Form1 กัน สำหรับการทำงานของคีย์บอร์ด เราจะเห็นเหตุการณ์สามเหตุการณ์: KeyPress(), KeyDown และ KeyUp ฉันจะแนะนำเหตุการณ์เหล่านี้ตามลำดับด้านล่าง:
เหตุการณ์ KeyPress() เกิดขึ้นเมื่อผู้ใช้กดและปล่อยคีย์ ANSI (ANSI คืออักขระ ASCII ที่มองเห็นได้ 1-127)
ไวยากรณ์
คำอธิบายบางส่วน
object คือนิพจน์ของวัตถุที่มีค่า "ใช้กับ" วัตถุในรายการ
ดัชนีเป็นจำนวนเต็มที่ระบุตัวควบคุมในอาเรย์ควบคุมโดยไม่ซ้ำกัน (ใช้ได้เฉพาะกับอาเรย์ควบคุมเท่านั้น)
keyascii เป็นจำนวนเต็มที่ส่งคืนรหัสคีย์ ANSI ที่เป็นตัวเลขมาตรฐาน Keyascii ส่งผ่านวัตถุโดยการอ้างอิง ทำให้สามารถเปลี่ยนแปลงวัตถุนั้นได้
ส่งตัวละครอื่น การเปลี่ยน keyascii เป็น 0 จะยกเลิกการกดแป้นพิมพ์เพื่อให้วัตถุไม่ได้รับอักขระ
แสดงให้เห็น
วัตถุที่มีโฟกัสจะได้รับเหตุการณ์นี้ แบบฟอร์มสามารถรับเหตุการณ์นี้ได้ก็ต่อเมื่อคุณสมบัติ KeyPreview ถูกตั้งค่าเป็น True เหตุการณ์ KeyPress สามารถอ้างอิงอักขระบนแป้นพิมพ์ที่พิมพ์ได้ อักขระจากตัวอักษรมาตรฐาน หรืออักขระพิเศษตัวใดตัวหนึ่งร่วมกับแป้น CTRL และแป้น ENTER หรือ BACKSPACE ขั้นตอนเหตุการณ์ KeyPress() มีประโยชน์เมื่อสกัดกั้นการกดแป้นที่ป้อนในกล่องข้อความหรือตัวควบคุม ComboBox สามารถทดสอบความถูกต้องของการกดแป้นพิมพ์หรือรูปแบบอักขระได้ทันทีที่ป้อน การเปลี่ยนค่าของพารามิเตอร์ keyascii จะเปลี่ยนอักขระที่แสดง
คุณสามารถใช้นิพจน์ต่อไปนี้เพื่อแปลงพารามิเตอร์ keyascii เป็นอักขระ:
แสดงให้เห็น
สำหรับทั้งสองเหตุการณ์ วัตถุที่โฟกัสจะได้รับการกดแป้นพิมพ์ทั้งหมด แบบฟอร์มสามารถรับโฟกัสได้ก็ต่อเมื่อไม่มีการควบคุมที่มองเห็นได้และถูกต้อง แม้ว่าเหตุการณ์ KeyDown() และ KeyUp() สามารถนำไปใช้กับคีย์ส่วนใหญ่ได้ แต่โดยทั่วไปมักนำไปใช้กับ: ปุ่มอักขระเพิ่มเติม เช่น ปุ่มฟังก์ชัน ปุ่มนำทาง ปุ่มปรับค่าแป้นพิมพ์ และการกดแป้นพิมพ์ร่วมกัน การแยกคีย์แพดตัวเลขจากคีย์ตัวเลขปกติ เมื่อคุณต้องการตอบสนองต่อทั้งการกดและปล่อยปุ่ม คุณสามารถใช้ขั้นตอนเหตุการณ์ KeyDown และ KeyUp ได้
เหตุการณ์ KeyDown และ KeyUp ไม่สามารถอ้างอิงได้ในสถานการณ์ต่อไปนี้: แบบฟอร์มมีตัวควบคุม CommandButton และแป้น ENTER เมื่อคุณสมบัติเริ่มต้นถูกตั้งค่าเป็น True แบบฟอร์มมีตัวควบคุม CommandButton และเมื่อคุณสมบัติ Cancel ถูกตั้งค่าเป็น True คีย์ ESC, คีย์ TAB, KeyDown และ KeyUp จะใช้พารามิเตอร์สองตัวเพื่อตีความรูปแบบตัวพิมพ์ใหญ่และตัวพิมพ์เล็กของอักขระแต่ละตัว: รหัสคีย์ - แสดงคีย์กายภาพ (แทนที่ A และคืนค่าเป็นคีย์เดียวกัน) และ shift-แสดงสถานะของคีย์ shift+key และส่งกลับค่าใดค่าหนึ่งของ A หรือ a
หากคุณต้องการทดสอบพารามิเตอร์ shift คุณสามารถใช้ค่าคงที่ shift ที่กำหนดไว้ในพารามิเตอร์ได้ ค่าคงที่นี้มีค่าต่อไปนี้:
คำอธิบายค่าคงที่
vbShiftMask 1 บิตคีย์ HIFT
โล่.
ปุ่ม CTRL VbCtrlMask 2
หน้ากากบิต
บิตคีย์ VbAltMask 4 ALT
โล่.
ค่าคงที่นี้ทำหน้าที่เป็นมาสก์บิต ซึ่งสามารถใช้เพื่อทดสอบคีย์ผสมใดก็ได้
หมายเหตุ: หากคุณสมบัติ KeyPreview ถูกตั้งค่าเป็น True แบบฟอร์มจะได้รับเหตุการณ์นี้ก่อนตัวควบคุมบนแบบฟอร์ม คุณสามารถใช้คุณสมบัติ KeyPreview เพื่อสร้างรูทีนการจัดการคีย์บอร์ดส่วนกลางได้
ด้วยความรู้ข้างต้น เราสามารถสร้างโปรแกรมที่สมบูรณ์แบบด้วยปุ่มลัดได้ ตัวอย่างเช่น ในโปรแกรมเราจำเป็นต้องใช้ Ctrl+S เพื่อบันทึก, Shift เพื่อย่อเล็กสุด, Alt+X และ ESC เพื่อออก:
ขั้นแรกให้เริ่ม VB และเลือกไฟล์ EXE ใหม่ ดึงกล่องข้อความบนแบบฟอร์ม Form1 และตั้งค่าคุณสมบัติ KeyPreview ของ Form1 เป็น True ดับเบิลคลิก Form1 เลือกเหตุการณ์ KeyPress ของแบบฟอร์ม และป้อนรหัสต่อไปนี้: