refactor: Consolidate RFID mapping and add bidirectional pathfinding
Major improvements to AGV navigation system: • Consolidated RFID management into MapNode, removing duplicate RfidMapping class • Enhanced MapNode with RFID metadata fields (RfidStatus, RfidDescription) • Added automatic bidirectional connection generation in pathfinding algorithms • Updated all components to use unified MapNode-based RFID system • Added command line argument support for AGVMapEditor auto-loading files • Fixed pathfinding failures by ensuring proper node connectivity Technical changes: - Removed RfidMapping class and dependencies across all projects - Updated AStarPathfinder with EnsureBidirectionalConnections() method - Modified MapLoader to use AssignAutoRfidIds() for RFID automation - Enhanced UnifiedAGVCanvas, SimulatorForm, and MainForm for MapNode integration - Improved data consistency and reduced memory footprint 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
218
Cs_HMI/AGVMapEditor/Forms/MainForm.Designer.cs
generated
218
Cs_HMI/AGVMapEditor/Forms/MainForm.Designer.cs
generated
@@ -35,6 +35,7 @@ namespace AGVMapEditor.Forms
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
@@ -42,20 +43,9 @@ namespace AGVMapEditor.Forms
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPageNodes = new System.Windows.Forms.TabPage();
|
||||
this.btnRemoveConnection = new System.Windows.Forms.Button();
|
||||
this.btnAddConnection = new System.Windows.Forms.Button();
|
||||
this.btnDeleteNode = new System.Windows.Forms.Button();
|
||||
this.btnAddNode = new System.Windows.Forms.Button();
|
||||
this.listBoxNodes = new System.Windows.Forms.ListBox();
|
||||
this._propertyGrid = new System.Windows.Forms.PropertyGrid();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.tabPageRfid = new System.Windows.Forms.TabPage();
|
||||
this.btnDeleteRfidMapping = new System.Windows.Forms.Button();
|
||||
this.btnAddRfidMapping = new System.Windows.Forms.Button();
|
||||
this.listBoxRfidMappings = new System.Windows.Forms.ListBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.tabPageProperties = new System.Windows.Forms.TabPage();
|
||||
this.labelSelectedNode = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
@@ -63,8 +53,6 @@ namespace AGVMapEditor.Forms
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPageNodes.SuspendLayout();
|
||||
this.tabPageRfid.SuspendLayout();
|
||||
this.tabPageProperties.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// menuStrip1
|
||||
@@ -82,6 +70,7 @@ namespace AGVMapEditor.Forms
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem,
|
||||
this.openToolStripMenuItem,
|
||||
this.closeToolStripMenuItem,
|
||||
this.toolStripSeparator1,
|
||||
this.saveToolStripMenuItem,
|
||||
this.saveAsToolStripMenuItem,
|
||||
@@ -95,7 +84,7 @@ namespace AGVMapEditor.Forms
|
||||
//
|
||||
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
|
||||
this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
|
||||
this.newToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.newToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.newToolStripMenuItem.Text = "새로 만들기(&N)";
|
||||
this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click);
|
||||
//
|
||||
@@ -103,39 +92,46 @@ namespace AGVMapEditor.Forms
|
||||
//
|
||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.openToolStripMenuItem.Text = "열기(&O)";
|
||||
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(177, 6);
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.saveToolStripMenuItem.Text = "저장(&S)";
|
||||
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
|
||||
//
|
||||
// saveAsToolStripMenuItem
|
||||
//
|
||||
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
|
||||
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.saveAsToolStripMenuItem.Text = "다른 이름으로 저장(&A)";
|
||||
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click);
|
||||
//
|
||||
// closeToolStripMenuItem
|
||||
//
|
||||
this.closeToolStripMenuItem.Name = "closeToolStripMenuItem";
|
||||
this.closeToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.closeToolStripMenuItem.Text = "닫기(&C)";
|
||||
this.closeToolStripMenuItem.Click += new System.EventHandler(this.closeToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(177, 6);
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// exitToolStripMenuItem
|
||||
//
|
||||
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||
this.exitToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.exitToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.exitToolStripMenuItem.Text = "종료(&X)";
|
||||
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
|
||||
//
|
||||
@@ -172,8 +168,6 @@ namespace AGVMapEditor.Forms
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Controls.Add(this.tabPageNodes);
|
||||
this.tabControl1.Controls.Add(this.tabPageRfid);
|
||||
this.tabControl1.Controls.Add(this.tabPageProperties);
|
||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
@@ -183,11 +177,8 @@ namespace AGVMapEditor.Forms
|
||||
//
|
||||
// tabPageNodes
|
||||
//
|
||||
this.tabPageNodes.Controls.Add(this.btnRemoveConnection);
|
||||
this.tabPageNodes.Controls.Add(this.btnAddConnection);
|
||||
this.tabPageNodes.Controls.Add(this.btnDeleteNode);
|
||||
this.tabPageNodes.Controls.Add(this.btnAddNode);
|
||||
this.tabPageNodes.Controls.Add(this.listBoxNodes);
|
||||
this.tabPageNodes.Controls.Add(this._propertyGrid);
|
||||
this.tabPageNodes.Controls.Add(this.label1);
|
||||
this.tabPageNodes.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPageNodes.Name = "tabPageNodes";
|
||||
@@ -197,163 +188,33 @@ namespace AGVMapEditor.Forms
|
||||
this.tabPageNodes.Text = "노드 관리";
|
||||
this.tabPageNodes.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnRemoveConnection
|
||||
//
|
||||
this.btnRemoveConnection.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnRemoveConnection.Location = new System.Drawing.Point(6, 637);
|
||||
this.btnRemoveConnection.Name = "btnRemoveConnection";
|
||||
this.btnRemoveConnection.Size = new System.Drawing.Size(280, 25);
|
||||
this.btnRemoveConnection.TabIndex = 5;
|
||||
this.btnRemoveConnection.Text = "연결 제거";
|
||||
this.btnRemoveConnection.UseVisualStyleBackColor = true;
|
||||
this.btnRemoveConnection.Click += new System.EventHandler(this.btnRemoveConnection_Click);
|
||||
//
|
||||
// btnAddConnection
|
||||
//
|
||||
this.btnAddConnection.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnAddConnection.Location = new System.Drawing.Point(6, 606);
|
||||
this.btnAddConnection.Name = "btnAddConnection";
|
||||
this.btnAddConnection.Size = new System.Drawing.Size(280, 25);
|
||||
this.btnAddConnection.TabIndex = 4;
|
||||
this.btnAddConnection.Text = "연결 추가";
|
||||
this.btnAddConnection.UseVisualStyleBackColor = true;
|
||||
this.btnAddConnection.Click += new System.EventHandler(this.btnAddConnection_Click);
|
||||
//
|
||||
// btnDeleteNode
|
||||
//
|
||||
this.btnDeleteNode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnDeleteNode.Location = new System.Drawing.Point(148, 670);
|
||||
this.btnDeleteNode.Name = "btnDeleteNode";
|
||||
this.btnDeleteNode.Size = new System.Drawing.Size(138, 25);
|
||||
this.btnDeleteNode.TabIndex = 3;
|
||||
this.btnDeleteNode.Text = "노드 삭제";
|
||||
this.btnDeleteNode.UseVisualStyleBackColor = true;
|
||||
this.btnDeleteNode.Click += new System.EventHandler(this.btnDeleteNode_Click);
|
||||
//
|
||||
// btnAddNode
|
||||
//
|
||||
this.btnAddNode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnAddNode.Location = new System.Drawing.Point(6, 670);
|
||||
this.btnAddNode.Name = "btnAddNode";
|
||||
this.btnAddNode.Size = new System.Drawing.Size(138, 25);
|
||||
this.btnAddNode.TabIndex = 2;
|
||||
this.btnAddNode.Text = "노드 추가";
|
||||
this.btnAddNode.UseVisualStyleBackColor = true;
|
||||
this.btnAddNode.Click += new System.EventHandler(this.btnAddNode_Click);
|
||||
//
|
||||
// listBoxNodes
|
||||
//
|
||||
this.listBoxNodes.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listBoxNodes.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.listBoxNodes.FormattingEnabled = true;
|
||||
this.listBoxNodes.ItemHeight = 12;
|
||||
this.listBoxNodes.Location = new System.Drawing.Point(6, 25);
|
||||
this.listBoxNodes.Location = new System.Drawing.Point(3, 3);
|
||||
this.listBoxNodes.Name = "listBoxNodes";
|
||||
this.listBoxNodes.Size = new System.Drawing.Size(280, 568);
|
||||
this.listBoxNodes.Size = new System.Drawing.Size(286, 245);
|
||||
this.listBoxNodes.TabIndex = 1;
|
||||
//
|
||||
// _propertyGrid
|
||||
//
|
||||
this._propertyGrid.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this._propertyGrid.Location = new System.Drawing.Point(3, 248);
|
||||
this._propertyGrid.Name = "_propertyGrid";
|
||||
this._propertyGrid.Size = new System.Drawing.Size(286, 450);
|
||||
this._propertyGrid.TabIndex = 6;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(6, 6);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(53, 12);
|
||||
this.label1.Size = new System.Drawing.Size(57, 12);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "노드 목록";
|
||||
//
|
||||
// tabPageRfid
|
||||
//
|
||||
this.tabPageRfid.Controls.Add(this.btnDeleteRfidMapping);
|
||||
this.tabPageRfid.Controls.Add(this.btnAddRfidMapping);
|
||||
this.tabPageRfid.Controls.Add(this.listBoxRfidMappings);
|
||||
this.tabPageRfid.Controls.Add(this.label2);
|
||||
this.tabPageRfid.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPageRfid.Name = "tabPageRfid";
|
||||
this.tabPageRfid.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPageRfid.Size = new System.Drawing.Size(292, 701);
|
||||
this.tabPageRfid.TabIndex = 1;
|
||||
this.tabPageRfid.Text = "RFID 매핑";
|
||||
this.tabPageRfid.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnDeleteRfidMapping
|
||||
//
|
||||
this.btnDeleteRfidMapping.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnDeleteRfidMapping.Location = new System.Drawing.Point(148, 670);
|
||||
this.btnDeleteRfidMapping.Name = "btnDeleteRfidMapping";
|
||||
this.btnDeleteRfidMapping.Size = new System.Drawing.Size(138, 25);
|
||||
this.btnDeleteRfidMapping.TabIndex = 3;
|
||||
this.btnDeleteRfidMapping.Text = "매핑 삭제";
|
||||
this.btnDeleteRfidMapping.UseVisualStyleBackColor = true;
|
||||
this.btnDeleteRfidMapping.Click += new System.EventHandler(this.btnDeleteRfidMapping_Click);
|
||||
//
|
||||
// btnAddRfidMapping
|
||||
//
|
||||
this.btnAddRfidMapping.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnAddRfidMapping.Location = new System.Drawing.Point(6, 670);
|
||||
this.btnAddRfidMapping.Name = "btnAddRfidMapping";
|
||||
this.btnAddRfidMapping.Size = new System.Drawing.Size(138, 25);
|
||||
this.btnAddRfidMapping.TabIndex = 2;
|
||||
this.btnAddRfidMapping.Text = "매핑 추가";
|
||||
this.btnAddRfidMapping.UseVisualStyleBackColor = true;
|
||||
this.btnAddRfidMapping.Click += new System.EventHandler(this.btnAddRfidMapping_Click);
|
||||
//
|
||||
// listBoxRfidMappings
|
||||
//
|
||||
this.listBoxRfidMappings.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listBoxRfidMappings.FormattingEnabled = true;
|
||||
this.listBoxRfidMappings.ItemHeight = 12;
|
||||
this.listBoxRfidMappings.Location = new System.Drawing.Point(6, 25);
|
||||
this.listBoxRfidMappings.Name = "listBoxRfidMappings";
|
||||
this.listBoxRfidMappings.Size = new System.Drawing.Size(280, 628);
|
||||
this.listBoxRfidMappings.TabIndex = 1;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(6, 6);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(77, 12);
|
||||
this.label2.TabIndex = 0;
|
||||
this.label2.Text = "RFID 매핑 목록";
|
||||
//
|
||||
// tabPageProperties
|
||||
//
|
||||
this.tabPageProperties.Controls.Add(this.labelSelectedNode);
|
||||
this.tabPageProperties.Controls.Add(this.label3);
|
||||
this.tabPageProperties.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPageProperties.Name = "tabPageProperties";
|
||||
this.tabPageProperties.Size = new System.Drawing.Size(292, 701);
|
||||
this.tabPageProperties.TabIndex = 2;
|
||||
this.tabPageProperties.Text = "속성";
|
||||
this.tabPageProperties.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// labelSelectedNode
|
||||
//
|
||||
this.labelSelectedNode.AutoSize = true;
|
||||
this.labelSelectedNode.Location = new System.Drawing.Point(8, 35);
|
||||
this.labelSelectedNode.Name = "labelSelectedNode";
|
||||
this.labelSelectedNode.Size = new System.Drawing.Size(93, 12);
|
||||
this.labelSelectedNode.TabIndex = 1;
|
||||
this.labelSelectedNode.Text = "선택된 노드: 없음";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(8, 12);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(53, 12);
|
||||
this.label3.TabIndex = 0;
|
||||
this.label3.Text = "노드 속성";
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
@@ -378,11 +239,6 @@ namespace AGVMapEditor.Forms
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPageNodes.ResumeLayout(false);
|
||||
this.tabPageNodes.PerformLayout();
|
||||
this.tabPageRfid.ResumeLayout(false);
|
||||
this.tabPageRfid.ResumeLayout(false);
|
||||
this.tabPageRfid.PerformLayout();
|
||||
this.tabPageProperties.ResumeLayout(false);
|
||||
this.tabPageProperties.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -397,6 +253,7 @@ namespace AGVMapEditor.Forms
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem closeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
@@ -404,19 +261,8 @@ namespace AGVMapEditor.Forms
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage tabPageNodes;
|
||||
private System.Windows.Forms.TabPage tabPageRfid;
|
||||
private System.Windows.Forms.Button btnDeleteNode;
|
||||
private System.Windows.Forms.Button btnAddNode;
|
||||
private System.Windows.Forms.ListBox listBoxNodes;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button btnDeleteRfidMapping;
|
||||
private System.Windows.Forms.Button btnAddRfidMapping;
|
||||
private System.Windows.Forms.ListBox listBoxRfidMappings;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TabPage tabPageProperties;
|
||||
private System.Windows.Forms.Label labelSelectedNode;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Button btnRemoveConnection;
|
||||
private System.Windows.Forms.Button btnAddConnection;
|
||||
private System.Windows.Forms.PropertyGrid _propertyGrid;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user