Использовать код несколько раз

Есть несколько событий от мыши они применимы для listBox1, как все это оформить чтоб можно было применить тоже самое но для трех листбоксов?

 private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (redListbox == true)
            {
                try
                {
                    if (listBox1.SelectedIndex > -1)
                    {
                        moving = true;
                        index = listBox1.SelectedIndex;
                        label4.Visible = true;
                        label4.Location = new Point(listBox1.Location.X + e.X + offset, listBox1.Location.Y + e.Y + offset);
                        label4.Text = listBox1.SelectedItem.ToString();
                        sw.Start();
                    }
                }
                catch (Exception) { }
            }
        }

        private void listBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (redListbox == true)
            {
                try
                {
                    sw.Stop();
                    if (moving && index > -1 && sw.ElapsedMilliseconds > 100 && listBox1.SelectedIndex != index) //стопка условий чтоб наверняка лишнее не подвинуть
                    {
                        string temp = listBox1.Items[index].ToString();
                        listBox1.Items.RemoveAt(index);
                        if (listBox1.SelectedIndex < index)
                        {
                            listBox1.Items.Insert(listBox1.SelectedIndex, temp);
                            listBox1.SelectedIndex = listBox1.SelectedIndex - 1;
                        }
                        else
                        {
                            listBox1.Items.Insert(listBox1.SelectedIndex + 1, temp);
                            listBox1.SelectedIndex = listBox1.SelectedIndex + 1;

                        }
                        //обнуляем все
                        index = -1;
                        moving = false;
                        label4.Visible = false;
                    }
                    sw.Reset();
                }
                catch (Exception) { }
            }
        }

        private void listBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (redListbox == true)
            {
                if (label4.Visible == true)
                    label4.Location = new Point(listBox1.Location.X + e.X + offset, listBox1.Location.Y + e.Y + offset);
            }
        }

        private void listBox1_MouseLeave(object sender, EventArgs e)
        {
            if (redListbox == true)
            {
                label4.Visible = false;
            }
        }

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

Автор решения: aepot

Как-то так

private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
    ListBox currentListBox = (ListBox)sender;
    // currentListBox - тот самый ListBox, в котором была нажата мышь

    //... ваш код
}

Всё, теперь просто назначаете MouseDown события всех нужных листбоксов на этот обработчик, и готово. С остальными событиями то же самое.

→ Ссылка