private void fire_SelectedShapeChanged(ChangeReson reason = ChangeReson.Unknown)
 {
     // sayLastSelectedShape(false);
     if (SelectedShapeChanged != null)
     {
         Task t = new Task(new Action(() => { try { SelectedShapeChanged.Invoke(this, new SelectedShapeChangedEventArgs(reason)); } catch { } }));
         Thread.Sleep(10);
         t.Start();
     }
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SelectedShapeChangedEventArgs"/> class.
 /// </summary>
 /// <param name="_reason">The reason for throwing this event.</param>
 public SelectedShapeChangedEventArgs(ChangeReson _reason = ChangeReson.Unknown)
 {
     Reason = _reason;
 }