Первый вариант не выдает ошибок, но всё же программа работает неверно. По идее при выборе предмета название предмета высвечивается в textbox3 и кнопка выкинуть должна считывать название и менять его на пусто и возвращать в массив, но этого не происходит
Ну сделайте массив объектов.
И функцию вывода текста на кнопки.
Щелкнув на нужную кнопку сохраняйте текущий индекс кнопки. Если нажали выбросить то элемент в этом массиве сделайте пустым и вызовите обновление кнопок.