Создайте логический флаг в форме. Присоедините обработчик событий к событию нажатия кнопок и установите для этого флага значение true в обработчике событий.
Проверьте наличие флага в цикле и, если оно истинно, вызовите "break". (Лучше было бы использовать цикл while вместо цикла for с проверкой флага в условии while)
Очевидно, что цикл for должен быть в какой-то форме фонового потока, иначе графический интерфейс не будет отзывчивым. Если вы не знаете, как это сделать, проверьте ThreadPool.QueueUserWorkItem или BackgroundWorker . Если вы используете BackgroundWorker, вы можете использовать встроенный метод CancelAsync () вместо кодирования собственного флага отмены.
[Редактировать: Как указано другими (ниже) и обсуждено более подробно здесь и здесь ; вам нужно либо заблокировать доступ к bool, либо пометить его как изменчивый]
[Не забудьте установить правильное состояние флага, прежде чем начинать цикл.]