Joey 1 mesiac pred
rodič
commit
691fc18eb0
5 zmenil súbory, kde vykonal 588 pridanie a 0 odobranie
  1. 85 0
      ContactTask.cs
  2. 46 0
      Login.cs
  3. 54 0
      Program.cs
  4. 283 0
      UIContactTask.Designer.cs
  5. 120 0
      UIContactTask.resx

+ 85 - 0
ContactTask.cs

@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static DataManager.UIConstants;
+
+namespace DataManager
+{
+    public class ContactTask
+    {
+        private int userId; // 当前用户,注意:TA未必是任务所分配的用户
+        private int taskId;
+        private string companyId;
+        private string companyShortName;
+        private DateTime taskDate;
+        private short taskType;
+        private sbyte isvalid;
+        private sbyte priority;
+        private DateTime? followUpDate;
+        private sbyte? companyAssetSize;
+        private int? creatorId;
+        private string creatorName;
+        private DateTime? createTime;
+        private int? updatorId;
+        private string updaterName;
+        private DateTime? updateTime;
+
+
+        public ContactTask()
+        {
+
+        }
+
+        public ContactTask(int userId, int taskId, string companyId, string companyShortName, DateTime taskDate, short taskType, sbyte isvalid, sbyte priority,
+                           DateTime? followUpDate, sbyte? companyAssetSize, int? creatorId, string creatorName, DateTime? createTime,
+                           int? updatorId, string updaterName, DateTime? updateTime)
+        {
+            UserId = userId;
+            TaskId = taskId;
+            CompanyId = companyId;
+            CompanyShortName = companyShortName;
+            TaskDate = taskDate;
+            TaskType = taskType;
+            Isvalid = isvalid;
+            Priority = priority;
+            FollowUpDate = followUpDate;
+            CompanyAssetSize = companyAssetSize;
+            CreatorId = creatorId;
+            CreatorName = creatorName;
+            CreateTime = createTime;
+            UpdatorId = updatorId;
+            UpdaterName = updaterName;
+            UpdateTime = updateTime;
+
+        }
+
+        public int SaveToSQL(int userId)
+        {
+            int task_id = 0;
+            
+            DataAccess.Set_dm_contact_task(taskId, companyId, taskDate, taskType, Isvalid, Priority, FollowUpDate, userId, out task_id);
+
+            return task_id;
+        }
+
+        public int UserId { get => userId; set => userId = value; }
+        public int TaskId { get => taskId; set => taskId = value; }
+        public string CompanyId { get => companyId; set => companyId = value; }
+        public string CompanyShortName { get => companyShortName; set => companyShortName = value; }
+        public DateTime TaskDate { get => taskDate; set => taskDate = value; }
+        public short TaskType { get => taskType; set => taskType = value; }
+        public sbyte Isvalid { get => isvalid; set => isvalid = value; }
+        public sbyte Priority { get => priority; set => priority = value; }
+        public DateTime? FollowUpDate { get => followUpDate; set => followUpDate = value; }
+        public sbyte? CompanyAssetSize { get => companyAssetSize; set => companyAssetSize = value; }
+        public int? CreatorId { get => creatorId; set => creatorId = value; }
+        public string CreatorName { get => creatorName; set => creatorName = value; }
+        public DateTime? CreateTime { get => createTime; set => createTime = value; }
+        public int? UpdatorId { get => updatorId; set => updatorId = value; }
+        public string UpdaterName { get => updaterName; set => updaterName = value; }
+        public DateTime? UpdateTime { get => updateTime; set => updateTime = value; }
+    }
+
+}

+ 46 - 0
Login.cs

@@ -0,0 +1,46 @@
+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;
+
+namespace DataManager
+{
+    public partial class Login : Form
+    {
+        public Login()
+        {
+            InitializeComponent();
+        }
+
+        private void btnLogin_Click(object sender, EventArgs e)
+        {
+
+            string account = txtAccount.Text.Trim();
+
+            if (account != null && account.Length == 11)
+            {
+                DataTable dt = DataAccess.Get_cm_user_by_cellphone(account);
+                if (dt != null && dt.Rows.Count > 0)
+                {
+
+                    UIConstants.user.UserId = int.Parse(dt.Rows[0]["userid"].ToString());
+                    UIConstants.user.UserName = dt.Rows[0]["username"].ToString();
+                    UIConstants.user.OrgId = int.Parse(dt.Rows[0]["org_id"].ToString());
+
+                    this.DialogResult = DialogResult.OK;
+                }
+                else
+                {
+                    MessageBox.Show("登录名不正确,请重新输入");
+                    this.txtAccount.Focus();
+                }
+            }
+
+        }
+    }
+}

