浏览代码

FIX 心跳时间

张泳健 8 年前
父节点
当前提交
95e0f53328

+ 2 - 1
.gitignore 查看文件

@@ -40,4 +40,5 @@ GWSocketClient/obj/Release/GWSocketClient.AnaProtocol.resources
40 40
 GWSocketClientTests/bin
41 41
 GWSocketClientTests/obj
42 42
 packages/
43
-TestResults/
43
+TestResults/
44
+GWSocketClient/obj/

+ 33 - 33
GWSocketClient/Form1.Designer.cs 查看文件

@@ -31,6 +31,7 @@
31 31
             this.components = new System.ComponentModel.Container();
32 32
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
33 33
             this.groupBox1 = new System.Windows.Forms.GroupBox();
34
+            this.cbCCIDIsSource = new System.Windows.Forms.CheckBox();
34 35
             this.btnTextCmd = new System.Windows.Forms.Button();
35 36
             this.buttonCmdManager = new System.Windows.Forms.Button();
36 37
             this.label7 = new System.Windows.Forms.Label();
@@ -58,8 +59,6 @@
58 59
             this.ToolStripMenuItemHbStart = new System.Windows.Forms.ToolStripMenuItem();
59 60
             this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
60 61
             this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
61
-            this.ToolStripMenuItemHb30abc = new System.Windows.Forms.ToolStripMenuItem();
62
-            this.toolStripTextBoxHbtime = new System.Windows.Forms.ToolStripTextBox();
63 62
             this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
64 63
             this.ToolStripMenuItemLogHb = new System.Windows.Forms.ToolStripMenuItem();
65 64
             this.statusStrip1 = new System.Windows.Forms.StatusStrip();
@@ -73,7 +72,8 @@
73 72
             this.rightMenuCopyCmd = new System.Windows.Forms.ToolStripMenuItem();
74 73
             this.rightMenuClearInfo = new System.Windows.Forms.ToolStripMenuItem();
75 74
             this.timerHeartBeat = new System.Windows.Forms.Timer(this.components);
76
-            this.cbCCIDIsSource = new System.Windows.Forms.CheckBox();
75
+            this.toolStripMenuItemHBtime = new System.Windows.Forms.ToolStripMenuItem();
76
+            this.toolStripStatusLabelHbShow = new System.Windows.Forms.ToolStripStatusLabel();
77 77
             this.groupBox1.SuspendLayout();
78 78
             this.menuStrip1.SuspendLayout();
79 79
             this.statusStrip1.SuspendLayout();
@@ -114,6 +114,16 @@
114 114
             this.groupBox1.TabStop = false;
115 115
             this.groupBox1.Text = "基本信息栏";
116 116
             // 
117
+            // cbCCIDIsSource
118
+            // 
119
+            this.cbCCIDIsSource.AutoSize = true;
120
+            this.cbCCIDIsSource.Location = new System.Drawing.Point(625, 23);
121
+            this.cbCCIDIsSource.Name = "cbCCIDIsSource";
122
+            this.cbCCIDIsSource.Size = new System.Drawing.Size(82, 21);
123
+            this.cbCCIDIsSource.TabIndex = 19;
124
+            this.cbCCIDIsSource.Text = "CCID ? 源";
125
+            this.cbCCIDIsSource.UseVisualStyleBackColor = true;
126
+            // 
117 127
             // btnTextCmd
118 128
             // 
119 129
             this.btnTextCmd.Location = new System.Drawing.Point(596, 61);
@@ -343,8 +353,7 @@
343 353
             this.ToolStripMenuItemHbStart,
344 354
             this.toolStripSeparator1,
345 355
             this.toolStripSeparator3,
346
-            this.ToolStripMenuItemHb30abc,
347
-            this.toolStripTextBoxHbtime,
356
+            this.toolStripMenuItemHBtime,
348 357
             this.toolStripSeparator2,
349 358
             this.ToolStripMenuItemLogHb});
350 359
             this.心跳HToolStripMenuItem.Name = "心跳HToolStripMenuItem";
@@ -379,19 +388,6 @@
379 388
             this.toolStripSeparator3.Name = "toolStripSeparator3";
380 389
             this.toolStripSeparator3.Size = new System.Drawing.Size(193, 6);
381 390
             // 
