Browse Source

测量线程调试程序

HaoShuang 5 years ago
parent
commit
76064d6911

+ 6 - 0
ManulDo/App.config

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
+    </startup>
+</configuration>

+ 429 - 0
ManulDo/MainForm.Designer.cs

@@ -0,0 +1,429 @@
+namespace WindowsFormsApp1
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.btnOpenFile = new System.Windows.Forms.Button();
+            this.btnSaveFile = new System.Windows.Forms.Button();
+            this.btnNewFile = new System.Windows.Forms.Button();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.button1 = new System.Windows.Forms.Button();
+            this.button7 = new System.Windows.Forms.Button();
+            this.button6 = new System.Windows.Forms.Button();
+            this.button5 = new System.Windows.Forms.Button();
+            this.button4 = new System.Windows.Forms.Button();
+            this.button3 = new System.Windows.Forms.Button();
+            this.btnLoadCutHoles = new System.Windows.Forms.Button();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.btParamOK = new System.Windows.Forms.Button();
+            this.btFIB = new System.Windows.Forms.Button();
+            this.tBFIBTemp = new System.Windows.Forms.TextBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.tBSampleName = new System.Windows.Forms.TextBox();
+            this.cBIsManul = new System.Windows.Forms.CheckBox();
+            this.cBIsPT = new System.Windows.Forms.CheckBox();
+            this.CutHoleGridView = new System.Windows.Forms.DataGridView();
+            this.Name = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.X = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Y = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Z = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.M = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.R = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.T = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.listmsg = new System.Windows.Forms.ListBox();
+            this.groupBox1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.CutHoleGridView)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.btnOpenFile);
+            this.groupBox1.Controls.Add(this.btnSaveFile);
+            this.groupBox1.Controls.Add(this.btnNewFile);
+            this.groupBox1.Location = new System.Drawing.Point(11, 10);
+            this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBox1.Size = new System.Drawing.Size(404, 67);
+            this.groupBox1.TabIndex = 1;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "测量文件操作";
+            // 
+            // btnOpenFile
+            // 
+            this.btnOpenFile.Location = new System.Drawing.Point(209, 23);
+            this.btnOpenFile.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.btnOpenFile.Name = "btnOpenFile";
+            this.btnOpenFile.Size = new System.Drawing.Size(91, 31);
+            this.btnOpenFile.TabIndex = 2;
+            this.btnOpenFile.Text = "打开";
+            this.btnOpenFile.UseVisualStyleBackColor = true;
+            this.btnOpenFile.Click += new System.EventHandler(this.btnOpenFile_Click);
+            // 
+            // btnSaveFile
+            // 
+            this.btnSaveFile.Location = new System.Drawing.Point(113, 23);
+            this.btnSaveFile.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.btnSaveFile.Name = "btnSaveFile";
+            this.btnSaveFile.Size = new System.Drawing.Size(91, 31);
+            this.btnSaveFile.TabIndex = 1;
+            this.btnSaveFile.Text = "保存";
+            this.btnSaveFile.UseVisualStyleBackColor = true;
+            this.btnSaveFile.Click += new System.EventHandler(this.btnSaveFile_Click);
+            // 
+            // btnNewFile
+            // 
+            this.btnNewFile.Location = new System.Drawing.Point(17, 23);
+            this.btnNewFile.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.btnNewFile.Name = "btnNewFile";
+            this.btnNewFile.Size = new System.Drawing.Size(91, 31);
+            this.btnNewFile.TabIndex = 0;
+            this.btnNewFile.Text = "新建";
+            this.btnNewFile.UseVisualStyleBackColor = true;
+            this.btnNewFile.Click += new System.EventHandler(this.btnNewFile_Click);
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.button1);
+            this.groupBox2.Controls.Add(this.button7);
+            this.groupBox2.Controls.Add(this.button6);
+            this.groupBox2.Controls.Add(this.button5);
+            this.groupBox2.Controls.Add(this.button4);
+            this.groupBox2.Controls.Add(this.button3);
+            this.groupBox2.Controls.Add(this.btnLoadCutHoles);
+            this.groupBox2.Location = new System.Drawing.Point(11, 82);
+            this.groupBox2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBox2.Size = new System.Drawing.Size(404, 108);
+            this.groupBox2.TabIndex = 2;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "测量流程";
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(305, 67);
+            this.button1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(91, 31);
+            this.button1.TabIndex = 6;
+            this.button1.Text = "截面";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // button7
+            // 
+            this.button7.Location = new System.Drawing.Point(209, 67);
+            this.button7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.button7.Name = "button7";
+            this.button7.Size = new System.Drawing.Size(91, 31);
+            this.button7.TabIndex = 5;
+            this.button7.Text = "分析位置";
+            this.button7.UseVisualStyleBackColor = true;
+            this.button7.Click += new System.EventHandler(this.button7_Click);
+            // 
+            // button6
+            // 
+            this.button6.Location = new System.Drawing.Point(113, 67);
+            this.button6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.button6.Name = "button6";
+            this.button6.Size = new System.Drawing.Size(91, 31);
+            this.button6.TabIndex = 4;
+            this.button6.Text = "切割";
+            this.button6.UseVisualStyleBackColor = true;
+            this.button6.Click += new System.EventHandler(this.button6_Click);
+            // 
+            // button5
+            // 
+            this.button5.Location = new System.Drawing.Point(17, 67);
+            this.button5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.button5.Name = "button5";
+            this.button5.Size = new System.Drawing.Size(91, 31);
+            this.button5.TabIndex = 3;
+            this.button5.Text = "定位";
+            this.button5.UseVisualStyleBackColor = true;
+            this.button5.Click += new System.EventHandler(this.button5_Click);
+            // 
+            // button4
+            // 
+            this.button4.Location = new System.Drawing.Point(209, 32);
+            this.button4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.button4.Name = "button4";
+            this.button4.Size = new System.Drawing.Size(91, 31);
+            this.button4.TabIndex = 2;
+            this.button4.Text = "停止";
+            this.button4.UseVisualStyleBackColor = true;
+            this.button4.Click += new System.EventHandler(this.button4_Click);
+            // 
+            // button3
+            // 
+            this.button3.Location = new System.Drawing.Point(113, 32);
+            this.button3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.button3.Name = "button3";
+            this.button3.Size = new System.Drawing.Size(91, 31);
+            this.button3.TabIndex = 1;
+            this.button3.Text = "启动";
+            this.button3.UseVisualStyleBackColor = true;
+            this.button3.Click += new System.EventHandler(this.button3_Click);
+            // 
+            // btnLoadCutHoles
+            // 
+            this.btnLoadCutHoles.Location = new System.Drawing.Point(17, 32);
+            this.btnLoadCutHoles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.btnLoadCutHoles.Name = "btnLoadCutHoles";
+            this.btnLoadCutHoles.Size = new System.Drawing.Size(91, 31);
+            this.btnLoadCutHoles.TabIndex = 0;
+            this.btnLoadCutHoles.Text = "导入切孔";
+            this.btnLoadCutHoles.UseVisualStyleBackColor = true;
+            this.btnLoadCutHoles.Click += new System.EventHandler(this.btnLoadCutHoles_Click);
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.btParamOK);
+            this.groupBox3.Controls.Add(this.btFIB);
+            this.groupBox3.Controls.Add(this.tBFIBTemp);
+            this.groupBox3.Controls.Add(this.label2);
+            this.groupBox3.Controls.Add(this.label1);
+            this.groupBox3.Controls.Add(this.tBSampleName);
+            this.groupBox3.Controls.Add(this.cBIsManul);
+            this.groupBox3.Controls.Add(this.cBIsPT);
+            this.groupBox3.Location = new System.Drawing.Point(12, 196);
+            this.groupBox3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.groupBox3.Size = new System.Drawing.Size(404, 91);
+            this.groupBox3.TabIndex = 3;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "测量参数";
+            // 
+            // btParamOK
+            // 
+            this.btParamOK.Location = new System.Drawing.Point(304, 56);
+            this.btParamOK.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.btParamOK.Name = "btParamOK";
+            this.btParamOK.Size = new System.Drawing.Size(91, 31);
+            this.btParamOK.TabIndex = 7;
+            this.btParamOK.Text = "确定";
+            this.btParamOK.UseVisualStyleBackColor = true;
+            this.btParamOK.Click += new System.EventHandler(this.btParamOK_Click);
+            // 
+            // btFIB
+            // 
+            this.btFIB.Location = new System.Drawing.Point(164, 50);
+            this.btFIB.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.btFIB.Name = "btFIB";
+            this.btFIB.Size = new System.Drawing.Size(38, 22);
+            this.btFIB.TabIndex = 6;
+            this.btFIB.Text = "...";
+            this.btFIB.UseVisualStyleBackColor = true;
+            this.btFIB.Click += new System.EventHandler(this.btFIB_Click);
+            // 
+            // tBFIBTemp
+            // 
+            this.tBFIBTemp.Location = new System.Drawing.Point(76, 49);
+            this.tBFIBTemp.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.tBFIBTemp.Name = "tBFIBTemp";
+            this.tBFIBTemp.ReadOnly = true;
+            this.tBFIBTemp.Size = new System.Drawing.Size(89, 25);
+            this.tBFIBTemp.TabIndex = 5;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(15, 57);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(61, 15);
+            this.label2.TabIndex = 4;
+            this.label2.Text = "FIB模板";
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(183, 26);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(67, 15);
+            this.label1.TabIndex = 3;
+            this.label1.Text = "样品名称";
+            // 
+            // tBSampleName
+            // 
+            this.tBSampleName.Location = new System.Drawing.Point(256, 23);
+            this.tBSampleName.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.tBSampleName.Name = "tBSampleName";
+            this.tBSampleName.Size = new System.Drawing.Size(89, 25);
+            this.tBSampleName.TabIndex = 2;
+            // 
+            // cBIsManul
+            // 
+            this.cBIsManul.AutoSize = true;
+            this.cBIsManul.Location = new System.Drawing.Point(84, 23);
+            this.cBIsManul.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.cBIsManul.Name = "cBIsManul";
+            this.cBIsManul.Size = new System.Drawing.Size(89, 19);
+            this.cBIsManul.TabIndex = 1;
+            this.cBIsManul.Text = "手动对焦";
+            this.cBIsManul.UseVisualStyleBackColor = true;
+            // 
+            // cBIsPT
+            // 
+            this.cBIsPT.AutoSize = true;
+            this.cBIsPT.Location = new System.Drawing.Point(16, 23);
+            this.cBIsPT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.cBIsPT.Name = "cBIsPT";
+            this.cBIsPT.Size = new System.Drawing.Size(60, 19);
+            this.cBIsPT.TabIndex = 0;
+            this.cBIsPT.Text = "有PT";
+            this.cBIsPT.UseVisualStyleBackColor = true;
+            // 
+            // CutHoleGridView
+            // 
+            dataGridViewCellStyle2.BackColor = System.Drawing.Color.Beige;
+            dataGridViewCellStyle2.Font = new System.Drawing.Font("Verdana", 8F, System.Drawing.FontStyle.Bold);
+            this.CutHoleGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
+            this.CutHoleGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.CutHoleGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Name,
+            this.X,
+            this.Y,
+            this.Z,
+            this.M,
+            this.R,
+            this.T});
+            this.CutHoleGridView.Location = new System.Drawing.Point(11, 292);
+            this.CutHoleGridView.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            this.CutHoleGridView.Name = "CutHoleGridView";
+            this.CutHoleGridView.ReadOnly = true;
+            this.CutHoleGridView.RowTemplate.Height = 30;
+            this.CutHoleGridView.Size = new System.Drawing.Size(690, 219);
+            this.CutHoleGridView.TabIndex = 16;
+            // 
+            // Name
+            // 
+            this.Name.Name = "Name";
+            this.Name.ReadOnly = true;
+            // 
+            // X
+            // 
+            this.X.Name = "X";
+            this.X.ReadOnly = true;
+            // 
+            // Y
+            // 
+            this.Y.Name = "Y";
+            this.Y.ReadOnly = true;
+            // 
+            // Z
+            // 
+            this.Z.Name = "Z";
+            this.Z.ReadOnly = true;
+            // 
+            // M
+            // 
+            this.M.Name = "M";
+            this.M.ReadOnly = true;
+            // 
+            // R
+            // 
+            this.R.Name = "R";
+            this.R.ReadOnly = true;
+            // 
+            // T
+            // 
+            this.T.Name = "T";
+            this.T.ReadOnly = true;
+            // 
+            // listmsg
+            // 
+            this.listmsg.FormattingEnabled = true;
+            this.listmsg.ItemHeight = 15;
+            this.listmsg.Location = new System.Drawing.Point(713, 10);
+            this.listmsg.Name = "listmsg";
+            this.listmsg.Size = new System.Drawing.Size(697, 604);
+            this.listmsg.TabIndex = 17;
+            // 
+            // MainForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1422, 628);
+            this.Controls.Add(this.listmsg);
+            this.Controls.Add(this.CutHoleGridView);
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+            //this.Name = "MainForm";
+            this.Text = "测量流程测试";
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox3.ResumeLayout(false);
+            this.groupBox3.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.CutHoleGridView)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.Button btnOpenFile;
+        private System.Windows.Forms.Button btnSaveFile;
+        private System.Windows.Forms.Button btnNewFile;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.Button button7;
+        private System.Windows.Forms.Button button6;
+        private System.Windows.Forms.Button button5;
+        private System.Windows.Forms.Button button4;
+        private System.Windows.Forms.Button button3;
+        private System.Windows.Forms.Button btnLoadCutHoles;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.CheckBox cBIsManul;
+        private System.Windows.Forms.CheckBox cBIsPT;
+        private System.Windows.Forms.TextBox tBFIBTemp;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox tBSampleName;
+        private System.Windows.Forms.Button btParamOK;
+        private System.Windows.Forms.Button btFIB;
+        private System.Windows.Forms.DataGridView CutHoleGridView;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Name;
+        private System.Windows.Forms.DataGridViewTextBoxColumn X;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Y;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Z;
+        private System.Windows.Forms.DataGridViewTextBoxColumn M;
+        private System.Windows.Forms.DataGridViewTextBoxColumn R;
+        private System.Windows.Forms.DataGridViewTextBoxColumn T;
+        private System.Windows.Forms.ListBox listmsg;
+    }
+}
+

