private void centreOfCurveCheckBox_CheckedChanged(object sender, EventArgs e)
        {
            // Toggle the status.
            m_WantCentre = !m_WantCentre;

            // If the user now wants to use the centre point as backsight
            if (m_WantCentre)
            {
                // How many circles were incident on the from-point?
                int ncircle = m_Circles.Count;

                // There SHOULD be at least one (otherwise the checkbox that
                // leads to this function should have been diabled).
                if (ncircle==0)
                {
                    MessageBox.Show("The from-point does not coincide with any circular curves.");
                    centreOfCurveCheckBox.Checked = false;
                    return;
                }

                // Get the circle involved. If there's more than one, we need
                // to ask the user which one.
                Circle circle;

                if (ncircle==1)
                    circle = m_Circles[0];
                else
                {
                    // Ask the user to select a circle.
                    GetCircleForm dial = new GetCircleForm(m_Circles);
                    if (dial.ShowDialog() != DialogResult.OK)
                    {
                        centreOfCurveCheckBox.Checked = false;
                        return;
                    }

                    circle = dial.Circle;
                    dial.Dispose();
                }

                // Get the point at the centre.
                ISpatialModel map = CadastralMapModel.Current;
                ISpatialObject so = map.QueryClosest(circle.Center, Backsight.Length.Zero, SpatialType.Point);
                m_Backsight = (so as PointFeature);

                // Confirm that we got something.
                if (m_Backsight==null)
                {
                    MessageBox.Show("Cannot find the center point.");
                    centreOfCurveCheckBox.Checked = false;
                    return;
                }

                // Display the key of the backsight.
                backsightTextBox.Text = String.Format("+{0}", m_Backsight.FormattedKey);

                // Disable the backsight field.
                backsightTextBox.Enabled = false;

                // Resume in the angle field.
                angleTextBox.Focus();
            }
            else
            {
                // Draw any backsight point normally.
                SetNormalColour(m_Backsight);

                // Reset backsight stuff.
                m_Backsight = null;
                backsightTextBox.Enabled = true;
                backsightTextBox.Text = String.Empty;

                // Resume in the backsight field.
                backsightTextBox.Focus();
            }

            OnChange();
        }
        private void useCenterCheckBox_CheckedChanged(object sender, EventArgs e)
        {
            // Draw any existing backsight point normally.
            //SetNormalColour(m_pBacksight);

            // Toggle the status.
            m_WantCentre = !m_WantCentre;

            // If the user now wants to use the centre point as backsight
            if (m_WantCentre)
            {
                // How many circles were incident on the from-point?
                int ncircle = m_Circles.Count;

                // There SHOULD be at least one (otherwise the checkbox that
                // leads to this function should have been disabled).
                if (ncircle==0)
                {
                    MessageBox.Show("The from-point does not coincide with any circular arcs.");
                    useCenterCheckBox.Checked = false;
                    return;
                }

                // Get the circle involved. If there's more than one, we need
                // to ask the user which one.
                Circle circle = m_Circles[0];
                if (ncircle > 1)
                {
                    // Ask the user to select a circle.
                    GetCircleForm dial = new GetCircleForm(m_Circles);
                    if (dial.ShowDialog() != DialogResult.OK)
                    {
                        useCenterCheckBox.Checked = false;
                        dial.Dispose();
                        return;
                    }

                    circle = dial.Circle;
                    dial.Dispose();
                }

                // Get the point at the center.
                m_Backsight = circle.CenterPoint;

                // Confirm that we got something.
                if (m_Backsight==null)
                {
                    MessageBox.Show("Cannot find the center point.");
                    useCenterCheckBox.Checked = false;
                    return;
                }

                // Display the key of the backsight.
                ShowKey(backsightTextBox, m_Backsight);

                // Disable the backsight field.
                backsightTextBox.Enabled = false;

                // Resume in the direction field.
                directionTextBox.Focus();
            }
            else
            {
                // Reset and enable backsight stuff.
                m_Backsight = null;
                backsightTextBox.Enabled = true;
                backsightTextBox.Text = String.Empty;

                // Resume in the backsight field.
                backsightTextBox.Focus();
            }

            OnNewDirection();
        }