Click here to Skip to main content
15,881,852 members
Articles / Programming Languages / C#

Universal Framework for Science and Engineering - Part 4: Space elevator

Rate me:
Please Sign up or sign in to vote.
4.56/5 (6 votes)
14 Aug 20066 min read 36.6K   2.2K   37  
An article on framework applications to the space elevator.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace OfficePickers.Util
{
    /// <summary>
    /// Provides a System.Windows.Forms.Form that have a ContextMenu behavior.
    /// Use this Form by extending it or by adding the control using the method:
    /// <code>SetContainingControl(Control control)</code>
    /// </summary>
    public partial class ContextMenuForm : Form
    {
        private bool _locked = false;

        /// <summary>
        /// Gets or sets a value indicating that the form is locked.
        /// The form should be locked when opening a Dialog on it.
        /// </summary>
        public bool Locked
        {
            get { return _locked; }
            set 
            {
                _locked = value; 
            }
        }

        private Control _parentControl = null;
        /// <summary>
        /// Initialize a new instace of the ContextMenuForm in order to hold a control that
        /// needes to have a ContextMenu behavior.
        /// </summary>
        public ContextMenuForm()
        {
            InitializeComponent();
        }       
        /// <summary>
        /// Shows the form on the specifies parent in the specifies location.
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="startLocation"></param>
        /// <param name="width"></param>
        public void Show(Control parent, Point startLocation, int width)
        {
            _parentControl = parent;
            Point location = parent.PointToScreen(startLocation);
            this.Location = location;            
            this.Width = width;
            this.Show();
        }
        /// <summary>
        /// Set the control that will populate the ContextMenuForm.
        /// <remarks>
        /// Any scrolling should be implemented in the control it self, the 
        /// ContextMenuForm will not support scrolling.
        /// </remarks>
        /// </summary>
        /// <param name="control"></param>
        public void SetContainingControl(Control control)
        {
            panelMain.Controls.Clear();
            control.Dock = DockStyle.Fill;
            panelMain.Controls.Add(control);
        }

        private void ContextMenuPanel_Deactivate(object sender, EventArgs e)
        {
            if (!Locked)
            {
                Hide();                
            }
        }

        private void ContextMenuPanel_Leave(object sender, EventArgs e)
        {
            if (!Locked)
            {
                Hide();
            }
        }

        new public void Hide()
        {
            base.Hide();
            if (_parentControl != null)
            {
                Form parentForm = _parentControl.FindForm();
                if (parentForm != null)
                {
                    parentForm.BringToFront();
                }
            }
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Architect
Russian Federation Russian Federation
Ph. D. Petr Ivankov worked as scientific researcher at Russian Mission Control Centre since 1978 up to 2000. Now he is engaged by Aviation training simulators http://dinamika-avia.com/ . His additional interests are:

1) Noncommutative geometry

http://front.math.ucdavis.edu/author/P.Ivankov

2) Literary work (Russian only)

http://zhurnal.lib.ru/editors/3/3d_m/

3) Scientific articles
http://arxiv.org/find/all/1/au:+Ivankov_Petr/0/1/0/all/0/1

Comments and Discussions