public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            button1.Click += new EventHandler(button1_Click<List<object>>);
            button2.Click += new EventHandler(button1_Click<object>);
        }
        private void button1_Click<T>(object sender, EventArgs e) where T: new()
        {
            var o = new T();
            MessageBox.Show(o.GetType().FullName);
        }
    }
Вот набросал похожее, ничего не исчезает, проект WinForms. Запускал, сохоанял, отчищал, пересобирал проект, все на месте. VS19. Установите последнюю студию или все обновы на нее.
ЗЫ: Конечно такое решение неплохо (Хотя на WPF гораздо элегантнее делается, без всякого ручного присвоения событий).
Вариант 2. если глюк останется
public partial class Form1 : Form
    {
        private Dictionary<string, Type> _forms = new Dictionary<string, Type>();
        public Form1()
        {
            InitializeComponent();
            _forms.Add("button1", typeof(Form));
            _forms.Add("button2", typeof(Form));
        }
        private void button1_Click(object sender, EventArgs e)
        {
            var name = (sender as Button).Name;
            Form form = (Form)Activator.CreateInstance(_forms[name]);
            form.Show();
        }
    }
}