+ 269 - 0
ManulDo/MainForm.cs

@@ -0,0 +1,269 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+using MeasureData;
+using MeasureThread;
+using FileManager;
+
+namespace WindowsFormsApp1
+{
+    public partial class MainForm : Form
+    {
+        #region 成员变量
+        private BackgroundWorker m_BackgroundWorker;// 申明后台对象
+        /// <summary>
+        /// 测量文件
+        /// </summary>
+        public MeasureFile m_MeasureFile;
+        
+        /// 测量线程  
+        public Measure m_Ms;
+        
+        #endregion
+        #region 构造函数
+        public MainForm()
+        {
+            InitializeComponent();
+
+            m_BackgroundWorker = new BackgroundWorker(); // 实例化后台对象 
+            m_BackgroundWorker.WorkerReportsProgress = true; // 设置可以通告进度 
+            m_BackgroundWorker.WorkerSupportsCancellation = true; // 设置可以取消 
+            m_BackgroundWorker.DoWork += new DoWorkEventHandler(DoWork);
+            m_BackgroundWorker.ProgressChanged += new ProgressChangedEventHandler(UpdateProgress);
+            m_BackgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork);
+
+            LogManager.InitManulLog();
+           
+
+        }
+        #endregion
+        #region 测量线程
+        void DoWork(object sender, DoWorkEventArgs e)
+        {
+            m_Ms = new Measure();
+            m_Ms.InitMeas(m_MeasureFile);
+            m_Ms.SendThreadStatus += new ThreadStatusHandler(displayMessage); //注册事件
+
+            //自动测量的全过程
+            m_Ms.DoMeasure();
+            //定位
+            //切割
+            //分析位置
+            //截面
+
+        }
+
+        public void displayMessage(object sender, ThreadStatusEventArgs e)
+        {
+            //主界面显示内容
+            this.BeginInvoke((Action)delegate
+            {
+                this.listmsg.Items.Add(e.Time.ToString() + e.State);
+            });
+        }
+
+        void UpdateProgress(object sender, ProgressChangedEventArgs e)
+        {
+        }
+        void CompletedWork(object sender, RunWorkerCompletedEventArgs e)
+        {
+        }
+        #endregion
+        #region 按钮操作
+        /// <summary>
+        /// 新建文件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void btnNewFile_Click(object sender, EventArgs e)
+        {
+            m_MeasureFile = new MeasureFile();
+            if (!m_MeasureFile.New())
+            {
+                return;
+            }
+            else
+            {
+                MessageBox.Show("新建测量文件成功。");
+            }
+        }
+
+        /// <summary>
+        /// 保存文件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void btnSaveFile_Click(object sender, EventArgs e)
+        {
+            if (m_MeasureFile == null)
+            {
+                MessageBox.Show("请新建一个测量文件");
+            }
+            else
+            {
+                m_MeasureFile.Save();                
+            }
+        }
+
+        /// <summary>
+        /// 打开文件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void btnOpenFile_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        /// <summary>
+        /// 停止
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button4_Click(object sender, EventArgs e)
+        {
+            if (m_BackgroundWorker.IsBusy)
+            {
+                m_BackgroundWorker.CancelAsync();
+            }
+
+        }
+
+        /// <summary>
+        /// 加载切割孔
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void btnLoadCutHoles_Click(object sender, EventArgs e)
+        {
+            if (m_MeasureFile == null)
+            {
+                MessageBox.Show("请新建一个测量文件");
+            }
+            else
+            {
+                if (!m_MeasureFile.GetCutHolesFromFile(""))
+                {
+                    MessageBox.Show("导入切孔失败");
+                }
+
+                this.CutHoleGridView.Rows.Clear();
+                List<CutHole> listHoles = m_MeasureFile.ListCutHole;
+                foreach (CutHole hole in listHoles)
+                {
+                    //在CutHoleGridView中,添加切孔信息
+                    int index = this.CutHoleGridView.Rows.Add();
+                    this.CutHoleGridView.Rows[index].Cells[0].Value = hole.HoleName;
+
+                    SemPosition pos = hole.Position;
+                    this.CutHoleGridView.Rows[index].Cells[1].Value = pos.X;
+                    this.CutHoleGridView.Rows[index].Cells[2].Value = pos.Y;
+                    this.CutHoleGridView.Rows[index].Cells[3].Value = pos.Z;
+                    this.CutHoleGridView.Rows[index].Cells[4].Value = pos.M;
+                    this.CutHoleGridView.Rows[index].Cells[5].Value = pos.R;
+                    this.CutHoleGridView.Rows[index].Cells[6].Value = pos.T;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 启动
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void button3_Click(object sender, EventArgs e)
+        {
+            if (m_MeasureFile == null)
+            {
+                MessageBox.Show("请新建一个测量文件");
+                listmsg.Items.Clear();
+            }
+            else
+            {
+                if (m_BackgroundWorker.IsBusy)
+                {
+                    MessageBox.Show("线程已经运行");
+                    return;
+                }
+                m_BackgroundWorker.RunWorkerAsync(this);
+            }
+        }
+
+        /// <summary>
+        /// 调区FIB模板
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void btFIB_Click(object sender, EventArgs e)
+        {
+            string FilePathName;
+            string fileNameWithoutExtension;
+            //新建一个文件对话框
+            OpenFileDialog pOpenFileDialog = new OpenFileDialog();
+            //设置对话框标题
+            pOpenFileDialog.Title = "选择模板文件";
+            //设置打开文件类型
+            pOpenFileDialog.Filter = "ely文件(*.ely)|*.ely";
+            //监测文件是否存在
+            pOpenFileDialog.CheckFileExists = true;
+            //文件打开后执行以下程序
+            if (pOpenFileDialog.ShowDialog() == DialogResult.OK)
+            {
+                FilePathName = System.IO.Path.GetFullPath(pOpenFileDialog.FileName);                             //绝对路径
+                fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(FilePathName);
+                this.tBFIBTemp.Text = fileNameWithoutExtension;
+            }
+        }
+
+        private void btParamOK_Click(object sender, EventArgs e)
+        {
+            if (m_MeasureFile == null)
+            {
+                MessageBox.Show("请新建一个测量文件");
+                this.listmsg.Items.Add("请新建一个测量文件");
+            }
+            else
+            {
+                m_MeasureFile.MParam.PT = this.cBIsPT.Checked;
+                m_MeasureFile.MParam.SampleName = this.tBSampleName.Text;
+                m_MeasureFile.MParam.FIBTemp = this.tBFIBTemp.Text;
+                m_MeasureFile.MParam.FocusMode = this.cBIsManul.Checked;
+
+                MessageBox.Show("参数设置成功");
+            }
+        }
+
+        #endregion
+
+        //定位操作
+        private void button5_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        //切割操作
+        private void button6_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        //分析位置操作
+        private void button7_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        //观测截面
+        private void button1_Click(object sender, EventArgs e)
+        {
+
+        }
+    }
+}

+ 120 - 0
ManulDo/MainForm.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 101 - 0
ManulDo/ManulDo.csproj

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{513BBFDA-D2A1-4D4F-ADD0-01A19485533A}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>WindowsFormsApp1</RootNamespace>
+    <AssemblyName>ManulDo</AssemblyName>
+    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <Deterministic>true</Deterministic>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\FileManager\FileManager.csproj">
+      <Project>{14c99f54-b3c2-47cf-adb3-e79fdd2d382f}</Project>
+      <Name>FileManager</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\MeasureData\MeasureData.csproj">
+      <Project>{12617585-8d9a-4ad4-b6c4-6894a48cee9e}</Project>
+      <Name>MeasureData</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\MeasureThread\MeasureThread.csproj">
+      <Project>{9a5851e4-73fd-48e1-876c-68bed40a0512}</Project>
+      <Name>MeasureThread</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\SmartSEMControl\SmartSEMControl.csproj">
+      <Project>{bf7f80b0-a6da-4470-a331-4c96057fc7fa}</Project>
+      <Name>SmartSEMControl</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>

+ 22 - 0
ManulDo/Program.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace WindowsFormsApp1
+{
+    static class Program
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new MainForm());
+        }
+    }
+}

+ 36 - 0
ManulDo/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("WindowsFormsApp1")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WindowsFormsApp1")]
+[assembly: AssemblyCopyright("Copyright ©  2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("513bbfda-d2a1-4d4f-add0-01a19485533a")]
+
+// 程序集的版本信息由下列四个值组成: 
+//
+//      主版本
+//      次版本
+//      生成号
+//      修订号
+//
+// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 71 - 0
ManulDo/Properties/Resources.Designer.cs

@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本: 4.0.30319.42000
+//
+//     对此文件的更改可能导致不正确的行为,如果
+//     重新生成代码,则所做更改将丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WindowsFormsApp1.Properties
+{
+
+
+    /// <summary>
+    ///   强类型资源类,用于查找本地化字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   返回此类使用的缓存 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsFormsApp1.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   覆盖当前线程的 CurrentUICulture 属性
+        ///   使用此强类型的资源类的资源查找。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 117 - 0
ManulDo/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 30 - 0
ManulDo/Properties/Settings.Designer.cs

@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WindowsFormsApp1.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
ManulDo/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>