(0) Можно вместе с кнопками программно добавлять соответствующие команды, привязывать их к кнопкам. Для всех команд устанавливать одно и то же "Действие" (обработчик). И уже в этом обработчике, который имеет параметр "Команда", анализировать имя команды (а по сути кнопки), его вызвавшем.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший