namespace distribution_explorer
{
    partial class DistexForm
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
          this.components = new System.ComponentModel.Container();
          System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DistexForm));
          this.modeLabel = new System.Windows.Forms.Label();
          this.propertiesTab = new System.Windows.Forms.TabControl();
          this.DistributionTab = new System.Windows.Forms.TabPage();
          this.parameter3 = new System.Windows.Forms.TextBox();
          this.parameter3Label = new System.Windows.Forms.Label();
          this.distributionNameLabel = new System.Windows.Forms.Label();
          this.parameter2Label = new System.Windows.Forms.Label();
          this.parameter1Label = new System.Windows.Forms.Label();
          this.parameter2 = new System.Windows.Forms.TextBox();
          this.parameter1 = new System.Windows.Forms.TextBox();
          this.distribution = new System.Windows.Forms.ComboBox();
          this.PropertiesTabPage = new System.Windows.Forms.TabPage();
          this.toLabel2 = new System.Windows.Forms.Label();
          this.toLabel1 = new System.Windows.Forms.Label();
          this.supportUpperLabel = new System.Windows.Forms.Label();
          this.supportLowerLabel = new System.Windows.Forms.Label();
          this.supportLabel = new System.Windows.Forms.Label();
          this.rangeGreatestLabel = new System.Windows.Forms.Label();
          this.rangeLowestLabel = new System.Windows.Forms.Label();
          this.rangeLabel = new System.Windows.Forms.Label();
          this.parameter3ValueLabel = new System.Windows.Forms.Label();
          this.parameter2ValueLabel = new System.Windows.Forms.Label();
          this.parameter1ValueLabel = new System.Windows.Forms.Label();
          this.distributionValueLabel = new System.Windows.Forms.Label();
          this.parameterLabel3 = new System.Windows.Forms.Label();
          this.parameterLabel2 = new System.Windows.Forms.Label();
          this.parameterLabel1 = new System.Windows.Forms.Label();
          this.DistributionLabel = new System.Windows.Forms.Label();
          this.coefficient_of_variation = new System.Windows.Forms.Label();
          this.CVlabel = new System.Windows.Forms.Label();
          this.kurtosis_excess = new System.Windows.Forms.Label();
          this.kurtosisExcessLabel = new System.Windows.Forms.Label();
          this.kurtosis = new System.Windows.Forms.Label();
          this.kurtosisLabel = new System.Windows.Forms.Label();
          this.skewness = new System.Windows.Forms.Label();
          this.skewnessLabel = new System.Windows.Forms.Label();
          this.median = new System.Windows.Forms.Label();
          this.standard_deviation = new System.Windows.Forms.Label();
          this.stddevLabel = new System.Windows.Forms.Label();
          this.variance = new System.Windows.Forms.Label();
          this.varianceLabel = new System.Windows.Forms.Label();
          this.medianLabel = new System.Windows.Forms.Label();
          this.mode = new System.Windows.Forms.Label();
          this.mean = new System.Windows.Forms.Label();
          this.meanLabel = new System.Windows.Forms.Label();
          this.cdfTabPage = new System.Windows.Forms.TabPage();
          this.CDF_data = new System.Windows.Forms.DataGridView();
          this.RandomVariable = new System.Windows.Forms.DataGridViewTextBoxColumn();
          this.PDF = new System.Windows.Forms.DataGridViewTextBoxColumn();
          this.CDF = new System.Windows.Forms.DataGridViewTextBoxColumn();
          this.CCDF = new System.Windows.Forms.DataGridViewTextBoxColumn();
          this.QuantileTabPage = new System.Windows.Forms.TabPage();
          this.QuantileData = new System.Windows.Forms.DataGridView();
          this.RiskLevel = new System.Windows.Forms.DataGridViewTextBoxColumn();
          this.LowerCriticalValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
          this.UpperCriticalValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
          this.menuStrip1 = new System.Windows.Forms.MenuStrip();
          this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
          this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
          this.printToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.printPreviewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
          this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
          this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
          this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.contentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
          this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.customizeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
          this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
          this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
          this.propertiesTab.SuspendLayout();
          this.DistributionTab.SuspendLayout();
          this.PropertiesTabPage.SuspendLayout();
          this.cdfTabPage.SuspendLayout();
          ((System.ComponentModel.ISupportInitialize)(this.CDF_data)).BeginInit();
          this.QuantileTabPage.SuspendLayout();
          ((System.ComponentModel.ISupportInitialize)(this.QuantileData)).BeginInit();
          this.menuStrip1.SuspendLayout();
          this.SuspendLayout();
          // 
          // modeLabel
          // 
          this.modeLabel.AutoSize = true;
          this.modeLabel.Location = new System.Drawing.Point(45, 197);
          this.modeLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.modeLabel.Name = "modeLabel";
          this.modeLabel.Size = new System.Drawing.Size(44, 18);
          this.modeLabel.TabIndex = 0;
          this.modeLabel.Text = "Mode";
          // 
          // propertiesTab
          // 
          this.propertiesTab.AccessibleDescription = "Statistical distribution properties tab";
          this.propertiesTab.AccessibleName = "Properties tab";
          this.propertiesTab.Controls.Add(this.DistributionTab);
          this.propertiesTab.Controls.Add(this.PropertiesTabPage);
          this.propertiesTab.Controls.Add(this.cdfTabPage);
          this.propertiesTab.Controls.Add(this.QuantileTabPage);
          this.propertiesTab.Dock = System.Windows.Forms.DockStyle.Fill;
          this.propertiesTab.Font = new System.Drawing.Font("Tahoma", 8.400001F);
          this.propertiesTab.Location = new System.Drawing.Point(0, 26);
          this.propertiesTab.Margin = new System.Windows.Forms.Padding(4);
          this.propertiesTab.Name = "propertiesTab";
          this.propertiesTab.SelectedIndex = 0;
          this.propertiesTab.ShowToolTips = true;
          this.propertiesTab.Size = new System.Drawing.Size(642, 585);
          this.propertiesTab.TabIndex = 0;
          this.propertiesTab.Deselecting += new System.Windows.Forms.TabControlCancelEventHandler(this.properties_tab_Deselecting);
          this.propertiesTab.SelectedIndexChanged += new System.EventHandler(this.properties_tab_SelectedIndexChanged);
          // 
          // DistributionTab
          // 
          this.DistributionTab.AccessibleDescription = "Distribution Tab";
          this.DistributionTab.AccessibleName = "DistributionTab";
          this.DistributionTab.BackColor = System.Drawing.SystemColors.Control;
          this.DistributionTab.Controls.Add(this.parameter3);
          this.DistributionTab.Controls.Add(this.parameter3Label);
          this.DistributionTab.Controls.Add(this.distributionNameLabel);
          this.DistributionTab.Controls.Add(this.parameter2Label);
          this.DistributionTab.Controls.Add(this.parameter1Label);
          this.DistributionTab.Controls.Add(this.parameter2);
          this.DistributionTab.Controls.Add(this.parameter1);
          this.DistributionTab.Controls.Add(this.distribution);
          this.DistributionTab.Location = new System.Drawing.Point(4, 26);
          this.DistributionTab.Margin = new System.Windows.Forms.Padding(700, 4, 4, 4);
          this.DistributionTab.Name = "DistributionTab";
          this.DistributionTab.Padding = new System.Windows.Forms.Padding(4);
          this.DistributionTab.Size = new System.Drawing.Size(634, 555);
          this.DistributionTab.TabIndex = 0;
          this.DistributionTab.Text = "Distribution";
          this.DistributionTab.ToolTipText = "Choose the Statistical Distribution and provide parameter(s)";
          this.DistributionTab.UseVisualStyleBackColor = true;
          this.DistributionTab.Click += new System.EventHandler(this.tabPage1_Click);
          // 
          // parameter3
          // 
          this.parameter3.Location = new System.Drawing.Point(200, 232);
          this.parameter3.Name = "parameter3";
          this.parameter3.Size = new System.Drawing.Size(341, 24);
          this.parameter3.TabIndex = 6;
          // 
          // parameter3Label
          // 
          this.parameter3Label.AutoSize = true;
          this.parameter3Label.Location = new System.Drawing.Point(31, 232);
          this.parameter3Label.Name = "parameter3Label";
          this.parameter3Label.Size = new System.Drawing.Size(170, 18);
          this.parameter3Label.TabIndex = 5;
          this.parameter3Label.Text = "Parameter 3 (if required)";
          this.parameter3Label.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
          this.toolTip1.SetToolTip(this.parameter3Label, "Enter value of 3nd Parameter of the chosen distribution");
          // 
          // distributionNameLabel
          // 
          this.distributionNameLabel.AutoSize = true;
          this.distributionNameLabel.Location = new System.Drawing.Point(31, 58);
          this.distributionNameLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.distributionNameLabel.Name = "distributionNameLabel";
          this.distributionNameLabel.Size = new System.Drawing.Size(78, 18);
          this.distributionNameLabel.TabIndex = 2;
          this.distributionNameLabel.Text = "Distribution";
          this.distributionNameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
          // 
          // parameter2Label
          // 
          this.parameter2Label.AutoSize = true;
          this.parameter2Label.Location = new System.Drawing.Point(28, 174);
          this.parameter2Label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.parameter2Label.Name = "parameter2Label";
          this.parameter2Label.Size = new System.Drawing.Size(170, 18);
          this.parameter2Label.TabIndex = 4;
          this.parameter2Label.Text = "Parameter 2 (if required)";
          this.parameter2Label.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
          this.toolTip1.SetToolTip(this.parameter2Label, "Enter value of 2nd Parameter of the chosen distribution");
          // 
          // parameter1Label
          // 
          this.parameter1Label.AutoSize = true;
          this.parameter1Label.ForeColor = System.Drawing.Color.Black;
          this.parameter1Label.Location = new System.Drawing.Point(28, 116);
          this.parameter1Label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.parameter1Label.Name = "parameter1Label";
          this.parameter1Label.Size = new System.Drawing.Size(89, 18);
          this.parameter1Label.TabIndex = 3;
          this.parameter1Label.Text = "Parameter 1";
          this.parameter1Label.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
          // 
          // parameter2
          // 
          this.parameter2.Location = new System.Drawing.Point(200, 171);
          this.parameter2.Margin = new System.Windows.Forms.Padding(4);
          this.parameter2.Name = "parameter2";
          this.parameter2.Size = new System.Drawing.Size(341, 24);
          this.parameter2.TabIndex = 2;
          // 
          // parameter1
          // 
          this.parameter1.Location = new System.Drawing.Point(200, 110);
          this.parameter1.Margin = new System.Windows.Forms.Padding(4);
          this.parameter1.Name = "parameter1";
          this.parameter1.Size = new System.Drawing.Size(341, 24);
          this.parameter1.TabIndex = 1;
          // 
          // distribution
          // 
          this.distribution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
          this.distribution.FormattingEnabled = true;
          this.distribution.Location = new System.Drawing.Point(200, 51);
          this.distribution.Margin = new System.Windows.Forms.Padding(4);
          this.distribution.MaxDropDownItems = 20;
          this.distribution.Name = "distribution";
          this.distribution.Size = new System.Drawing.Size(341, 25);
          this.distribution.TabIndex = 0;
          this.distribution.SelectedIndexChanged += new System.EventHandler(this.distribution_SelectedIndexChanged);
          // 
          // PropertiesTabPage
          // 
          this.PropertiesTabPage.AccessibleDescription = "Show properties of distribution ";
          this.PropertiesTabPage.AccessibleName = "PropertiesTabPage";
          this.PropertiesTabPage.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
          this.PropertiesTabPage.BackColor = System.Drawing.SystemColors.Control;
          this.PropertiesTabPage.Controls.Add(this.toLabel2);
          this.PropertiesTabPage.Controls.Add(this.toLabel1);
          this.PropertiesTabPage.Controls.Add(this.supportUpperLabel);
          this.PropertiesTabPage.Controls.Add(this.supportLowerLabel);
          this.PropertiesTabPage.Controls.Add(this.supportLabel);
          this.PropertiesTabPage.Controls.Add(this.rangeGreatestLabel);
          this.PropertiesTabPage.Controls.Add(this.rangeLowestLabel);
          this.PropertiesTabPage.Controls.Add(this.rangeLabel);
          this.PropertiesTabPage.Controls.Add(this.parameter3ValueLabel);
          this.PropertiesTabPage.Controls.Add(this.parameter2ValueLabel);
          this.PropertiesTabPage.Controls.Add(this.parameter1ValueLabel);
          this.PropertiesTabPage.Controls.Add(this.distributionValueLabel);
          this.PropertiesTabPage.Controls.Add(this.parameterLabel3);
          this.PropertiesTabPage.Controls.Add(this.parameterLabel2);
          this.PropertiesTabPage.Controls.Add(this.parameterLabel1);
          this.PropertiesTabPage.Controls.Add(this.DistributionLabel);
          this.PropertiesTabPage.Controls.Add(this.coefficient_of_variation);
          this.PropertiesTabPage.Controls.Add(this.CVlabel);
          this.PropertiesTabPage.Controls.Add(this.kurtosis_excess);
          this.PropertiesTabPage.Controls.Add(this.kurtosisExcessLabel);
          this.PropertiesTabPage.Controls.Add(this.kurtosis);
          this.PropertiesTabPage.Controls.Add(this.kurtosisLabel);
          this.PropertiesTabPage.Controls.Add(this.skewness);
          this.PropertiesTabPage.Controls.Add(this.skewnessLabel);
          this.PropertiesTabPage.Controls.Add(this.median);
          this.PropertiesTabPage.Controls.Add(this.standard_deviation);
          this.PropertiesTabPage.Controls.Add(this.stddevLabel);
          this.PropertiesTabPage.Controls.Add(this.variance);
          this.PropertiesTabPage.Controls.Add(this.varianceLabel);
          this.PropertiesTabPage.Controls.Add(this.medianLabel);
          this.PropertiesTabPage.Controls.Add(this.mode);
          this.PropertiesTabPage.Controls.Add(this.modeLabel);
          this.PropertiesTabPage.Controls.Add(this.mean);
          this.PropertiesTabPage.Controls.Add(this.meanLabel);
          this.PropertiesTabPage.ForeColor = System.Drawing.SystemColors.WindowText;
          this.PropertiesTabPage.Location = new System.Drawing.Point(4, 26);
          this.PropertiesTabPage.Margin = new System.Windows.Forms.Padding(4);
          this.PropertiesTabPage.Name = "PropertiesTabPage";
          this.PropertiesTabPage.Padding = new System.Windows.Forms.Padding(4);
          this.PropertiesTabPage.Size = new System.Drawing.Size(634, 555);
          this.PropertiesTabPage.TabIndex = 1;
          this.PropertiesTabPage.Text = "Properties";
          this.PropertiesTabPage.ToolTipText = "Shows properties of chosen distribution.";
          this.PropertiesTabPage.UseVisualStyleBackColor = true;
          this.PropertiesTabPage.Enter += new System.EventHandler(this.tabPage2_Enter);
          // 
          // toLabel2
          // 
          this.toLabel2.AutoSize = true;
          this.toLabel2.Location = new System.Drawing.Point(384, 483);
          this.toLabel2.Name = "toLabel2";
          this.toLabel2.Size = new System.Drawing.Size(21, 18);
          this.toLabel2.TabIndex = 25;
          this.toLabel2.Text = "to";
          // 
          // toLabel1
          // 
          this.toLabel1.AutoSize = true;
          this.toLabel1.Location = new System.Drawing.Point(384, 449);
          this.toLabel1.Name = "toLabel1";
          this.toLabel1.Size = new System.Drawing.Size(21, 18);
          this.toLabel1.TabIndex = 24;
          this.toLabel1.Text = "to";
          // 
          // supportUpperLabel
          // 
          this.supportUpperLabel.AutoSize = true;
          this.supportUpperLabel.Location = new System.Drawing.Point(411, 483);
          this.supportUpperLabel.Name = "supportUpperLabel";
          this.supportUpperLabel.Size = new System.Drawing.Size(131, 18);
          this.supportUpperLabel.TabIndex = 23;
          this.supportUpperLabel.Text = "supportUpperValue";
          this.toolTip1.SetToolTip(this.supportUpperLabel, "PDF and CDF are unity for x argument values greater than this value.");
          // 
          // supportLowerLabel
          // 
          this.supportLowerLabel.AutoSize = true;
          this.supportLowerLabel.Location = new System.Drawing.Point(207, 483);
          this.supportLowerLabel.Name = "supportLowerLabel";
          this.supportLowerLabel.Size = new System.Drawing.Size(130, 18);
          this.supportLowerLabel.TabIndex = 22;
          this.supportLowerLabel.Text = "supportLowerValue";
          this.toolTip1.SetToolTip(this.supportLowerLabel, "PDF and CDF are zero for values of argument X less than this value.");
          // 
          // supportLabel
          // 
          this.supportLabel.AutoSize = true;
          this.supportLabel.Location = new System.Drawing.Point(45, 483);
          this.supportLabel.Name = "supportLabel";
          this.supportLabel.Size = new System.Drawing.Size(74, 18);
          this.supportLabel.TabIndex = 21;
          this.supportLabel.Text = "Supported";
          this.toolTip1.SetToolTip(this.supportLabel, "Range over which pdf  is >0 but not yet =1");
          // 
          // rangeGreatestLabel
          // 
          this.rangeGreatestLabel.AutoSize = true;
          this.rangeGreatestLabel.Location = new System.Drawing.Point(411, 449);
          this.rangeGreatestLabel.Name = "rangeGreatestLabel";
          this.rangeGreatestLabel.Size = new System.Drawing.Size(136, 18);
          this.rangeGreatestLabel.TabIndex = 20;
          this.rangeGreatestLabel.Text = "rangeGreatestValue";
          this.toolTip1.SetToolTip(this.rangeGreatestLabel, "Greatest argument X for calculating PDF and CDF.");
          // 
          // rangeLowestLabel
          // 
          this.rangeLowestLabel.AllowDrop = true;
          this.rangeLowestLabel.AutoSize = true;
          this.rangeLowestLabel.Location = new System.Drawing.Point(207, 449);
          this.rangeLowestLabel.Name = "rangeLowestLabel";
          this.rangeLowestLabel.Size = new System.Drawing.Size(125, 18);
          this.rangeLowestLabel.TabIndex = 19;
          this.rangeLowestLabel.Text = "rangeLowestValue";
          this.toolTip1.SetToolTip(this.rangeLowestLabel, "Lowest argument X for calculating PDF and CDF.");
          // 
          // rangeLabel
          // 
          this.rangeLabel.AutoSize = true;
          this.rangeLabel.Location = new System.Drawing.Point(45, 449);
          this.rangeLabel.Name = "rangeLabel";
          this.rangeLabel.Size = new System.Drawing.Size(49, 18);
          this.rangeLabel.TabIndex = 18;
          this.rangeLabel.Text = "Range";
          this.toolTip1.SetToolTip(this.rangeLabel, "Lowest and greatest possible value of x argument for PDF & CDF.");
          // 
          // parameter3ValueLabel
          // 
          this.parameter3ValueLabel.AutoSize = true;
          this.parameter3ValueLabel.Location = new System.Drawing.Point(204, 118);
          this.parameter3ValueLabel.Name = "parameter3ValueLabel";
          this.parameter3ValueLabel.Size = new System.Drawing.Size(128, 18);
          this.parameter3ValueLabel.TabIndex = 17;
          this.parameter3ValueLabel.Text = "parameter 3 value";
          this.toolTip1.SetToolTip(this.parameter3ValueLabel, "Show 3rd parameter provided (if any).");
          // 
          // parameter2ValueLabel
          // 
          this.parameter2ValueLabel.AutoSize = true;
          this.parameter2ValueLabel.Location = new System.Drawing.Point(204, 87);
          this.parameter2ValueLabel.Name = "parameter2ValueLabel";
          this.parameter2ValueLabel.Size = new System.Drawing.Size(128, 18);
          this.parameter2ValueLabel.TabIndex = 16;
          this.parameter2ValueLabel.Text = "parameter 2 value";
          this.toolTip1.SetToolTip(this.parameter2ValueLabel, "Show 2nd parameter provided (if any).");
          // 
          // parameter1ValueLabel
          // 
          this.parameter1ValueLabel.AutoSize = true;
          this.parameter1ValueLabel.Location = new System.Drawing.Point(204, 54);
          this.parameter1ValueLabel.Name = "parameter1ValueLabel";
          this.parameter1ValueLabel.Size = new System.Drawing.Size(128, 18);
          this.parameter1ValueLabel.TabIndex = 15;
          this.parameter1ValueLabel.Text = "parameter 1 value";
          this.toolTip1.SetToolTip(this.parameter1ValueLabel, "Show 1st parameter provided.");
          // 
          // distributionValueLabel
          // 
          this.distributionValueLabel.AutoSize = true;
          this.distributionValueLabel.Location = new System.Drawing.Point(204, 24);
          this.distributionValueLabel.Name = "distributionValueLabel";
          this.distributionValueLabel.Size = new System.Drawing.Size(118, 18);
          this.distributionValueLabel.TabIndex = 14;
          this.distributionValueLabel.Text = "distribution name";
          this.toolTip1.SetToolTip(this.distributionValueLabel, "Show name of chosen distribution");
          // 
          // parameterLabel3
          // 
          this.parameterLabel3.AutoSize = true;
          this.parameterLabel3.Location = new System.Drawing.Point(45, 118);
          this.parameterLabel3.Name = "parameterLabel3";
          this.parameterLabel3.Size = new System.Drawing.Size(142, 18);
          this.parameterLabel3.TabIndex = 13;
          this.parameterLabel3.Text = "Parameter 3 (if any)";
          // 
          // parameterLabel2
          // 
          this.parameterLabel2.AutoSize = true;
          this.parameterLabel2.Location = new System.Drawing.Point(45, 87);
          this.parameterLabel2.Name = "parameterLabel2";
          this.parameterLabel2.Size = new System.Drawing.Size(142, 18);
          this.parameterLabel2.TabIndex = 12;
          this.parameterLabel2.Text = "Parameter 2 (if any)";
          // 
          // parameterLabel1
          // 
          this.parameterLabel1.AutoSize = true;
          this.parameterLabel1.Location = new System.Drawing.Point(45, 54);
          this.parameterLabel1.Name = "parameterLabel1";
          this.parameterLabel1.Size = new System.Drawing.Size(89, 18);
          this.parameterLabel1.TabIndex = 11;
          this.parameterLabel1.Text = "Parameter 1";
          // 
          // DistributionLabel
          // 
          this.DistributionLabel.AutoSize = true;
          this.DistributionLabel.Location = new System.Drawing.Point(45, 24);
          this.DistributionLabel.Name = "DistributionLabel";
          this.DistributionLabel.Size = new System.Drawing.Size(78, 18);
          this.DistributionLabel.TabIndex = 10;
          this.DistributionLabel.Text = "Distribution";
          // 
          // coefficient_of_variation
          // 
          this.coefficient_of_variation.AutoSize = true;
          this.coefficient_of_variation.Location = new System.Drawing.Point(204, 318);
          this.coefficient_of_variation.Name = "coefficient_of_variation";
          this.coefficient_of_variation.Size = new System.Drawing.Size(65, 18);
          this.coefficient_of_variation.TabIndex = 9;
          this.coefficient_of_variation.Text = "CV value";
          // 
          // CVlabel
          // 
          this.CVlabel.AutoSize = true;
          this.CVlabel.Location = new System.Drawing.Point(45, 318);
          this.CVlabel.Name = "CVlabel";
          this.CVlabel.Size = new System.Drawing.Size(152, 18);
          this.CVlabel.TabIndex = 8;
          this.CVlabel.Text = "Coefficient of variation";
          this.toolTip1.SetToolTip(this.CVlabel, "or relative standard deviation that is standard deviation/mean");
          // 
          // kurtosis_excess
          // 
          this.kurtosis_excess.AutoSize = true;
          this.kurtosis_excess.Location = new System.Drawing.Point(204, 414);
          this.kurtosis_excess.Name = "kurtosis_excess";
          this.kurtosis_excess.Size = new System.Drawing.Size(146, 18);
          this.kurtosis_excess.TabIndex = 7;
          this.kurtosis_excess.Text = "kurtosis excess value";
          // 
          // kurtosisExcessLabel
          // 
          this.kurtosisExcessLabel.AutoSize = true;
          this.kurtosisExcessLabel.Location = new System.Drawing.Point(45, 414);
          this.kurtosisExcessLabel.Name = "kurtosisExcessLabel";
          this.kurtosisExcessLabel.Size = new System.Drawing.Size(109, 18);
          this.kurtosisExcessLabel.TabIndex = 6;
          this.kurtosisExcessLabel.Text = "Kurtosis excess";
          // 
          // kurtosis
          // 
          this.kurtosis.AutoSize = true;
          this.kurtosis.Location = new System.Drawing.Point(204, 383);
          this.kurtosis.Name = "kurtosis";
          this.kurtosis.Size = new System.Drawing.Size(96, 18);
          this.kurtosis.TabIndex = 5;
          this.kurtosis.Text = "kurtosis value";
          // 
          // kurtosisLabel
          // 
          this.kurtosisLabel.AutoSize = true;
          this.kurtosisLabel.Location = new System.Drawing.Point(45, 383);
          this.kurtosisLabel.Name = "kurtosisLabel";
          this.kurtosisLabel.Size = new System.Drawing.Size(59, 18);
          this.kurtosisLabel.TabIndex = 4;
          this.kurtosisLabel.Text = "Kurtosis";
          // 
          // skewness
          // 
          this.skewness.AutoSize = true;
          this.skewness.Location = new System.Drawing.Point(204, 351);
          this.skewness.Name = "skewness";
          this.skewness.Size = new System.Drawing.Size(109, 18);
          this.skewness.TabIndex = 3;
          this.skewness.Text = "skewness value";
          // 
          // skewnessLabel
          // 
          this.skewnessLabel.AutoSize = true;
          this.skewnessLabel.Location = new System.Drawing.Point(45, 351);
          this.skewnessLabel.Name = "skewnessLabel";
          this.skewnessLabel.Size = new System.Drawing.Size(71, 18);
          this.skewnessLabel.TabIndex = 0;
          this.skewnessLabel.Text = "Skewness";
          // 
          // median
          // 
          this.median.AutoSize = true;
          this.median.Location = new System.Drawing.Point(204, 228);
          this.median.Name = "median";
          this.median.Size = new System.Drawing.Size(94, 18);
          this.median.TabIndex = 1;
          this.median.Text = "median value";
          // 
          // standard_deviation
          // 
          this.standard_deviation.AutoSize = true;
          this.standard_deviation.Location = new System.Drawing.Point(204, 286);
          this.standard_deviation.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.standard_deviation.Name = "standard_deviation";
          this.standard_deviation.Size = new System.Drawing.Size(94, 18);
          this.standard_deviation.TabIndex = 0;
          this.standard_deviation.Text = "StdDev value";
          // 
          // stddevLabel
          // 
          this.stddevLabel.AutoSize = true;
          this.stddevLabel.Location = new System.Drawing.Point(45, 286);
          this.stddevLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.stddevLabel.Name = "stddevLabel";
          this.stddevLabel.Size = new System.Drawing.Size(130, 18);
          this.stddevLabel.TabIndex = 0;
          this.stddevLabel.Text = "Standard Deviation";
          this.toolTip1.SetToolTip(this.stddevLabel, "sqrt(");
          // 
          // variance
          // 
          this.variance.AutoSize = true;
          this.variance.Location = new System.Drawing.Point(204, 257);
          this.variance.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.variance.Name = "variance";
          this.variance.Size = new System.Drawing.Size(101, 18);
          this.variance.TabIndex = 0;
          this.variance.Text = "variance value";
          // 
          // varianceLabel
          // 
          this.varianceLabel.AutoSize = true;
          this.varianceLabel.Location = new System.Drawing.Point(45, 257);
          this.varianceLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.varianceLabel.Name = "varianceLabel";
          this.varianceLabel.Size = new System.Drawing.Size(63, 18);
          this.varianceLabel.TabIndex = 0;
          this.varianceLabel.Text = "Variance";
          this.toolTip1.SetToolTip(this.varianceLabel, "standard deviation squared");
          // 
          // medianLabel
          // 
          this.medianLabel.AutoSize = true;
          this.medianLabel.Location = new System.Drawing.Point(45, 228);
          this.medianLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.medianLabel.Name = "medianLabel";
          this.medianLabel.Size = new System.Drawing.Size(54, 18);
          this.medianLabel.TabIndex = 0;
          this.medianLabel.Text = "Median";
          this.toolTip1.SetToolTip(this.medianLabel, "media is quantile(0.5)");
          // 
          // mode
          // 
          this.mode.AutoSize = true;
          this.mode.Location = new System.Drawing.Point(204, 197);
          this.mode.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.mode.Name = "mode";
          this.mode.Size = new System.Drawing.Size(84, 18);
          this.mode.TabIndex = 0;
          this.mode.Text = "mode value";
          // 
          // mean
          // 
          this.mean.AutoSize = true;
          this.mean.Location = new System.Drawing.Point(204, 169);
          this.mean.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.mean.Name = "mean";
          this.mean.Size = new System.Drawing.Size(84, 18);
          this.mean.TabIndex = 0;
          this.mean.Text = "mean value";
          // 
          // meanLabel
          // 
          this.meanLabel.AutoSize = true;
          this.meanLabel.Location = new System.Drawing.Point(45, 169);
          this.meanLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
          this.meanLabel.Name = "meanLabel";
          this.meanLabel.Size = new System.Drawing.Size(44, 18);
          this.meanLabel.TabIndex = 0;
          this.meanLabel.Text = "Mean";
          // 
          // cdfTabPage
          // 
          this.cdfTabPage.Controls.Add(this.CDF_data);
          this.cdfTabPage.Location = new System.Drawing.Point(4, 26);
          this.cdfTabPage.Margin = new System.Windows.Forms.Padding(4);
          this.cdfTabPage.Name = "cdfTabPage";
          this.cdfTabPage.Padding = new System.Windows.Forms.Padding(4);
          this.cdfTabPage.Size = new System.Drawing.Size(634, 555);
          this.cdfTabPage.TabIndex = 2;
          this.cdfTabPage.Text = "PDF and CDF";
          this.cdfTabPage.ToolTipText = "Probability Density and Cumulative Distribution Function (and complement) for ran" +
              "dom variate x";
          this.cdfTabPage.UseVisualStyleBackColor = true;
          // 
          // CDF_data
          // 
          this.CDF_data.AccessibleDescription = "PDF, CDF & complement Data Page";
          this.CDF_data.AccessibleName = "CDF Tab";
          this.CDF_data.AccessibleRole = System.Windows.Forms.AccessibleRole.PageTab;
          this.CDF_data.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
          this.CDF_data.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.RandomVariable,
            this.PDF,
            this.CDF,
            this.CCDF});
          this.CDF_data.Dock = System.Windows.Forms.DockStyle.Fill;
          this.CDF_data.Location = new System.Drawing.Point(4, 4);
          this.CDF_data.Margin = new System.Windows.Forms.Padding(4);
          this.CDF_data.Name = "CDF_data";
          this.CDF_data.RowTemplate.Height = 24;
          this.CDF_data.Size = new System.Drawing.Size(626, 547);
          this.CDF_data.TabIndex = 0;
          this.CDF_data.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
          this.CDF_data.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.CDF_data_CellContentClick);
          // 
          // RandomVariable
          // 
          this.RandomVariable.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
          this.RandomVariable.HeaderText = "Random Variable";
          this.RandomVariable.Name = "RandomVariable";
          // 
          // PDF
          // 
          this.PDF.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
          this.PDF.HeaderText = "PDF";
          this.PDF.Name = "PDF";
          this.PDF.ReadOnly = true;
          // 
          // CDF
          // 
          this.CDF.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
          this.CDF.HeaderText = "CDF";
          this.CDF.Name = "CDF";
          this.CDF.ReadOnly = true;
          // 
          // CCDF
          // 
          this.CCDF.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
          this.CCDF.HeaderText = "1-CDF";
          this.CCDF.Name = "CCDF";
          this.CCDF.ReadOnly = true;
          // 
          // QuantileTabPage
          // 
          this.QuantileTabPage.Controls.Add(this.QuantileData);
          this.QuantileTabPage.Location = new System.Drawing.Point(4, 26);
          this.QuantileTabPage.Margin = new System.Windows.Forms.Padding(4);
          this.QuantileTabPage.Name = "QuantileTabPage";
          this.QuantileTabPage.Padding = new System.Windows.Forms.Padding(4);
          this.QuantileTabPage.Size = new System.Drawing.Size(634, 555);
          this.QuantileTabPage.TabIndex = 3;
          this.QuantileTabPage.Text = "Critical Values";
          this.QuantileTabPage.ToolTipText = "Critical values (quantiles or percentiles of probability 1 - alpha)";
          this.QuantileTabPage.UseVisualStyleBackColor = true;
          this.QuantileTabPage.Enter += new System.EventHandler(this.QuantileTab_Enter);
          // 
          // QuantileData
          // 
          this.QuantileData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
          this.QuantileData.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.RiskLevel,
            this.LowerCriticalValue,
            this.UpperCriticalValue});
          this.QuantileData.Dock = System.Windows.Forms.DockStyle.Fill;
          this.QuantileData.Location = new System.Drawing.Point(4, 4);
          this.QuantileData.Margin = new System.Windows.Forms.Padding(4);
          this.QuantileData.Name = "QuantileData";
          this.QuantileData.RowTemplate.Height = 24;
          this.QuantileData.Size = new System.Drawing.Size(626, 547);
          this.QuantileData.TabIndex = 0;
          this.QuantileData.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.QuantileData_CellEndEdit);
          // 
          // RiskLevel
          // 
          this.RiskLevel.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
          this.RiskLevel.HeaderText = "Risk Level (alpha)";
          this.RiskLevel.Name = "RiskLevel";
          // 
          // LowerCriticalValue
          // 
          this.LowerCriticalValue.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
          this.LowerCriticalValue.HeaderText = "Lower Critical Value";
          this.LowerCriticalValue.Name = "LowerCriticalValue";
          this.LowerCriticalValue.ReadOnly = true;
          // 
          // UpperCriticalValue
          // 
          this.UpperCriticalValue.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
          this.UpperCriticalValue.HeaderText = "Upper Critical Value";
          this.UpperCriticalValue.Name = "UpperCriticalValue";
          this.UpperCriticalValue.ReadOnly = true;
          // 
          // menuStrip1
          // 
          this.menuStrip1.BackColor = System.Drawing.SystemColors.Control;
          this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.fileToolStripMenuItem,
            this.editToolStripMenuItem,
            this.helpToolStripMenuItem});
          this.menuStrip1.Location = new System.Drawing.Point(0, 0);
          this.menuStrip1.Name = "menuStrip1";
          this.menuStrip1.Size = new System.Drawing.Size(642, 26);
          this.menuStrip1.TabIndex = 1;
          this.menuStrip1.Text = "menuStrip1";
          // 
          // fileToolStripMenuItem
          // 
          this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.newToolStripMenuItem,
            this.openToolStripMenuItem,
            this.toolStripSeparator,
            this.saveToolStripMenuItem,
            this.toolStripSeparator1,
            this.printToolStripMenuItem,
            this.printPreviewToolStripMenuItem,
            this.toolStripSeparator2,
            this.exitToolStripMenuItem});
          this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
          this.fileToolStripMenuItem.Size = new System.Drawing.Size(40, 22);
          this.fileToolStripMenuItem.Text = "&File";
          // 
          // newToolStripMenuItem
          // 
          this.newToolStripMenuItem.Enabled = false;
          this.newToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripMenuItem.Image")));
          this.newToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.newToolStripMenuItem.Name = "newToolStripMenuItem";
          this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
          this.newToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
          this.newToolStripMenuItem.Text = "&New";
          this.newToolStripMenuItem.ToolTipText = "New is not yet implementd. Enter data into dialog boxes.";
          this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click);
          // 
          // openToolStripMenuItem
          // 
          this.openToolStripMenuItem.Enabled = false;
          this.openToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripMenuItem.Image")));
          this.openToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.openToolStripMenuItem.Name = "openToolStripMenuItem";
          this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
          this.openToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
          this.openToolStripMenuItem.Text = "&Open";
          this.openToolStripMenuItem.ToolTipText = "Open is not yet implementd. Enter data into dialog boxes.";
          this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
          // 
          // toolStripSeparator
          // 
          this.toolStripSeparator.Name = "toolStripSeparator";
          this.toolStripSeparator.Size = new System.Drawing.Size(174, 6);
          // 
          // saveToolStripMenuItem
          // 
          this.saveToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
          this.saveToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
          this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
          this.saveToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
          this.saveToolStripMenuItem.Text = "&Save";
          this.saveToolStripMenuItem.ToolTipText = "Save all values, input and output, to a file.";
          this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
          // 
          // toolStripSeparator1
          // 
          this.toolStripSeparator1.Name = "toolStripSeparator1";
          this.toolStripSeparator1.Size = new System.Drawing.Size(174, 6);
          // 
          // printToolStripMenuItem
          // 
          this.printToolStripMenuItem.Enabled = false;
          this.printToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printToolStripMenuItem.Image")));
          this.printToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.printToolStripMenuItem.Name = "printToolStripMenuItem";
          this.printToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
          this.printToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
          this.printToolStripMenuItem.Text = "&Print";
          this.printToolStripMenuItem.ToolTipText = "Printing not yet available.  Output to a file and print that instead.";
          this.printToolStripMenuItem.Click += new System.EventHandler(this.printToolStripMenuItem_Click);
          // 
          // printPreviewToolStripMenuItem
          // 
          this.printPreviewToolStripMenuItem.Enabled = false;
          this.printPreviewToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printPreviewToolStripMenuItem.Image")));
          this.printPreviewToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.printPreviewToolStripMenuItem.Name = "printPreviewToolStripMenuItem";
          this.printPreviewToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
          this.printPreviewToolStripMenuItem.Text = "Print Pre&view";
          this.printPreviewToolStripMenuItem.ToolTipText = "Printing not yet available.  Output to a file and print that instead.";
          this.printPreviewToolStripMenuItem.Visible = false;
          this.printPreviewToolStripMenuItem.Click += new System.EventHandler(this.printPreviewToolStripMenuItem_Click);
          // 
          // toolStripSeparator2
          // 
          this.toolStripSeparator2.Name = "toolStripSeparator2";
          this.toolStripSeparator2.Size = new System.Drawing.Size(174, 6);
          // 
          // exitToolStripMenuItem
          // 
          this.exitToolStripMenuItem.AutoToolTip = true;
          this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
          this.exitToolStripMenuItem.Size = new System.Drawing.Size(177, 22);
          this.exitToolStripMenuItem.Text = "E&xit";
          this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
          // 
          // editToolStripMenuItem
          // 
          this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.undoToolStripMenuItem,
            this.redoToolStripMenuItem,
            this.toolStripSeparator3,
            this.cutToolStripMenuItem,
            this.copyToolStripMenuItem,
            this.pasteToolStripMenuItem,
            this.toolStripSeparator4,
            this.selectAllToolStripMenuItem});
          this.editToolStripMenuItem.Enabled = false;
          this.editToolStripMenuItem.Name = "editToolStripMenuItem";
          this.editToolStripMenuItem.Size = new System.Drawing.Size(43, 22);
          this.editToolStripMenuItem.Text = "&Edit";
          this.editToolStripMenuItem.Visible = false;
          // 
          // undoToolStripMenuItem
          // 
          this.undoToolStripMenuItem.Name = "undoToolStripMenuItem";
          this.undoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
          this.undoToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
          this.undoToolStripMenuItem.Text = "&Undo";
          // 
          // redoToolStripMenuItem
          // 
          this.redoToolStripMenuItem.Name = "redoToolStripMenuItem";
          this.redoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
          this.redoToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
          this.redoToolStripMenuItem.Text = "&Redo";
          // 
          // toolStripSeparator3
          // 
          this.toolStripSeparator3.Name = "toolStripSeparator3";
          this.toolStripSeparator3.Size = new System.Drawing.Size(173, 6);
          // 
          // cutToolStripMenuItem
          // 
          this.cutToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("cutToolStripMenuItem.Image")));
          this.cutToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.cutToolStripMenuItem.Name = "cutToolStripMenuItem";
          this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
          this.cutToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
          this.cutToolStripMenuItem.Text = "Cu&t";
          // 
          // copyToolStripMenuItem
          // 
          this.copyToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("copyToolStripMenuItem.Image")));
          this.copyToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
          this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
          this.copyToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
          this.copyToolStripMenuItem.Text = "&Copy";
          // 
          // pasteToolStripMenuItem
          // 
          this.pasteToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("pasteToolStripMenuItem.Image")));
          this.pasteToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta;
          this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
          this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
          this.pasteToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
          this.pasteToolStripMenuItem.Text = "&Paste";
          // 
          // toolStripSeparator4
          // 
          this.toolStripSeparator4.Name = "toolStripSeparator4";
          this.toolStripSeparator4.Size = new System.Drawing.Size(173, 6);
          // 
          // selectAllToolStripMenuItem
          // 
          this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
          this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(176, 22);
          this.selectAllToolStripMenuItem.Text = "Select &All";
          // 
          // helpToolStripMenuItem
          // 
          this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.contentsToolStripMenuItem,
            this.toolStripSeparator5,
            this.aboutToolStripMenuItem});
          this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
          this.helpToolStripMenuItem.Size = new System.Drawing.Size(48, 22);
          this.helpToolStripMenuItem.Text = "&Help";
          // 
          // contentsToolStripMenuItem
          // 
          this.contentsToolStripMenuItem.AutoToolTip = true;
          this.contentsToolStripMenuItem.Name = "contentsToolStripMenuItem";
          this.contentsToolStripMenuItem.Size = new System.Drawing.Size(149, 22);
          this.contentsToolStripMenuItem.Text = "&Contents";
          this.contentsToolStripMenuItem.Click += new System.EventHandler(this.contentsToolStripMenuItem_Click);
          // 
          // toolStripSeparator5
          // 
          this.toolStripSeparator5.Name = "toolStripSeparator5";
          this.toolStripSeparator5.Size = new System.Drawing.Size(146, 6);
          // 
          // aboutToolStripMenuItem
          // 
          this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
          this.aboutToolStripMenuItem.Size = new System.Drawing.Size(149, 22);
          this.aboutToolStripMenuItem.Text = "&About...";
          this.aboutToolStripMenuItem.ToolTipText = "About this program";
          this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
          // 
          // customizeToolStripMenuItem
          // 
          this.customizeToolStripMenuItem.Name = "customizeToolStripMenuItem";
          this.customizeToolStripMenuItem.Size = new System.Drawing.Size(32, 19);
          this.customizeToolStripMenuItem.Text = "&Customize";
          // 
          // saveFileDialog
          // 
          this.saveFileDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.saveFileDialog1_FileOk);
          // 
          // DistexForm
          // 
          this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F);
          this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
          this.BackColor = System.Drawing.SystemColors.ControlLight;
          this.ClientSize = new System.Drawing.Size(642, 611);
          this.Controls.Add(this.propertiesTab);
          this.Controls.Add(this.menuStrip1);
          this.Font = new System.Drawing.Font("Tahoma", 8.400001F);
          this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
          this.MainMenuStrip = this.menuStrip1;
          this.Margin = new System.Windows.Forms.Padding(4);
          this.MaximizeBox = false;
          this.MinimumSize = new System.Drawing.Size(650, 645);
          this.Name = "DistexForm";
          this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
          this.Text = "Statistical Distribution Explorer";
          this.toolTip1.SetToolTip(this, "Statistical Distribution Explorer main form");
          this.Activated += new System.EventHandler(this.DistexForm_Activated);
          this.Load += new System.EventHandler(this.Form_Load);
          this.propertiesTab.ResumeLayout(false);
          this.DistributionTab.ResumeLayout(false);
          this.DistributionTab.PerformLayout();
          this.PropertiesTabPage.ResumeLayout(false);
          this.PropertiesTabPage.PerformLayout();
          this.cdfTabPage.ResumeLayout(false);
          ((System.ComponentModel.ISupportInitialize)(this.CDF_data)).EndInit();
          this.QuantileTabPage.ResumeLayout(false);
          ((System.ComponentModel.ISupportInitialize)(this.QuantileData)).EndInit();
          this.menuStrip1.ResumeLayout(false);
          this.menuStrip1.PerformLayout();
          this.ResumeLayout(false);
          this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.TabControl propertiesTab;
        private System.Windows.Forms.TabPage DistributionTab;
        private System.Windows.Forms.TabPage PropertiesTabPage;
        private System.Windows.Forms.Label distributionNameLabel;
        private System.Windows.Forms.Label parameter2Label;
        private System.Windows.Forms.Label parameter1Label;
        private System.Windows.Forms.TextBox parameter2;
        private System.Windows.Forms.TextBox parameter1;
        private System.Windows.Forms.ComboBox distribution;
        private System.Windows.Forms.Label standard_deviation;
        private System.Windows.Forms.Label stddevLabel;
        private System.Windows.Forms.Label variance;
        private System.Windows.Forms.Label varianceLabel;
        private System.Windows.Forms.Label medianLabel;
        private System.Windows.Forms.Label mode;
        private System.Windows.Forms.Label mean;
        private System.Windows.Forms.Label meanLabel;
        private System.Windows.Forms.TabPage cdfTabPage;
        private System.Windows.Forms.DataGridView CDF_data;
        private System.Windows.Forms.DataGridViewTextBoxColumn RandomVariable;
        private System.Windows.Forms.DataGridViewTextBoxColumn PDF;
        private System.Windows.Forms.DataGridViewTextBoxColumn CDF;
        private System.Windows.Forms.DataGridViewTextBoxColumn CCDF;
        private System.Windows.Forms.TabPage QuantileTabPage;
        private System.Windows.Forms.DataGridView QuantileData;
        private System.Windows.Forms.DataGridViewTextBoxColumn RiskLevel;
        private System.Windows.Forms.DataGridViewTextBoxColumn LowerCriticalValue;
        private System.Windows.Forms.DataGridViewTextBoxColumn UpperCriticalValue;
        private System.Windows.Forms.MenuStrip menuStrip1;
        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
        private System.Windows.Forms.ToolStripSeparator toolStripSeparator;
        private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
        private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
        private System.Windows.Forms.ToolStripMenuItem printToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem printPreviewToolStripMenuItem;
        private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
        private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem;
        private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
        private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem;
        private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
        private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem customizeToolStripMenuItem;
        private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem contentsToolStripMenuItem;
        private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
        private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
        private System.Windows.Forms.Label median;
        private System.Windows.Forms.Label skewness;
        private System.Windows.Forms.Label skewnessLabel;
        private System.Windows.Forms.Label kurtosis;
        private System.Windows.Forms.Label kurtosisLabel;
        private System.Windows.Forms.Label kurtosis_excess;
        private System.Windows.Forms.Label kurtosisExcessLabel;
        private System.Windows.Forms.Label modeLabel;
        private System.Windows.Forms.ToolTip toolTip1;
        private System.Windows.Forms.Label CVlabel;
        private System.Windows.Forms.Label coefficient_of_variation;
        private System.Windows.Forms.Label parameter3Label;
        private System.Windows.Forms.TextBox parameter3;
      private System.Windows.Forms.Label parameterLabel3;
      private System.Windows.Forms.Label parameterLabel2;
      private System.Windows.Forms.Label parameterLabel1;
      private System.Windows.Forms.Label DistributionLabel;
      private System.Windows.Forms.Label parameter3ValueLabel;
      private System.Windows.Forms.Label parameter2ValueLabel;
      private System.Windows.Forms.Label parameter1ValueLabel;
      private System.Windows.Forms.Label distributionValueLabel;
      private System.Windows.Forms.SaveFileDialog saveFileDialog;
      private System.Windows.Forms.Label supportLabel;
      private System.Windows.Forms.Label rangeGreatestLabel;
      private System.Windows.Forms.Label rangeLowestLabel;
      private System.Windows.Forms.Label rangeLabel;
      private System.Windows.Forms.Label supportUpperLabel;
      private System.Windows.Forms.Label supportLowerLabel;
      private System.Windows.Forms.Label toLabel2;
      private System.Windows.Forms.Label toLabel1;
    }
}

