public void DeleteEvent(TimelineEvent x) { TimelineEvents.Remove(x); Invalidate(); }
protected override void OnMouseDown(MouseEventArgs e) { OnClick(e); _mouseDown = true; bool evtWasClicked = false; foreach ( TimelineEvent evt in TimelineEvents.Where(x => x.Time >= ViewableWindow.X && x.Time <= ViewableWindow.Y)) { Rectangle rect = HandleLocation(evt); if (rect.Contains(e.Location)) { if ( !((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) & System.Windows.Input.KeyStates.Down) > 0)) { SelectedEvents.Clear(); } evtWasClicked = true; if (((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftShift) & System.Windows.Input.KeyStates.Down) > 0) && !((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) & System.Windows.Input.KeyStates.Down) > 0) ) { var newEvent = new TimelineEvent(evt.Action, evt.Parameter, (long)PixelsToTime(e.X - dividerPoint.X)); TimelineEvents.Add(newEvent); SelectedEvents.Add(newEvent); } else if (((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftShift) & System.Windows.Input.KeyStates.Down) > 0) && ((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) & System.Windows.Input.KeyStates.Down) > 0) ) { var newEvents = new List <TimelineEvent>(); foreach (var selEvt in SelectedEvents) { newEvents.Add(new TimelineEvent(selEvt.Action, selEvt.Parameter, selEvt.Time)); } TimelineEvents.AddRange(newEvents); SelectedEvents.Clear(); SelectedEvents.AddRange(newEvents); } else { if (!SelectedEvents.Contains(evt)) { SelectedEvents.Add(evt); } } break; } } if (!evtWasClicked && !((System.Windows.Input.Keyboard.GetKeyStates(System.Windows.Input.Key.LeftCtrl) & System.Windows.Input.KeyStates.Down) > 0)) { SelectedEvents.Clear(); } _dragStart = e.Location; Invalidate(); }