void Button_DragDrop(object sender, DragEventArgs e)
        {
            var dropDiff = e.GetDropObject <PETrackDifficulty>();

            if (dropDiff != null)
            {
                var btn = DifficultyButtons.SingleOrDefault(x => x.Button == sender);

                if ((dropDiff.MidiTrack != btn.MidiTrack) || (dropDiff.MidiTrack == btn.MidiTrack && dropDiff.Difficulty != btn.Difficulty))
                {
                    DifficultyItemDropped.IfObjectNotNull(d => d(this, DifficultyButtons.Single(x => x.Button == sender).Difficulty, e));
                }
            }
        }
        void Button_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.None;
            var dropDiff = e.GetDropObject <PETrackDifficulty>();

            if (dropDiff != null)
            {
                var btn = DifficultyButtons.SingleOrDefault(x => x.Button == sender);

                if ((dropDiff.MidiTrack != btn.MidiTrack) || (dropDiff.MidiTrack == btn.MidiTrack && dropDiff.Difficulty != btn.Difficulty))
                {
                    e.Effect = DragDropEffects.All;
                }
            }
        }