382
-            // ToolStripMenuItemHb30abc
383
-            // 
384
-            this.ToolStripMenuItemHb30abc.Name = "ToolStripMenuItemHb30abc";
385
-            this.ToolStripMenuItemHb30abc.Size = new System.Drawing.Size(196, 22);
386
-            this.ToolStripMenuItemHb30abc.Text = "下面输入心跳时间";
387
-            // 
388
-            // toolStripTextBoxHbtime
389
-            // 
390
-            this.toolStripTextBoxHbtime.Name = "toolStripTextBoxHbtime";
391
-            this.toolStripTextBoxHbtime.Size = new System.Drawing.Size(100, 23);
392
-            this.toolStripTextBoxHbtime.Text = "5";
393
-            this.toolStripTextBoxHbtime.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.toolStripTextBoxHbtime_KeyPress);
394
-            // 
395 391
             // toolStripSeparator2
396 392
             // 
397 393
             this.toolStripSeparator2.Name = "toolStripSeparator2";
@@ -410,7 +406,8 @@
410 406
             this.toolStripStatusLabel1,
411 407
             this.tsslEquipmentAddress,
412 408
             this.toolStripStatusLabel2,
413
-            this.tsslCCIDLEN});
409
+            this.tsslCCIDLEN,
410
+            this.toolStripStatusLabelHbShow});
414 411
             this.statusStrip1.Location = new System.Drawing.Point(0, 883);
415 412
             this.statusStrip1.Name = "statusStrip1";
416 413
             this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 16, 0);
@@ -448,11 +445,11 @@
448 445
             | System.Windows.Forms.AnchorStyles.Left) 
449 446
             | System.Windows.Forms.AnchorStyles.Right)));
450 447
             this.groupBox2.Controls.Add(this.listBoxShow);
451
-            this.groupBox2.Location = new System.Drawing.Point(14, 561);
448
+            this.groupBox2.Location = new System.Drawing.Point(14, 380);
452 449
             this.groupBox2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
453 450
             this.groupBox2.Name = "groupBox2";
454 451
             this.groupBox2.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
455
-            this.groupBox2.Size = new System.Drawing.Size(1123, 309);
452
+            this.groupBox2.Size = new System.Drawing.Size(1123, 490);
456 453
             this.groupBox2.TabIndex = 13;
457 454
             this.groupBox2.TabStop = false;
458 455
             this.groupBox2.Text = "显示信息栏";
@@ -471,7 +468,7 @@
471 468
             this.listBoxShow.Location = new System.Drawing.Point(9, 28);
472 469
             this.listBoxShow.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
473 470
             this.listBoxShow.Name = "listBoxShow";
474
-            this.listBoxShow.Size = new System.Drawing.Size(1106, 274);
471
+            this.listBoxShow.Size = new System.Drawing.Size(1106, 454);
475 472
             this.listBoxShow.TabIndex = 0;
476 473
             this.listBoxShow.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBoxShow_DrawItem);
477 474
             this.listBoxShow.DoubleClick += new System.EventHandler(this.listBoxShow_DoubleClick);
@@ -500,18 +497,21 @@
500 497
             // 
501 498
             // timerHeartBeat
502 499
             // 
503
-            this.timerHeartBeat.Interval = 1000;
500
+            this.timerHeartBeat.Interval = 5000;
504 501
             this.timerHeartBeat.Tick += new System.EventHandler(this.timerHeartBeat_Tick);
505 502
             // 
506
-            // cbCCIDIsSource
503
+            // toolStripMenuItemHBtime
507 504
             // 
508
-            this.cbCCIDIsSource.AutoSize = true;
509
-            this.cbCCIDIsSource.Location = new System.Drawing.Point(625, 23);
510
-            this.cbCCIDIsSource.Name = "cbCCIDIsSource";
511
-            this.cbCCIDIsSource.Size = new System.Drawing.Size(82, 21);
512
-            this.cbCCIDIsSource.TabIndex = 19;
513
-            this.cbCCIDIsSource.Text = "CCID ? 源";
514
-            this.cbCCIDIsSource.UseVisualStyleBackColor = true;
505
+            this.toolStripMenuItemHBtime.Name = "toolStripMenuItemHBtime";
506
+            this.toolStripMenuItemHBtime.Size = new System.Drawing.Size(196, 22);
507
+            this.toolStripMenuItemHBtime.Text = "设置心跳间隔";
508
+            this.toolStripMenuItemHBtime.Click += new System.EventHandler(this.toolStripMenuItemHBtime_Click);
509
+            // 
510
+            // toolStripStatusLabelHbShow
511
+            // 
512
+            this.toolStripStatusLabelHbShow.Name = "toolStripStatusLabelHbShow";
513
+            this.toolStripStatusLabelHbShow.Size = new System.Drawing.Size(82, 17);
514
+            this.toolStripStatusLabelHbShow.Text = "心跳时间: 5秒";
515 515
             // 
