การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์หรือที่เรียกว่าการเขียนโปรแกรมตามเหตุการณ์หรือการเขียนโปรแกรมเชิงเหตุการณ์เป็นกระบวนทัศน์การเขียนโปรแกรมซึ่งมีโครงสร้างโค้ดในการจัดการกับเหตุการณ์ที่ถูกทริกเกอร์ เหตุการณ์เหล่านี้สามารถถูกทริกเกอร์โดยการกระทำของผู้ใช้ การเปลี่ยนแปลงในกระบวนการ หรือขึ้นอยู่กับการหมดเวลาหรืออินพุตแบบอะซิงโครนัสประเภทอื่น ๆ
การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ช่วยให้สามารถแยกโค้ดซึ่งทำให้การดีบักและการทดสอบค่อนข้างง่าย นอกจากนี้ยังช่วยให้โค้ดสามารถนำกลับมาใช้ใหม่ได้ ซึ่งทำให้กระบวนการพัฒนาเร็วขึ้นมาก
ในการเขียนโปรแกรมขั้นตอนแบบดั้งเดิม ฟังก์ชันต่างๆ จะถูกเรียกใช้ในลำดับใดๆ ขึ้นอยู่กับลอจิกของโปรแกรม ด้วยการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ โค้ดจะถูกจัดโครงสร้างตามเหตุการณ์ที่ถูกทริกเกอร์ เหตุการณ์เหล่านี้ถูกจัดอยู่ในคิวและถูกไล่ออกทีละเหตุการณ์ หากเหตุการณ์มีตัวจัดการหลายตัวแนบอยู่ เหตุการณ์ทั้งหมดจะถูกเรียกตามลำดับความสำคัญ
หากต้องการใช้การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ โค้ดและเหตุการณ์จะต้องถูกแยกออกจากกัน ซึ่งหมายความว่าโค้ดควรเข้าไปในโมดูลและเหตุการณ์ควรเข้าไปในคิวซึ่งมีการจัดการและเริ่มทำงาน
มีหลายภาษาที่รองรับการเขียนโปรแกรมตามเหตุการณ์ เช่น Python, Java, JavaScript, C# และ Visual Basic
การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ถูกนำมาใช้กันอย่างแพร่หลายในการเขียนโปรแกรมคอมพิวเตอร์ รวมถึงการพัฒนาเว็บ การพัฒนาเดสก์ท็อป การพัฒนา GUI และการพัฒนามือถือ นอกจากนี้ยังใช้ในฐานข้อมูล แอปพลิเคชันประมวลผลคำ และวิดีโอเกม
การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์สามารถนำมาเปรียบเทียบกับการเขียนโปรแกรมเชิงคาดการณ์ ซึ่งดำเนินการชุดคำสั่งที่กำหนดไว้ล่วงหน้าก่อนที่ผู้ใช้จะป้อนข้อมูล ในทางตรงกันข้าม การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์จะเป็นแบบโต้ตอบ เนื่องจากจะรอการโต้ตอบของผู้ใช้ในรูปแบบของเหตุการณ์ก่อนที่โปรแกรมจะสามารถตอบสนองได้