+ 54 - 0
Program.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Security.Cryptography.X509Certificates;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace DataManager
+{
+    internal static class Program
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+
+            if (ConfigurationManager.AppSettings["bypassLogin"] != "true")
+            {
+                // 正式发布时的登录页面
+                Login login = new Login();
+
+                if (login.ShowDialog() == DialogResult.OK)
+                {
+                    if (UIConstants.user.UserId > 0)
+                    {
+                        Application.Run(new frmDataManager(UIConstants.user.UserId));
+                    }
+                    else
+                    {
+                        MessageBox.Show("找不到用户,奇了个怪");
+                        Application.Exit();
+                    }
+                }
+                else
+                {
+
+                    Application.Exit();
+                }
+            }
+            else 
+            { 
+                // 调试时跳过登录的代码
+                UIConstants.user.UserId = 123;
+                Application.Run(new frmDataManager(UIConstants.user.UserId));
+            }
+        
+        }
+    }
+}

+ 283 - 0
UIContactTask.Designer.cs

@@ -0,0 +1,283 @@
+namespace DataManager
+{
+    partial class frmContactTask
+    {
+        /// <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.btnSaveTask = new System.Windows.Forms.Button();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.grdCompany = new System.Windows.Forms.DataGridView();
+            this.btnCompanySearch = new System.Windows.Forms.Button();
+            this.dtpFollowUpDate = new System.Windows.Forms.DateTimePicker();
+            this.dtpTaskDate = new System.Windows.Forms.DateTimePicker();
+            this.txtMemo = new System.Windows.Forms.TextBox();
+            this.label7 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
+            this.cmbIsValid = new System.Windows.Forms.ComboBox();
+            this.cmbPriority = new System.Windows.Forms.ComboBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.cmbTaskType = new System.Windows.Forms.ComboBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txtCompanyShortName = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.btnDelTask = new System.Windows.Forms.Button();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.grdCompany)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // btnSaveTask
+            // 
+            this.btnSaveTask.Location = new System.Drawing.Point(529, 318);
+            this.btnSaveTask.Name = "btnSaveTask";
+            this.btnSaveTask.Size = new System.Drawing.Size(75, 28);
+            this.btnSaveTask.TabIndex = 1;
+            this.btnSaveTask.Text = "保 存";
+            this.btnSaveTask.UseVisualStyleBackColor = true;
+            this.btnSaveTask.Click += new System.EventHandler(this.btnSaveTask_Click);
+            // 
+            // panel1
+            // 
+            this.panel1.BackColor = System.Drawing.SystemColors.ControlLight;
+            this.panel1.Controls.Add(this.grdCompany);
+            this.panel1.Controls.Add(this.btnCompanySearch);
+            this.panel1.Controls.Add(this.dtpFollowUpDate);
+            this.panel1.Controls.Add(this.dtpTaskDate);
+            this.panel1.Controls.Add(this.txtMemo);
+            this.panel1.Controls.Add(this.label7);
+            this.panel1.Controls.Add(this.label6);
+            this.panel1.Controls.Add(this.cmbIsValid);
+            this.panel1.Controls.Add(this.cmbPriority);
+            this.panel1.Controls.Add(this.label5);
+            this.panel1.Controls.Add(this.label4);
+            this.panel1.Controls.Add(this.label3);
+            this.panel1.Controls.Add(this.cmbTaskType);
+            this.panel1.Controls.Add(this.label2);
+            this.panel1.Controls.Add(this.txtCompanyShortName);
+            this.panel1.Controls.Add(this.label1);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(643, 291);
+            this.panel1.TabIndex = 2;
+            // 
+            // grdCompany
+            // 
+            this.grdCompany.AllowUserToAddRows = false;
+            this.grdCompany.AllowUserToDeleteRows = false;
+            this.grdCompany.AllowUserToResizeRows = false;
+            this.grdCompany.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.grdCompany.ColumnHeadersVisible = false;
+            this.grdCompany.ImeMode = System.Windows.Forms.ImeMode.Off;
+            this.grdCompany.Location = new System.Drawing.Point(100, 104);
+            this.grdCompany.Name = "grdCompany";
+            this.grdCompany.ReadOnly = true;
+            this.grdCompany.RowHeadersVisible = false;
+            this.grdCompany.RowTemplate.Height = 23;
+            this.grdCompany.Size = new System.Drawing.Size(240, 150);
+            this.grdCompany.TabIndex = 16;
+            this.grdCompany.Visible = false;
+            this.grdCompany.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.grdCompany_CellContentClick);
+            // 
+            // btnCompanySearch
+            // 
+            this.btnCompanySearch.BackColor = System.Drawing.Color.SkyBlue;
+            this.btnCompanySearch.Location = new System.Drawing.Point(296, 74);
+            this.btnCompanySearch.Name = "btnCompanySearch";
+            this.btnCompanySearch.Size = new System.Drawing.Size(60, 25);
+            this.btnCompanySearch.TabIndex = 4;
+            this.btnCompanySearch.Text = "搜";
+            this.btnCompanySearch.UseVisualStyleBackColor = false;
+            this.btnCompanySearch.Click += new System.EventHandler(this.btnCompanySearch_Click);
+            // 
+            // dtpFollowUpDate
+            // 
+            this.dtpFollowUpDate.Location = new System.Drawing.Point(483, 125);
+            this.dtpFollowUpDate.Name = "dtpFollowUpDate";
+            this.dtpFollowUpDate.Size = new System.Drawing.Size(121, 23);
+            this.dtpFollowUpDate.TabIndex = 15;
+            // 
+            // dtpTaskDate
+            // 
+            this.dtpTaskDate.Location = new System.Drawing.Point(483, 25);
+            this.dtpTaskDate.Name = "dtpTaskDate";
+            this.dtpTaskDate.Size = new System.Drawing.Size(121, 23);
+            this.dtpTaskDate.TabIndex = 14;
+            // 
+            // txtMemo
+            // 
+            this.txtMemo.Location = new System.Drawing.Point(100, 175);
+            this.txtMemo.Multiline = true;
+            this.txtMemo.Name = "txtMemo";
+            this.txtMemo.Size = new System.Drawing.Size(504, 90);
+            this.txtMemo.TabIndex = 13;
+            // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Location = new System.Drawing.Point(33, 178);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(32, 17);
+            this.label7.TabIndex = 12;
+            this.label7.Text = "备注";
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(411, 129);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(44, 17);
+            this.label6.TabIndex = 10;
+            this.label6.Text = "跟进日";
+            // 
+            // cmbIsValid
+            // 
+            this.cmbIsValid.FormattingEnabled = true;
+            this.cmbIsValid.Location = new System.Drawing.Point(100, 125);
+            this.cmbIsValid.Name = "cmbIsValid";
+            this.cmbIsValid.Size = new System.Drawing.Size(121, 25);
+            this.cmbIsValid.TabIndex = 9;
+            // 
+            // cmbPriority
+            // 
+            this.cmbPriority.FormattingEnabled = true;
+            this.cmbPriority.Location = new System.Drawing.Point(483, 75);
+            this.cmbPriority.Name = "cmbPriority";
+            this.cmbPriority.Size = new System.Drawing.Size(121, 25);
+            this.cmbPriority.TabIndex = 8;
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(411, 78);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(44, 17);
+            this.label5.TabIndex = 7;
+            this.label5.Text = "优先级";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(33, 129);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(32, 17);
+            this.label4.TabIndex = 6;
+            this.label4.Text = "状态";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(411, 29);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(32, 17);
+            this.label3.TabIndex = 4;
+            this.label3.Text = "日期";
+            // 
+            // cmbTaskType
+            // 
+            this.cmbTaskType.FormattingEnabled = true;
+            this.cmbTaskType.Location = new System.Drawing.Point(100, 25);
+            this.cmbTaskType.Name = "cmbTaskType";
+            this.cmbTaskType.Size = new System.Drawing.Size(121, 25);
+            this.cmbTaskType.TabIndex = 3;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(33, 78);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(32, 17);
+            this.label2.TabIndex = 2;
+            this.label2.Text = "公司";
+            // 
+            // txtCompanyShortName
+            // 
+            this.txtCompanyShortName.Location = new System.Drawing.Point(100, 75);
+            this.txtCompanyShortName.Name = "txtCompanyShortName";
+            this.txtCompanyShortName.Size = new System.Drawing.Size(197, 23);
+            this.txtCompanyShortName.TabIndex = 1;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(33, 29);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(32, 17);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "任务";
+            // 
+            // btnDelTask
+            // 
+            this.btnDelTask.Location = new System.Drawing.Point(36, 318);
+            this.btnDelTask.Name = "btnDelTask";
+            this.btnDelTask.Size = new System.Drawing.Size(75, 28);
+            this.btnDelTask.TabIndex = 3;
+            this.btnDelTask.Text = "删 除";
+            this.btnDelTask.UseVisualStyleBackColor = true;
+            // 
+            // frmContactTask
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(643, 362);
+            this.Controls.Add(this.btnDelTask);
+            this.Controls.Add(this.panel1);
+            this.Controls.Add(this.btnSaveTask);
+            this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.Margin = new System.Windows.Forms.Padding(4);
+            this.Name = "frmContactTask";
+            this.Text = "联系任务";
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.grdCompany)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private System.Windows.Forms.Button btnSaveTask;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.ComboBox cmbTaskType;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox txtCompanyShortName;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.ComboBox cmbIsValid;
+        private System.Windows.Forms.ComboBox cmbPriority;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.TextBox txtMemo;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.Button btnDelTask;
+        private System.Windows.Forms.DateTimePicker dtpFollowUpDate;
+        private System.Windows.Forms.DateTimePicker dtpTaskDate;
+        private System.Windows.Forms.Button btnCompanySearch;
+        private System.Windows.Forms.DataGridView grdCompany;
+    }
+}

+ 120 - 0
UIContactTask.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>