516 516
             // Form1
517 517
             // 
@@ -581,14 +581,14 @@
581 581
         private System.Windows.Forms.ToolStripMenuItem 心跳HToolStripMenuItem;
582 582
         private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItemHbStart;
583 583
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
584
-        private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItemHb30abc;
585
-        private System.Windows.Forms.ToolStripTextBox toolStripTextBoxHbtime;
586 584
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
587 585
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
588 586
         private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItemLogHb;
589 587
         private System.Windows.Forms.Timer timerHeartBeat;
590 588
         private System.Windows.Forms.ToolStripMenuItem StripMenuItemLoSucHb;
591 589
         private System.Windows.Forms.CheckBox cbCCIDIsSource;
590
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemHBtime;
591
+        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelHbShow;
592 592
     }
593 593
 }
594 594
 

+ 20 - 0
GWSocketClient/Form1.cs 查看文件

@@ -200,6 +200,24 @@ namespace GWSocketClient
200 200
             }
201 201
         }
202 202
 
203
+        private void toolStripMenuItemHBtime_Click(object sender, EventArgs e)
204
+        {
205
+            InputDialog id = new InputDialog();
206
+            id.InputResult += (string topmost) =>
207
+            {
208
+                timerHeartBeat.Interval = int.Parse(topmost) * 1000;
209
+                //5秒
210
+                toolStripStatusLabelHbShow.Text = "心跳时间: " + topmost + "秒";
211
+
212
+            };
213
+            id.ShowDialog();
214
+        }
215
+
216
+        private void Id_InputResult(string topmost)
217
+        {
218
+            throw new NotImplementedException();
219
+        }
220
+
203 221
         #endregion
204 222
 
205 223
 
@@ -627,5 +645,7 @@ namespace GWSocketClient
627 645
         }
628 646
 
629 647
         #endregion
648
+
649
+       
630 650
     }
631 651
 }

+ 9 - 0
GWSocketClient/GWSocketClient.csproj 查看文件

@@ -84,6 +84,12 @@
84 84
     <Compile Include="InfoEditor.Designer.cs">
85 85
       <DependentUpon>InfoEditor.cs</DependentUpon>
86 86
     </Compile>
87
+    <Compile Include="InputDialog.cs">
88
+      <SubType>Form</SubType>
89
+    </Compile>
90
+    <Compile Include="InputDialog.Designer.cs">
91
+      <DependentUpon>InputDialog.cs</DependentUpon>
92
+    </Compile>
87 93
     <Compile Include="model\WvBean.cs" />
88 94
     <Compile Include="MyMessageBox.cs">
89 95
       <SubType>Form</SubType>
@@ -123,6 +129,9 @@
123 129
     <EmbeddedResource Include="InfoEditor.resx">
124 130
       <DependentUpon>InfoEditor.cs</DependentUpon>
125 131
     </EmbeddedResource>
132
+    <EmbeddedResource Include="InputDialog.resx">
133
+      <DependentUpon>InputDialog.cs</DependentUpon>
134
+    </EmbeddedResource>
126 135
     <EmbeddedResource Include="MyMessageBox.resx">
127 136
       <DependentUpon>MyMessageBox.cs</DependentUpon>
128 137
     </EmbeddedResource>

+ 117 - 0
GWSocketClient/InputDialog.Designer.cs 查看文件

