private void MapControl_MouseUpEvent(object sender, AxManifold.Interop.IComponentControlEvents_MouseUpEvent e)
        {
            try
            {
                bool bPrepareEdit = false;

                if (this._MouseIsClickedDown == true &&
                  (Utility.isModeTypeEditEnabled(EditModeOperation) == true))
                {
                    //Need to set this here because it gets updated in the 'prepareEditObject()' methods
                    //and the GEOMChanged Event needs the original value before it was Edited.
                    //string sSelectedManifoldObjectOriginalGEOM = this._SelectedManifoldObjectOriginalGEOM;

                    switch (EditModeOperation)
                    {
                        case MODETYPE_OPERATION.EditDeleteCoordinate:
                            this._DrawingEdit.SelectNone();
                            break;
                        case MODETYPE_OPERATION.EditAddCoordinate:
                            this._DrawingEdit.SelectNone();
                            break;
                        case MODETYPE_OPERATION.EditModeEnabled:
                            if (this._SelectedEditManifoldID > 0 && this._UserMovedCoordinate == true)
                            {
                                Manifold.Interop.Point objPointScreen = e.pArgs.LocationScreen;
                                objPointScreen.Y += this._YCoordMapClickOffset;
                                objPointScreen = this._MapControl.ScreenToNative(objPointScreen);
                                moveOriginalPointCoordinate(objPointScreen.X, objPointScreen.Y);
                                bPrepareEdit = true;

                                //After MouseUp Event - remove selection for move so that it dosnt move anymore
                                this._SelectedEditManifoldID = -1;
                            }
                            break;
                        case MODETYPE_OPERATION.EditMoveGeom:
                            if (this._SelectedEditManifoldID > 0 && this._UserMovedGeom == true)
                            {
                                this._SelectedEditManifoldPointEnd = e.pArgs.LocationNative;
                                if (this._SelectedEditManifoldPointStart != null && this._SelectedEditManifoldPointEnd != null)
                                {
                                    //Move Geom the difference in meters Horizontally and Vertically
                                    moveGeomWithSQL();
                                    bPrepareEdit = true;
                                }
                                //After MouseUp Event - remove selection for move so that it dosnt move anymore
                                this._SelectedEditManifoldID = -1;
                            }
                            break;
                        default:
                            break;
                        //}
                    }
                    if (this._DrawingOriginalEditObject.Selection.Count < 1 || Convert.ToInt32(this._DrawingOriginalEditObject.Selection[0].Record.get_Data("ID").ToString()) != this._SelectedManifoldID)
                    {
                        Utility.setSelection(this._MapControl, this._DrawingOriginalEditObject, this._SelectedManifoldID);
                    }

                    if (bPrepareEdit == true)
                    {
                        prepareEditObject();
                    }
                }
            }
            catch (Exception objEx)
            {
                throw;
            }
            finally
            {
                this._UserMovedCoordinate = false;
                this._UserAddedCoordinate = false;
                this._UserDeletedCoordinate = false;
                this._UserMovedGeom = false;
                this._MouseIsClickedDown = false;
                this._SelectedEditManifoldPointEnd = null;
                this._SelectedEditManifoldPointStart = null;

                this._SelectedPointBranchIndex = -1;
                this._SelectedPointIndex = -1;
            }
        }
        private void MapControl_MouseDownEvent(object sender, AxManifold.Interop.IComponentControlEvents_MouseDownEvent e)
        {
            try
            {
                if (Utility.isModeTypeEditEnabled(EditModeOperation) == true)
                {
                    this._DrawingEdit.SelectNone();
                    if (this._DrawingOriginalEditObject.Selection.Count < 1 || Convert.ToInt32(this._DrawingOriginalEditObject.Selection[0].Record.get_Data("ID").ToString()) != this._SelectedManifoldID)
                    {
                        Utility.setSelection(this._MapControl, this._DrawingOriginalEditObject, this._SelectedManifoldID);
                    }

                    if (this._DrawingEdit.Selection.Count < 1)
                    {
                        //Save the Edit object GEOM string before any EDITING is performed on it.
                        this._SelectedManifoldObjectOriginalGEOM = this._DrawingOriginalEditObject.Selection[0].get_Geom().ToTextWKT();

                        //SET SELECTION
                        Manifold.Interop.Point objPointScreen = e.pArgs.LocationScreen;
                        objPointScreen.Y += this._YCoordMapClickOffset;
                        objPointScreen = this._MapControl.ScreenToNative(objPointScreen);

                        switch (EditModeOperation)
                        {
                            case MODETYPE_OPERATION.EditDeleteCoordinate:
                                this._MouseIsClickedDown = true;
                                deleteCoordinate(objPointScreen);
                                break;
                            case MODETYPE_OPERATION.EditAddCoordinate:
                                this._MouseIsClickedDown = true;
                                if (this._AddingCoordinate == false)
                                {
                                    addCoordinate(objPointScreen);
                                }
                                break;
                            case MODETYPE_OPERATION.EditModeEnabled:
                                Utility.setNearestSelection(this._MapControl, this._DrawingEdit, objPointScreen, _SelectionTolerance);

                                if (this._DrawingEdit.Selection.Count > 0)
                                {
                                    //Record selected Point object
                                    this._MouseIsClickedDown = true;
                                    this._SelectedEditManifoldID = Convert.ToInt32(this._DrawingEdit.Selection[0].Record.get_Data("ID").ToString());

                                    this._SelectedPointBranchIndex = Convert.ToInt32(this._DrawingEdit.Selection[0].Record.get_Data("BranchIndex").ToString());
                                    this._SelectedPointIndex = Convert.ToInt32(this._DrawingEdit.Selection[0].Record.get_Data("PointIndex").ToString());
                                }
                                else
                                {
                                    this._SelectedEditManifoldID = -1;
                                }
                                break;
                            case MODETYPE_OPERATION.EditMoveGeom:
                                Utility.setNearestSelection(this._MapControl, this._DrawingEdit, objPointScreen, _SelectionTolerance);

                                if (this._DrawingEdit.Selection.Count > 0)
                                {
                                    this._GeomMovedDetails = new GeomMovedDetails();
                                    this._UserMovedGeom = false;
                                    //Record selected Point object
                                    this._MouseIsClickedDown = true;
                                    this._SelectedEditManifoldID = Convert.ToInt32(this._DrawingEdit.Selection[0].Record.get_Data("ID").ToString());
                                    this._SelectedEditManifoldPointStart = e.pArgs.LocationNative;
                                }
                                else
                                {
                                    this._SelectedEditManifoldID = -1;
                                }
                                break;
                            default:
                                this._MouseIsClickedDown = false;
                                break;
                        }
                    }
                }
            }
            catch (Exception objEx)
            {
                throw;
            }
        }