private void Form1_MouseDown(object sender, MouseEventArgs e) { try { switch (e.Button) { case MouseButtons.Left: #region f_addnewAffect - commit if (f_addnewAffect) { foreach (var c in m_states) { if (c.HitTest(e.Location)) { m_affects.Add(new SimsAffect(_selectedState, c, +1.0f)); this.SetSelectedObject(null, false); return; } } return; } //# 若有選取 SimsAffect 則移動 amid else if (_selectedAffect != null) { _selectedAffect.SetAmidPoint(e.Location); this.SetSelectedObject(null, false); return; } #endregion #region # 選取 SimsState foreach (var c in m_states) { if (c.HistTestOutline(e.Location)) { this.StatusLabel1.Text += " hit outline"; return; } else if (c.HitTest(e.Location)) { this.StatusLabel1.Text += " hit inside"; this.SetSelectedObject(c); return; } } #endregion // cancel all action SetSelectedObject(null, false); break; case MouseButtons.Right: #region f_addnewAffect - cancel if (f_addnewAffect) { SetSelectedObject(null, false); return; } // ------------------------------ #endregion #region # 選取 SimsAffect foreach (var c in m_affects) { if (c.HitTest(e.Location)) { this.SetSelectedObject(c); return; } } #endregion #region # 選取 SimsState 以新增 SimsAffect foreach (var c in m_states) { if (c.HitTest(e.Location)) { this.SetSelectedObject(c, true, e.Location); return; } } #endregion // cancel all action SetSelectedObject(null, false); break; } } finally { this.Invalidate(); } }