@@ -0,0 +1,117 @@
1
+namespace GWSocketClient
2
+{
3
+    partial class InputDialog
4
+    {
5
+        /// <summary>
6
+        /// Required designer variable.
7
+        /// </summary>
8
+        private System.ComponentModel.IContainer components = null;
9
+
10
+        /// <summary>
11
+        /// Clean up any resources being used.
12
+        /// </summary>
13
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
14
+        protected override void Dispose(bool disposing)
15
+        {
16
+            if (disposing && (components != null))
17
+            {
18
+                components.Dispose();
19
+            }
20
+            base.Dispose(disposing);
21
+        }
22
+
23
+        #region Windows Form Designer generated code
24
+
25
+        /// <summary>
26
+        /// Required method for Designer support - do not modify
27
+        /// the contents of this method with the code editor.
28
+        /// </summary>
29
+        private void InitializeComponent()
30
+        {
31
+            this.textBoxInput = new System.Windows.Forms.TextBox();
32
+            this.label1 = new System.Windows.Forms.Label();
33
+            this.labelLen = new System.Windows.Forms.Label();
34
+            this.buttonOK = new System.Windows.Forms.Button();
35
+            this.buttonCancle = new System.Windows.Forms.Button();
36
+            this.SuspendLayout();
37
+            // 
38
+            // textBoxInput
39
+            // 
40
+            this.textBoxInput.Location = new System.Drawing.Point(12, 53);
41
+            this.textBoxInput.Name = "textBoxInput";
42
+            this.textBoxInput.Size = new System.Drawing.Size(444, 23);
43
+            this.textBoxInput.TabIndex = 0;
44
+            this.textBoxInput.TextChanged += new System.EventHandler(this.textBoxInput_TextChanged);
45
+            // 
46
+            // label1
47
+            // 
48
+            this.label1.AutoSize = true;
49
+            this.label1.Location = new System.Drawing.Point(211, 9);
50
+            this.label1.Name = "label1";
51
+            this.label1.Size = new System.Drawing.Size(44, 17);
52
+            this.label1.TabIndex = 1;
53
+            this.label1.Text = "请输入";
54
+            // 
55
+            // labelLen
56
+            // 
57
+            this.labelLen.AutoSize = true;
58
+            this.labelLen.Location = new System.Drawing.Point(413, 89);
59
+            this.labelLen.Name = "labelLen";
60
+            this.labelLen.Size = new System.Drawing.Size(15, 17);
61
+            this.labelLen.TabIndex = 2;
62
+            this.labelLen.Text = "0";
63
+            // 
64
+            // buttonOK
65
+            // 
66
+            this.buttonOK.Location = new System.Drawing.Point(381, 139);
67
+            this.buttonOK.Name = "buttonOK";
68
+            this.buttonOK.Size = new System.Drawing.Size(75, 23);
69
+            this.buttonOK.TabIndex = 3;
70
+            this.buttonOK.Text = "确定";
71
+            this.buttonOK.UseVisualStyleBackColor = true;
72
+            this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
73
+            // 
74
+            // buttonCancle
75
+            // 
76
+            this.buttonCancle.DialogResult = System.Windows.Forms.DialogResult.Cancel;
77
+            this.buttonCancle.Location = new System.Drawing.Point(300, 139);
78
+            this.buttonCancle.Name = "buttonCancle";
79
+            this.buttonCancle.Size = new System.Drawing.Size(75, 23);
80
+            this.buttonCancle.TabIndex = 4;
81
+            this.buttonCancle.Text = "取消";
82
+            this.buttonCancle.UseVisualStyleBackColor = true;
83
+            // 
84
+            // InputDialog
85
+            // 
86
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
87
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
88
+            this.CancelButton = this.buttonCancle;
89
+            this.ClientSize = new System.Drawing.Size(468, 221);
90
+            this.Controls.Add(this.buttonCancle);
91
+            this.Controls.Add(this.buttonOK);
92
+            this.Controls.Add(this.labelLen);
93
+            this.Controls.Add(this.label1);
94
+            this.Controls.Add(this.textBoxInput);
95
+            this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
96
+            this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
97
+            this.MaximizeBox = false;
98
+            this.MinimizeBox = false;
99
+            this.Name = "InputDialog";
100
+            this.ShowIcon = false;
101
+            this.ShowInTaskbar = false;
102
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
103
+            this.Text = "对话框";
104
+            this.ResumeLayout(false);
105
+            this.PerformLayout();
106
+
107
+        }
108
+
109
+        #endregion
110
+
111
+        private System.Windows.Forms.TextBox textBoxInput;
112
+        private System.Windows.Forms.Label label1;
113
+        private System.Windows.Forms.Label labelLen;
114
+        private System.Windows.Forms.Button buttonOK;
115
+        private System.Windows.Forms.Button buttonCancle;
116
+    }
117
+}

+ 40 - 0
GWSocketClient/InputDialog.cs 查看文件

@@ -0,0 +1,40 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Data;
5
+using System.Drawing;
6
+using System.Linq;
7
+using System.Text;
8
+using System.Threading.Tasks;
9
+using System.Windows.Forms;
10
+
11
+namespace GWSocketClient
12
+{
13
+
14
+    public delegate void OnInputResult(string topmost);
15
+
16
+
17
+    public partial class InputDialog : Form
18
+    {
19
+
20
+        public event OnInputResult InputResult;
21
+
22
+        public InputDialog()
23
+        {
24
+            InitializeComponent();
25
+        }
26
+
27
+     
28
+
29
+        private void textBoxInput_TextChanged(object sender, EventArgs e)
30
+        {
31
+            labelLen.Text = (textBoxInput.TextLength / 2.0) + "";
32
+        }
33
+
34
+        private void buttonOK_Click(object sender, EventArgs e)
35
+        {
36
+            InputResult(textBoxInput.Text.Trim());
37
+            this.Close();
38
+        }
39
+    }
40
+}

