Исключение CallbackOnCollectedDelegate

Приложение - Windows Forms. Проблема такая. После нажатия на какие-нибудь элементы на форме(textbox, button, picturebox) появляется ошибка: Исключение

При чем не сразу, а после какого-то определенного количества нажатий. Вот код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MetroFramework.Components;
using MetroFramework.Forms;
using System.Reflection;
namespace Airlines
{
    public partial class MainForm : MetroForm
    {
        bool tick = false;
        int transfersCount = 1;
        public MainForm()
        {
            InitializeComponent();
            SetDoubleBuffered(this);
            SetDoubleBuffered(AirlinesLabel);
            FromTextBox.LostFocus += new EventHandler(FromTextBox_LostFocus);
            WhereTextBox.LostFocus += new EventHandler(WhereTextBox_LostFocus);
            FromTextBox1.LostFocus += new EventHandler(FromTextBox_LostFocus);
            WhereTextBox1.LostFocus += new EventHandler(WhereTextBox_LostFocus);
            FromTextBox2.LostFocus += new EventHandler(FromTextBox_LostFocus);
            WhereTextBox2.LostFocus += new EventHandler(WhereTextBox_LostFocus);
            ClassBox.SelectedItem = 0;
            ClassBox.Text = ClassBox.Items[0].ToString();
            LabelTimer.Start();
        }

        private void FromTextBox_MouseClick(object sender, MouseEventArgs e)
        {

            if ((sender as TextBox).Text == "Откуда?")
            {
                (sender as TextBox).Text = "";
                (sender as TextBox).TextAlign = HorizontalAlignment.Left;
            }
            (sender as TextBox).ForeColor = Color.Black;
        }

        private void WhereTextBox_MouseClick(object sender, MouseEventArgs e)
        {

            if ((sender as TextBox).Text == "Куда?")
            {
                (sender as TextBox).Text = "";
                (sender as TextBox).TextAlign = HorizontalAlignment.Left;
            }
            (sender as TextBox).ForeColor = Color.Black;
        }

        private void FromTextBox_LostFocus(object sender, System.EventArgs e)
        {
            if ((sender as TextBox).Text == String.Empty)
            {
                (sender as TextBox).Text = "Откуда?";
                (sender as TextBox).TextAlign = HorizontalAlignment.Center;
            }
                (sender as TextBox).ForeColor = Color.Silver;
            (sender as TextBox).Enabled = false;
            (sender as TextBox).Enabled = true;

        }

        private void WhereTextBox_LostFocus(object sender, System.EventArgs e)
        {
            if ((sender as TextBox).Text == String.Empty)
            {
                (sender as TextBox).Text = "Куда?";
                (sender as TextBox).TextAlign = HorizontalAlignment.Center;
            }
            (sender as TextBox).ForeColor = Color.Silver;
            (sender as TextBox).Enabled = false;
            (sender as TextBox).Enabled = true;
        }

        private void LabelTimer_Tick(object sender, EventArgs e)
        {
            if (tick)
            {
                AirlinesLabel.Text = "Airlines ";
                tick = false;
            }
            else
            {
                AirlinesLabel.Text = "Airlines.";
                tick = true;
            }
        }

        private void PlusButton_Click(object sender, EventArgs e)
        {
            if (transfersCount < 3)
            {
                if (transfersCount == 1)
                {
                    FromTextBox1.Visible = true;
                    WhereTextBox1.Visible = true;
                    FromDate1.Visible = true;
                    WhereDate1.Visible = true;
                    MinusButton.Visible = true;
                }
                if (transfersCount == 2)
                {
                    FromTextBox2.Visible = true;
                    WhereTextBox2.Visible = true;
                    FromDate2.Visible = true;
                    WhereDate2.Visible = true;
                    PlusButton.Visible = false;
                }
                transfersCount++;
            }
        }

        private void MinusButton_Click(object sender, EventArgs e)
        {
            if (transfersCount == 2)
            {
                FromTextBox1.Visible = false;
                WhereTextBox1.Visible = false;
                FromDate1.Visible = false;
                WhereDate1.Visible = false;
                MinusButton.Visible = false;
            }
            if (transfersCount == 3)
            {
                FromTextBox2.Visible = false;
                WhereTextBox2.Visible = false;
                FromDate2.Visible = false;
                WhereDate2.Visible = false;
                PlusButton.Visible = true;
            }
            transfersCount--;
        }

        private void SwitchTheme_Click(object sender, EventArgs e)
        {
            if (this.Theme == MetroFramework.MetroThemeStyle.Light)
            {
                this.Theme = MetroFramework.MetroThemeStyle.Dark;
                SwitchTheme.Image = Properties.Resources.sun as Bitmap;
                AirlinesLabel.ForeColor = Color.White;
            }
            else
            {
                this.Theme = MetroFramework.MetroThemeStyle.Light;
                SwitchTheme.Image = Properties.Resources.moon as Bitmap;
                AirlinesLabel.ForeColor = Color.Black;
            }
            this.Refresh();
        }

        #region .. Double Buffered function ..
        public static void SetDoubleBuffered(System.Windows.Forms.Control c)
        {
            if (System.Windows.Forms.SystemInformation.TerminalServerSession)
                return;
            System.Reflection.PropertyInfo aProp = typeof(System.Windows.Forms.Control).GetProperty("DoubleBuffered",
            System.Reflection.BindingFlags.NonPublic |
            System.Reflection.BindingFlags.Instance);
            aProp.SetValue(c, true, null);
        }

        #endregion


        #region .. code for Flucuring ..

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }

        #endregion
    }
}

Ответы (0 шт):