A programación dirixida por eventos é un paradigma de programación no que tanto a estrutura como a execución dos programas van determinados polos sucesos que ocorran no sistema ou que eles mesmos provoquen.
Para entender a programación dirixida por eventos, podemos opola ao que non é: mentres na programación secuencial (ou estruturada) é o programador o que define cal vai ser o fluxo do programa, na programación dirixida por eventos será o propio usuario—ou o que sexa que estea accionando o programa—o que dirixa o fluxo do programa. Aínda que na programación secuencial pode haber intervención dun axente externo ao programa, estas intervencións ocorrerán cando o programador determinouno, e non en calquera momento como pode ser no caso da programación dirixida por eventos.
O creador dun programa dirixido por eventos debe definir os eventos que manexará o seu programa e as accións que se realizarán ao producirse cada un deles, o que se coñece como o manejador de evento. Os eventos soportados estarán determinados polo linguaxe de programación utilizado, polo sistema operativo e ata por eventos creados polo mesmo programador.
Na programación dirixida por eventos, ao comezar a execución do programa levarán a cabo as inicializacións e demais código inicial e a continuación o programa quedará bloqueado ata que se produza algún evento. Cando algún dos eventos esperados polo programa teña lugar, o programa pasará a executar o código do correspondente manexador de evento. Por exemplo, se o evento consiste en que o usuario fixo clic no botón de play dun reprodutor de películas, executarase o código do manexador de evento, que será o que faga que a película móstrese por pantalla.
Un exemplo claro témolo nos sistemas de programación Lexico e Visual Basic, nos que a cada elemento do programa (obxectos, controis etcétera) asígnanselle unha serie de eventos que xerará devandito elemento, como a pulsación dun botón do rato sobre el ou o redebuxado do control.
A programación dirixida por eventos é a base do que chamamos interface de usuario, aínda que pode empregarse para desenvolver interfaces entre compoñentes de Software como módulos do núcleo tamén.