+ 120 - 0
GWSocketClient/InputDialog.resx 查看文件

@@ -0,0 +1,120 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<root>
3
+  <!-- 
4
+    Microsoft ResX Schema 
5
+    
6
+    Version 2.0
7
+    
8
+    The primary goals of this format is to allow a simple XML format 
9
+    that is mostly human readable. The generation and parsing of the 
10
+    various data types are done through the TypeConverter classes 
11
+    associated with the data types.
12
+    
13
+    Example:
14
+    
15
+    ... ado.net/XML headers & schema ...
16
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
17
+    <resheader name="version">2.0</resheader>
18
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
24
+    </data>
25
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27
+        <comment>This is a comment</comment>
28
+    </data>
29
+                
30
+    There are any number of "resheader" rows that contain simple 
31
+    name/value pairs.
32
+    
33
+    Each data row contains a name, and value. The row also contains a 
34
+    type or mimetype. Type corresponds to a .NET class that support 
35
+    text/value conversion through the TypeConverter architecture. 
36
+    Classes that don't support this are serialized and stored with the 
37
+    mimetype set.
38
+    
39
+    The mimetype is used for serialized objects, and tells the 
40
+    ResXResourceReader how to depersist the object. This is currently not 
41
+    extensible. For a given mimetype the value must be set accordingly:
42
+    
43
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
44
+    that the ResXResourceWriter will generate, however the reader can 
45
+    read any of the formats listed below.
46
+    
47
+    mimetype: application/x-microsoft.net.object.binary.base64
48
+    value   : The object must be serialized with 
49
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50
+            : and then encoded with base64 encoding.
51
+    
52
+    mimetype: application/x-microsoft.net.object.soap.base64
53
+    value   : The object must be serialized with 
54
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55
+            : and then encoded with base64 encoding.
56
+
57
+    mimetype: application/x-microsoft.net.object.bytearray.base64
58
+    value   : The object must be serialized into a byte array 
59
+            : using a System.ComponentModel.TypeConverter
60
+            : and then encoded with base64 encoding.
61
+    -->
62
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64
+    <xsd:element name="root" msdata:IsDataSet="true">
65
+      <xsd:complexType>
66
+        <xsd:choice maxOccurs="unbounded">
67
+          <xsd:element name="metadata">
68
+            <xsd:complexType>
69
+              <xsd:sequence>
70
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
71
+              </xsd:sequence>
72
+              <xsd:attribute name="name" use="required" type="xsd:string" />
73
+              <xsd:attribute name="type" type="xsd:string" />
74
+              <xsd:attribute name="mimetype" type="xsd:string" />
75
+              <xsd:attribute ref="xml:space" />
76
+            </xsd:complexType>
77
+          </xsd:element>
78
+          <xsd:element name="assembly">
79
+            <xsd:complexType>
80
+              <xsd:attribute name="alias" type="xsd:string" />
81
+              <xsd:attribute name="name" type="xsd:string" />
82
+            </xsd:complexType>
83
+          </xsd:element>
84
+          <xsd:element name="data">
85
+            <xsd:complexType>
86
+              <xsd:sequence>
87
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89
+              </xsd:sequence>
90
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93
+              <xsd:attribute ref="xml:space" />
94
+            </xsd:complexType>
95
+          </xsd:element>
96
+          <xsd:element name="resheader">
97
+            <xsd:complexType>
98
+              <xsd:sequence>
99
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100
+              </xsd:sequence>
101
+              <xsd:attribute name="name" type="xsd:string" use="required" />
102
+            </xsd:complexType>
103
+          </xsd:element>
104
+        </xsd:choice>
105
+      </xsd:complexType>
106
+    </xsd:element>
107
+  </xsd:schema>
108
+  <resheader name="resmimetype">
109
+    <value>text/microsoft-resx</value>
110
+  </resheader>
111
+  <resheader name="version">
112
+    <value>2.0</value>
113
+  </resheader>
114
+  <resheader name="reader">
115
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116
+  </resheader>
117
+  <resheader name="writer">
118
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119
+  </resheader>
120
+</root>