มุ่งเน้นไปที่ "InputField" เมื่อสร้างหรือไม่ [ซ้ำ]

Aug 17 2020

สมมติว่าเราสร้างช่องป้อนข้อมูลเป็น

InputField[]

หลังจากกดปุ่ม Enter ช่องป้อนข้อมูลจะปรากฏในพื้นที่เอาต์พุตด้านล่าง แต่โฟกัสในโน้ตบุ๊กจะข้ามไปยังบรรทัดถัดไปซึ่งสามารถสร้างเซลล์ใหม่ได้ มีวิธีในการสร้างInputFieldและเลือกโฟกัสทันทีเมื่อสร้าง (โดยไม่ต้องคลิกที่มัน) เพื่อให้สามารถพิมพ์ข้อความลงในได้ทันทีInputField?

คำตอบ

4 kglr Aug 18 2020 at 05:22

คุณสามารถกำหนดรหัสกล่องให้กับช่องป้อนข้อมูลโดยใช้BoxID -> "id"และใช้ฟังก์ชันFrontEnd`MoveCursorToInputFieldเพื่อย้ายโฟกัสไปยังช่องป้อนข้อมูลที่ต้องการ:

InputField[Null, BoxID -> "id"]
FrontEnd`MoveCursorToInputField[EvaluationNotebook[], "id"];

ตัวอย่างอื่น:

Grid[{{InputField[Dynamic[x]], InputField[Dynamic[y], BoxID -> "ify"],
    InputField[Dynamic[z]]}}]
FrontEnd`MoveCursorToInputField[EvaluationNotebook[], "ify"]; 

หรืออีกวิธีหนึ่งคือเน้นเนื้อหาของเซลล์และใช้Ctrl+ Shift+ Enterเพื่อประเมินในสถานที่: