Windows Forms - Enter keypress เปิดใช้งานปุ่ม submit?


97

ฉันจะบันทึกการกดปุ่ม Enter ที่ใดก็ได้ในแบบฟอร์มของฉันและบังคับให้กดปุ่มส่งเหตุการณ์ได้อย่างไร


8
แล้วทำไมคุณไม่กดคุณสมบัติ AcceptButton ในคำตอบของ Matt Hamilton?
Mukus

ใช้ 'this.Form.DefaultButton = MyButton.UniqueID;'
Bino Kochumol Varghese

คำตอบ:


197

หากคุณตั้งค่าคุณสมบัติของคุณFormเป็นAcceptButtonหนึ่งButtonในคุณสมบัติFormนั้นคุณจะได้รับพฤติกรรมนั้นโดยค่าเริ่มต้น

มิฉะนั้นให้ตั้งค่าKeyPreviewคุณสมบัติเป็นtrueในFormและจัดการกับKeyDownเหตุการณ์นั้น คุณสามารถตรวจสอบEnterคีย์และดำเนินการที่จำเป็นได้


8
และอย่าลืม CancelButton สำหรับจัดการแป้น Escape
WholeLifeLearner

1
สุดยอด! ฉันต้องรู้จัก Framewrok ของฉันให้ดีกว่านี้;)
แจ็ค


22

คุณสามารถกำหนดปุ่มเป็น "AcceptButton" ในคุณสมบัติของแบบฟอร์มและจะจับการกด "Enter" ใด ๆ บนแบบฟอร์มและกำหนดเส้นทางไปยังตัวควบคุมนั้น

ดูวิธีการ: กำหนดปุ่มฟอร์ม Windows เป็นปุ่มยอมรับโดยใช้ตัวออกแบบและสังเกตข้อยกเว้นบางประการที่ระบุไว้ (กล่องข้อความหลายบรรทัด ฯลฯ )


ขอขอบคุณสำหรับลิงก์ข้อยกเว้นเหล่านั้นที่ช่วยฉันไว้
ubiquibacon

ดูเหมือนว่าลิงก์นี้จะเสียชีวิตแล้ว
JAD

11

ตามที่ระบุไว้ก่อนหน้านี้ให้ตั้งค่าคุณสมบัติAcceptButtonของฟอร์มของคุณเป็นปุ่มใดปุ่มหนึ่งและตั้งค่าคุณสมบัติDialogResultสำหรับปุ่มนั้นเป็นDialogResult OK เพื่อให้ผู้โทรทราบว่ากล่องโต้ตอบได้รับการยอมรับหรือถูกปิด


7

คุณสามารถสมัครเข้าร่วมKeyUpกิจกรรมของTextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}

1
สิ่งที่ฉันกำลังมองหา ฉันตั้งค่าปุ่มโต้ตอบผลลัพธ์เป็นตกลงและไม่ต้องการเขียนโค้ดที่ไม่จำเป็นเพื่อให้ ENTER ทำงาน!
Kristjan1215



0

ตั้งค่าแอตทริบิวต์ KeyPreview ในแบบฟอร์มของคุณเป็น True จากนั้นใช้เหตุการณ์ KeyPress ที่ระดับฟอร์มของคุณเพื่อตรวจหาคีย์ Enter ในการตรวจจับให้โทรรหัสใด ๆ ก็ตามที่คุณมีสำหรับปุ่ม "ส่ง"


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.