diff --git a/Bin/SunnyUI.dll b/Bin/SunnyUI.dll
index 8649e2f2..7f884325 100644
Binary files a/Bin/SunnyUI.dll and b/Bin/SunnyUI.dll differ
diff --git a/Bin/SunnyUI.pdb b/Bin/SunnyUI.pdb
index 42d73e2e..5511d5c3 100644
Binary files a/Bin/SunnyUI.pdb and b/Bin/SunnyUI.pdb differ
diff --git a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe b/SunnyUI.Demo/Bin/SunnyUI.Demo.exe
index f8d78d1c..0fb5a993 100644
Binary files a/SunnyUI.Demo/Bin/SunnyUI.Demo.exe and b/SunnyUI.Demo/Bin/SunnyUI.Demo.exe differ
diff --git a/SunnyUI.Demo/Bin/SunnyUI.dll b/SunnyUI.Demo/Bin/SunnyUI.dll
index 8649e2f2..7f884325 100644
Binary files a/SunnyUI.Demo/Bin/SunnyUI.dll and b/SunnyUI.Demo/Bin/SunnyUI.dll differ
diff --git a/SunnyUI.Demo/Charts/FPieChart.Designer.cs b/SunnyUI.Demo/Charts/FPieChart.Designer.cs
index d6c45915..cf2952b7 100644
--- a/SunnyUI.Demo/Charts/FPieChart.Designer.cs
+++ b/SunnyUI.Demo/Charts/FPieChart.Designer.cs
@@ -134,6 +134,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(828, 552);
this.Name = "FPieChart";
+ this.Symbol = 61952;
this.Text = "PieChart";
this.PagePanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).EndInit();
diff --git a/SunnyUI.Demo/Controls/FAvatar.Designer.cs b/SunnyUI.Demo/Controls/FAvatar.Designer.cs
index a0fb8f8a..f4b0865a 100644
--- a/SunnyUI.Demo/Controls/FAvatar.Designer.cs
+++ b/SunnyUI.Demo/Controls/FAvatar.Designer.cs
@@ -81,24 +81,20 @@
//
// uiAvatar3
//
- this.uiAvatar3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.uiAvatar3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiAvatar3.Icon = Sunny.UI.UIAvatar.UIIcon.Text;
this.uiAvatar3.Location = new System.Drawing.Point(174, 50);
this.uiAvatar3.Name = "uiAvatar3";
this.uiAvatar3.Size = new System.Drawing.Size(60, 60);
- this.uiAvatar3.Style = Sunny.UI.UIStyle.Custom;
this.uiAvatar3.TabIndex = 2;
this.uiAvatar3.Text = "Avatar";
//
// uiAvatar4
//
this.uiAvatar4.Font = new System.Drawing.Font("微软雅黑", 12F);
- this.uiAvatar4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255)))));
this.uiAvatar4.Location = new System.Drawing.Point(362, 50);
this.uiAvatar4.Name = "uiAvatar4";
this.uiAvatar4.Size = new System.Drawing.Size(60, 60);
- this.uiAvatar4.Style = Sunny.UI.UIStyle.Custom;
this.uiAvatar4.Symbol = 61715;
this.uiAvatar4.TabIndex = 3;
this.uiAvatar4.Text = "uiAvatar4";
@@ -199,6 +195,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FAvatar";
+ this.Symbol = 61447;
this.Text = "Avatar";
this.Controls.SetChildIndex(this.PagePanel, 0);
this.PagePanel.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FButton.Designer.cs b/SunnyUI.Demo/Controls/FButton.Designer.cs
index 25d023e0..8d0405e1 100644
--- a/SunnyUI.Demo/Controls/FButton.Designer.cs
+++ b/SunnyUI.Demo/Controls/FButton.Designer.cs
@@ -713,7 +713,7 @@
this.uiSymbolButton13.Name = "uiSymbolButton13";
this.uiSymbolButton13.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton13.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton13.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton13.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton13.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton13.Symbol = 61518;
@@ -727,7 +727,7 @@
this.uiSymbolButton14.Name = "uiSymbolButton14";
this.uiSymbolButton14.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton14.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton14.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton14.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton14.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton14.Symbol = 61514;
@@ -741,7 +741,7 @@
this.uiSymbolButton15.Name = "uiSymbolButton15";
this.uiSymbolButton15.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton15.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton15.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton15.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton15.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton15.Symbol = 61513;
@@ -755,7 +755,7 @@
this.uiSymbolButton16.Name = "uiSymbolButton16";
this.uiSymbolButton16.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton16.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton16.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton16.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton16.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton16.Symbol = 61517;
@@ -769,7 +769,7 @@
this.uiSymbolButton17.Name = "uiSymbolButton17";
this.uiSymbolButton17.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton17.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton17.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton17.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton17.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton17.Symbol = 61516;
@@ -807,7 +807,7 @@
this.uiSymbolButton20.Name = "uiSymbolButton20";
this.uiSymbolButton20.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton20.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.RightTop | Sunny.UI.UICornerRadiusSides.RightBottom)));
- this.uiSymbolButton20.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton20.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton20.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton20.Symbol = 61522;
@@ -821,7 +821,7 @@
this.uiSymbolButton21.Name = "uiSymbolButton21";
this.uiSymbolButton21.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton21.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton21.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton21.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton21.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton21.Symbol = 61520;
@@ -835,7 +835,7 @@
this.uiSymbolButton22.Name = "uiSymbolButton22";
this.uiSymbolButton22.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton22.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton22.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton22.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton22.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton22.Symbol = 61508;
@@ -849,7 +849,7 @@
this.uiSymbolButton23.Name = "uiSymbolButton23";
this.uiSymbolButton23.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton23.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
- this.uiSymbolButton23.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton23.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton23.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton23.Symbol = 61544;
@@ -863,7 +863,7 @@
this.uiSymbolButton24.Name = "uiSymbolButton24";
this.uiSymbolButton24.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton24.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.RightTop | Sunny.UI.UICornerRadiusSides.RightBottom)));
- this.uiSymbolButton24.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
+ this.uiSymbolButton24.RectSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)(((System.Windows.Forms.ToolStripStatusLabelBorderSides.Top | System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.uiSymbolButton24.Size = new System.Drawing.Size(46, 35);
this.uiSymbolButton24.Symbol = 61473;
@@ -874,7 +874,6 @@
this.uiSwitch1.Active = true;
this.uiSwitch1.ActiveText = "On";
this.uiSwitch1.Font = new System.Drawing.Font("微软雅黑", 12F);
- this.uiSwitch1.InActiveColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.uiSwitch1.InActiveText = "Off";
this.uiSwitch1.Location = new System.Drawing.Point(30, 441);
this.uiSwitch1.Name = "uiSwitch1";
@@ -896,7 +895,6 @@
// uiSwitch2
//
this.uiSwitch2.Font = new System.Drawing.Font("微软雅黑", 12F);
- this.uiSwitch2.InActiveColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.uiSwitch2.Location = new System.Drawing.Point(112, 441);
this.uiSwitch2.Name = "uiSwitch2";
this.uiSwitch2.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
@@ -961,7 +959,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 534);
this.Name = "FButton";
- this.PageIndex = 1001;
+ this.Symbol = 61640;
this.Text = "Button";
this.PagePanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.uiImageButton1)).EndInit();
diff --git a/SunnyUI.Demo/Controls/FCheckBox.Designer.cs b/SunnyUI.Demo/Controls/FCheckBox.Designer.cs
index 97c9bc1a..243fcb3b 100644
--- a/SunnyUI.Demo/Controls/FCheckBox.Designer.cs
+++ b/SunnyUI.Demo/Controls/FCheckBox.Designer.cs
@@ -123,6 +123,7 @@
this.uiCheckBoxGroup1.Location = new System.Drawing.Point(30, 91);
this.uiCheckBoxGroup1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiCheckBoxGroup1.Name = "uiCheckBoxGroup1";
+ this.uiCheckBoxGroup1.Padding = new System.Windows.Forms.Padding(0, 32, 0, 0);
this.uiCheckBoxGroup1.Size = new System.Drawing.Size(670, 211);
this.uiCheckBoxGroup1.TabIndex = 41;
this.uiCheckBoxGroup1.Text = "UICheckBoxGroup";
@@ -134,7 +135,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 556);
this.Name = "FCheckBox";
- this.PageIndex = 1002;
+ this.Symbol = 61770;
this.Text = "CheckBox";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FCombobox.Designer.cs b/SunnyUI.Demo/Controls/FCombobox.Designer.cs
index d4dc6092..8079d6b3 100644
--- a/SunnyUI.Demo/Controls/FCombobox.Designer.cs
+++ b/SunnyUI.Demo/Controls/FCombobox.Designer.cs
@@ -227,6 +227,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FCombobox";
+ this.Symbol = 61776;
this.Text = "Combobox";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FContextMenuStrip.Designer.cs b/SunnyUI.Demo/Controls/FContextMenuStrip.Designer.cs
index 39273d1f..4d08dee7 100644
--- a/SunnyUI.Demo/Controls/FContextMenuStrip.Designer.cs
+++ b/SunnyUI.Demo/Controls/FContextMenuStrip.Designer.cs
@@ -29,9 +29,9 @@
private void InitializeComponent()
{
this.uiButton1 = new Sunny.UI.UIButton();
+ this.uiContextMenuStrip1 = new Sunny.UI.UIContextMenuStrip();
this.uiButton2 = new Sunny.UI.UIButton();
this.uiLine1 = new Sunny.UI.UILine();
- this.uiContextMenuStrip1 = new Sunny.UI.UIContextMenuStrip();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
@@ -52,6 +52,12 @@
this.uiButton1.TabIndex = 0;
this.uiButton1.Text = "右键菜单";
//
+ // uiContextMenuStrip1
+ //
+ this.uiContextMenuStrip1.Font = new System.Drawing.Font("微软雅黑", 12F);
+ this.uiContextMenuStrip1.Name = "uiContextMenuStrip1";
+ this.uiContextMenuStrip1.Size = new System.Drawing.Size(61, 4);
+ //
// uiButton2
//
this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand;
@@ -74,18 +80,13 @@
this.uiLine1.Text = "UIContextMenuStrip";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
- // uiContextMenuStrip1
- //
- this.uiContextMenuStrip1.Font = new System.Drawing.Font("微软雅黑", 12F);
- this.uiContextMenuStrip1.Name = "uiContextMenuStrip1";
- this.uiContextMenuStrip1.Size = new System.Drawing.Size(61, 4);
- //
// FContextMenuStrip
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FContextMenuStrip";
+ this.Symbol = 62104;
this.Text = "ContextMenuStrip";
this.Controls.SetChildIndex(this.PagePanel, 0);
this.PagePanel.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FDataGridView.Designer.cs b/SunnyUI.Demo/Controls/FDataGridView.Designer.cs
index e6dcd165..4097ef67 100644
--- a/SunnyUI.Demo/Controls/FDataGridView.Designer.cs
+++ b/SunnyUI.Demo/Controls/FDataGridView.Designer.cs
@@ -31,6 +31,7 @@
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.uiDataGridView1 = new Sunny.UI.UIDataGridView();
this.PagePanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.uiDataGridView1)).BeginInit();
@@ -60,6 +61,14 @@
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.uiDataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.uiDataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window;
+ dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F);
+ dataGridViewCellStyle3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(200)))), ((int)(((byte)(255)))));
+ dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
+ dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.uiDataGridView1.DefaultCellStyle = dataGridViewCellStyle3;
this.uiDataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiDataGridView1.EnableHeadersVisualStyles = false;
this.uiDataGridView1.Font = new System.Drawing.Font("微软雅黑", 12F);
@@ -69,15 +78,14 @@
this.uiDataGridView1.Name = "uiDataGridView1";
this.uiDataGridView1.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiDataGridView1.RowHeadersVisible = false;
- dataGridViewCellStyle3.BackColor = System.Drawing.Color.White;
- this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle3;
+ dataGridViewCellStyle4.BackColor = System.Drawing.Color.White;
+ this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.uiDataGridView1.RowTemplate.Height = 29;
this.uiDataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.uiDataGridView1.SelectedIndex = -1;
this.uiDataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.uiDataGridView1.ShowRect = false;
this.uiDataGridView1.Size = new System.Drawing.Size(800, 415);
- this.uiDataGridView1.Style = Sunny.UI.UIStyle.Custom;
this.uiDataGridView1.TabIndex = 0;
this.uiDataGridView1.TagString = null;
//
@@ -87,7 +95,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FDataGridView";
- this.PageIndex = 1006;
+ this.Symbol = 61646;
this.Text = "DataGridView";
this.PagePanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.uiDataGridView1)).EndInit();
diff --git a/SunnyUI.Demo/Controls/FLabel.Designer.cs b/SunnyUI.Demo/Controls/FLabel.Designer.cs
index 65b4107f..3c8388b3 100644
--- a/SunnyUI.Demo/Controls/FLabel.Designer.cs
+++ b/SunnyUI.Demo/Controls/FLabel.Designer.cs
@@ -70,7 +70,6 @@
this.uiLinkLabel1.Location = new System.Drawing.Point(42, 127);
this.uiLinkLabel1.Name = "uiLinkLabel1";
this.uiLinkLabel1.Size = new System.Drawing.Size(146, 21);
- this.uiLinkLabel1.Style = Sunny.UI.UIStyle.Custom;
this.uiLinkLabel1.TabIndex = 1;
this.uiLinkLabel1.TabStop = true;
this.uiLinkLabel1.Text = "www.SunnyUI.net";
@@ -113,7 +112,6 @@
// uiSymbolLabel1
//
this.uiSymbolLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
- this.uiSymbolLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiSymbolLabel1.Location = new System.Drawing.Point(42, 209);
this.uiSymbolLabel1.Name = "uiSymbolLabel1";
this.uiSymbolLabel1.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
@@ -125,7 +123,6 @@
// uiSymbolLabel2
//
this.uiSymbolLabel2.Font = new System.Drawing.Font("微软雅黑", 12F);
- this.uiSymbolLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiSymbolLabel2.Location = new System.Drawing.Point(139, 209);
this.uiSymbolLabel2.Name = "uiSymbolLabel2";
this.uiSymbolLabel2.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
@@ -142,6 +139,7 @@
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FLabel";
this.StyleCustomMode = true;
+ this.Symbol = 61490;
this.Text = "Label";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
diff --git a/SunnyUI.Demo/Controls/FLine.Designer.cs b/SunnyUI.Demo/Controls/FLine.Designer.cs
index d99d99d9..17a31ff3 100644
--- a/SunnyUI.Demo/Controls/FLine.Designer.cs
+++ b/SunnyUI.Demo/Controls/FLine.Designer.cs
@@ -192,7 +192,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 556);
this.Name = "FLine";
- this.PageIndex = 1004;
+ this.Symbol = 61544;
this.Text = "Line";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FListBox.Designer.cs b/SunnyUI.Demo/Controls/FListBox.Designer.cs
index 4e1a4cd2..26306f86 100644
--- a/SunnyUI.Demo/Controls/FListBox.Designer.cs
+++ b/SunnyUI.Demo/Controls/FListBox.Designer.cs
@@ -133,6 +133,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 500);
this.Name = "FListBox";
+ this.Symbol = 61474;
this.Text = "ListBox";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FMeter.Designer.cs b/SunnyUI.Demo/Controls/FMeter.Designer.cs
index 61d37998..1669af84 100644
--- a/SunnyUI.Demo/Controls/FMeter.Designer.cs
+++ b/SunnyUI.Demo/Controls/FMeter.Designer.cs
@@ -135,7 +135,7 @@
this.uiLedStopwatch1.Name = "uiLedStopwatch1";
this.uiLedStopwatch1.Size = new System.Drawing.Size(190, 34);
this.uiLedStopwatch1.TabIndex = 45;
- this.uiLedStopwatch1.Text = "00:54";
+ this.uiLedStopwatch1.Text = "00:06";
//
// uiLedDisplay1
//
@@ -253,6 +253,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FMeter";
+ this.Symbol = 61668;
this.Text = "Meter";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FMeter.resx b/SunnyUI.Demo/Controls/FMeter.resx
index 419784f3..ca7f12fe 100644
--- a/SunnyUI.Demo/Controls/FMeter.resx
+++ b/SunnyUI.Demo/Controls/FMeter.resx
@@ -474,348 +474,348 @@
iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAYAAACuwEE+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- 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
+ 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
- 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
+ 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
- Cy0As/TaYEcBRjKWDzBcnGQzSMuJKsl+Zlsye2zauRzBw+jCLQl+a846S4LV80148GBTO8QBB2Cs5wEY
+ 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
- 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
+ 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
- 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
+ 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
- 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
+ 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
diff --git a/SunnyUI.Demo/Controls/FNavigation.Designer.cs b/SunnyUI.Demo/Controls/FNavigation.Designer.cs
index bdeaa891..cd45f751 100644
--- a/SunnyUI.Demo/Controls/FNavigation.Designer.cs
+++ b/SunnyUI.Demo/Controls/FNavigation.Designer.cs
@@ -356,6 +356,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1107, 661);
this.Name = "FNavigation";
+ this.Symbol = 61912;
this.Text = "NavBar";
this.PagePanel.ResumeLayout(false);
this.uiNavBar1.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FOther.Designer.cs b/SunnyUI.Demo/Controls/FOther.Designer.cs
index 80f615e1..668f8dae 100644
--- a/SunnyUI.Demo/Controls/FOther.Designer.cs
+++ b/SunnyUI.Demo/Controls/FOther.Designer.cs
@@ -173,7 +173,6 @@
this.uiTrackBar1.Location = new System.Drawing.Point(381, 136);
this.uiTrackBar1.Name = "uiTrackBar1";
this.uiTrackBar1.Size = new System.Drawing.Size(158, 29);
- this.uiTrackBar1.Style = Sunny.UI.UIStyle.Custom;
this.uiTrackBar1.TabIndex = 30;
this.uiTrackBar1.Text = "uiTrackBar1";
//
@@ -323,6 +322,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 507);
this.Name = "FOther";
+ this.Symbol = 62173;
this.Text = "Other";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FPanel.Designer.cs b/SunnyUI.Demo/Controls/FPanel.Designer.cs
index 49d9dedc..09e48322 100644
--- a/SunnyUI.Demo/Controls/FPanel.Designer.cs
+++ b/SunnyUI.Demo/Controls/FPanel.Designer.cs
@@ -80,7 +80,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 488);
this.Name = "FPanel";
- this.PageIndex = 1005;
+ this.Symbol = 61590;
this.Text = "Panel";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FRadioButton.Designer.cs b/SunnyUI.Demo/Controls/FRadioButton.Designer.cs
index 430adffb..a5ed2c4b 100644
--- a/SunnyUI.Demo/Controls/FRadioButton.Designer.cs
+++ b/SunnyUI.Demo/Controls/FRadioButton.Designer.cs
@@ -307,6 +307,7 @@
this.uiRadioButtonGroup1.Location = new System.Drawing.Point(30, 253);
this.uiRadioButtonGroup1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiRadioButtonGroup1.Name = "uiRadioButtonGroup1";
+ this.uiRadioButtonGroup1.Padding = new System.Windows.Forms.Padding(0, 32, 0, 0);
this.uiRadioButtonGroup1.Size = new System.Drawing.Size(670, 173);
this.uiRadioButtonGroup1.TabIndex = 63;
this.uiRadioButtonGroup1.Text = "UIRadioButtonGroup";
@@ -318,6 +319,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 598);
this.Name = "FRadioButton";
+ this.Symbol = 61842;
this.Text = "RadioButton";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
diff --git a/SunnyUI.Demo/Controls/FTabControl.Designer.cs b/SunnyUI.Demo/Controls/FTabControl.Designer.cs
index 13beef83..df3d6a53 100644
--- a/SunnyUI.Demo/Controls/FTabControl.Designer.cs
+++ b/SunnyUI.Demo/Controls/FTabControl.Designer.cs
@@ -224,6 +224,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 654);
this.Name = "FTabControl";
+ this.Symbol = 61716;
this.Text = "TabControl";
this.PagePanel.ResumeLayout(false);
this.uiTabControl1.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FTextBox.Designer.cs b/SunnyUI.Demo/Controls/FTextBox.Designer.cs
index b15ac3c1..5e9de41d 100644
--- a/SunnyUI.Demo/Controls/FTextBox.Designer.cs
+++ b/SunnyUI.Demo/Controls/FTextBox.Designer.cs
@@ -270,7 +270,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 565);
this.Name = "FTextBox";
- this.PageIndex = 1003;
+ this.Symbol = 61962;
this.Text = "TextBox";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
diff --git a/SunnyUI.Demo/Controls/FTransfer.Designer.cs b/SunnyUI.Demo/Controls/FTransfer.Designer.cs
index f1811855..a7814f68 100644
--- a/SunnyUI.Demo/Controls/FTransfer.Designer.cs
+++ b/SunnyUI.Demo/Controls/FTransfer.Designer.cs
@@ -86,6 +86,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FTransfer";
+ this.Symbol = 61516;
this.Text = "Transfer";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Controls/FTreeView.Designer.cs b/SunnyUI.Demo/Controls/FTreeView.Designer.cs
index 5d68a22d..5bce9046 100644
--- a/SunnyUI.Demo/Controls/FTreeView.Designer.cs
+++ b/SunnyUI.Demo/Controls/FTreeView.Designer.cs
@@ -148,6 +148,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FTreeView";
+ this.Symbol = 61499;
this.Text = "TreeView";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/FMain.cs b/SunnyUI.Demo/FMain.cs
index 84897619..f429fb8a 100644
--- a/SunnyUI.Demo/FMain.cs
+++ b/SunnyUI.Demo/FMain.cs
@@ -1,6 +1,7 @@
-using Sunny.UI.Demo.Forms;
+using Sunny.UI.Demo.Controls;
+using Sunny.UI.Demo.Forms;
+using System;
using System.Windows.Forms;
-using Sunny.UI.Demo.Controls;
namespace Sunny.UI.Demo
{
@@ -14,6 +15,7 @@ namespace Sunny.UI.Demo
Header.SetNodePageIndex(Header.Nodes[0], pageIndex);
Header.SetNodeSymbol(Header.Nodes[0], 61451);
TreeNode parent = Aside.CreateNode("Controls", 61451, 24, pageIndex);
+ //通过设置PageIndex关联
Aside.CreateChildNode(parent, 61640, 24, AddPage(new FButton(), ++pageIndex));
Aside.CreateChildNode(parent, 61490, 24, AddPage(new FLabel(), ++pageIndex));
Aside.CreateChildNode(parent, 61770, 24, AddPage(new FCheckBox(), ++pageIndex));
@@ -37,15 +39,17 @@ namespace Sunny.UI.Demo
Header.SetNodePageIndex(Header.Nodes[1], pageIndex);
Header.SetNodeSymbol(Header.Nodes[1], 61818);
parent = Aside.CreateNode("Forms", 61818, 24, pageIndex);
- Aside.CreateChildNode(parent, 62160, 24, AddPage(new FDialogs(), ++pageIndex));
- Aside.CreateChildNode(parent, 61508, 24, AddPage(new FEditor(), ++pageIndex));
- Aside.CreateChildNode(parent, 61674, 24, AddPage(new FFrames(), ++pageIndex));
+ //通过设置GUID关联
+ Aside.CreateChildNode(parent, 62160, 24, AddPage(new FDialogs(), Guid.NewGuid()));
+ Aside.CreateChildNode(parent, 61508, 24, AddPage(new FEditor(), Guid.NewGuid()));
+ Aside.CreateChildNode(parent, 61674, 24, AddPage(new FFrames(), Guid.NewGuid()));
pageIndex = 3000;
Header.SetNodePageIndex(Header.Nodes[2], pageIndex);
Header.SetNodeSymbol(Header.Nodes[2], 61950);
parent = Aside.CreateNode("Forms", 61950, 24, pageIndex);
- Aside.CreateChildNode(parent, 61952, 24, AddPage(new FPieChart(), ++pageIndex));
+ //直接关联(默认自动生成GUID)
+ Aside.CreateChildNode(parent, 61952, 24, AddPage(new FPieChart()));
Header.SetNodeSymbol(Header.Nodes[3], 61502);
var styles = UIStyles.PopularStyles();
diff --git a/SunnyUI.Demo/Forms/FDialogs.Designer.cs b/SunnyUI.Demo/Forms/FDialogs.Designer.cs
index f36d31ed..a71a3443 100644
--- a/SunnyUI.Demo/Forms/FDialogs.Designer.cs
+++ b/SunnyUI.Demo/Forms/FDialogs.Designer.cs
@@ -530,11 +530,12 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 549);
this.Name = "FDialogs";
- this.PageIndex = 2001;
+ this.Symbol = 62160;
this.Text = "Dialogs";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
+
}
#endregion
diff --git a/SunnyUI.Demo/Forms/FEditor.Designer.cs b/SunnyUI.Demo/Forms/FEditor.Designer.cs
index a340378c..cc70ab43 100644
--- a/SunnyUI.Demo/Forms/FEditor.Designer.cs
+++ b/SunnyUI.Demo/Forms/FEditor.Designer.cs
@@ -83,6 +83,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FEditor";
+ this.Symbol = 61508;
this.Text = "Editor";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/SunnyUI.Demo/Forms/FFrames.Designer.cs b/SunnyUI.Demo/Forms/FFrames.Designer.cs
index 5a010f16..95acadf9 100644
--- a/SunnyUI.Demo/Forms/FFrames.Designer.cs
+++ b/SunnyUI.Demo/Forms/FFrames.Designer.cs
@@ -57,7 +57,6 @@
this.PagePanel.Controls.Add(this.btnHMF);
this.PagePanel.Controls.Add(this.btnHM);
this.PagePanel.Size = new System.Drawing.Size(892, 592);
- this.PagePanel.Style = Sunny.UI.UIStyle.Blue;
//
// uiLine1
//
@@ -175,7 +174,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(892, 627);
this.Name = "FFrames";
- this.Style = Sunny.UI.UIStyle.Blue;
+ this.Symbol = 61674;
this.Text = "Frames";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
diff --git a/SunnyUI/Charts/UIChart.cs b/SunnyUI/Charts/UIChart.cs
index 0cea7896..3fc57a3a 100644
--- a/SunnyUI/Charts/UIChart.cs
+++ b/SunnyUI/Charts/UIChart.cs
@@ -1,4 +1,25 @@
-using System.Collections.Generic;
+/******************************************************************************
+ * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。
+ * CopyRight (C) 2012-2020 ShenYongHua(沈永华).
+ * QQ群:56829229 QQ:17612584 EMail:SunnyUI@qq.com
+ *
+ * Blog: https://www.cnblogs.com/yhuse
+ * Gitee: https://gitee.com/yhuse/SunnyUI
+ * GitHub: https://github.com/yhuse/SunnyUI
+ *
+ * SunnyUI.dll can be used for free under the GPL-3.0 license.
+ * If you use this code, please keep this note.
+ * 如果您使用此代码,请保留此说明。
+ ******************************************************************************
+ * 文件名称: UIChart.cs
+ * 文件说明: 图表基类
+ * 当前版本: V2.2
+ * 创建日期: 2020-06-06
+ *
+ * 2020-06-06: V2.2.5 增加文件说明
+******************************************************************************/
+
+using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
diff --git a/SunnyUI/Charts/UIOption.cs b/SunnyUI/Charts/UIOption.cs
index 9120565f..89a8a2af 100644
--- a/SunnyUI/Charts/UIOption.cs
+++ b/SunnyUI/Charts/UIOption.cs
@@ -1,4 +1,25 @@
-using System;
+/******************************************************************************
+ * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。
+ * CopyRight (C) 2012-2020 ShenYongHua(沈永华).
+ * QQ群:56829229 QQ:17612584 EMail:SunnyUI@qq.com
+ *
+ * Blog: https://www.cnblogs.com/yhuse
+ * Gitee: https://gitee.com/yhuse/SunnyUI
+ * GitHub: https://github.com/yhuse/SunnyUI
+ *
+ * SunnyUI.dll can be used for free under the GPL-3.0 license.
+ * If you use this code, please keep this note.
+ * 如果您使用此代码,请保留此说明。
+ ******************************************************************************
+ * 文件名称: UIOption.cs
+ * 文件说明: 图表设置类
+ * 当前版本: V2.2
+ * 创建日期: 2020-06-06
+ *
+ * 2020-06-06: V2.2.5 增加文件说明
+******************************************************************************/
+
+using System;
using System.Collections.Generic;
using System.Drawing;
@@ -25,7 +46,7 @@ namespace Sunny.UI
{
series?.Dispose();
}
-
+
Series.Clear();
}
@@ -34,7 +55,7 @@ namespace Sunny.UI
public class UIToolTip
{
- public string formatter { get; set; } = "{0}"+'\n'+"{1} : {2:f0} ({3:f2}%)";
+ public string formatter { get; set; } = "{{a}}" + '\n' + "{{b}} : {{c}} ({{d}}%)";
}
public class UILegend
@@ -61,11 +82,11 @@ namespace Sunny.UI
Horizontal
}
- public class UITitle
- {
- public string Text { get; set; } = "UIPieChart";
+ public class UITitle
+ {
+ public string Text { get; set; } = "UIPieChart";
- public string SubText { get; set; } = "";
+ public string SubText { get; set; } = "";
public UILeftAlignment Left { get; set; } = UILeftAlignment.Center;
diff --git a/SunnyUI/Charts/UIPieChart.cs b/SunnyUI/Charts/UIPieChart.cs
index 021da6ef..683dd7b1 100644
--- a/SunnyUI/Charts/UIPieChart.cs
+++ b/SunnyUI/Charts/UIPieChart.cs
@@ -1,4 +1,25 @@
-using System;
+/******************************************************************************
+ * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。
+ * CopyRight (C) 2012-2020 ShenYongHua(沈永华).
+ * QQ群:56829229 QQ:17612584 EMail:SunnyUI@qq.com
+ *
+ * Blog: https://www.cnblogs.com/yhuse
+ * Gitee: https://gitee.com/yhuse/SunnyUI
+ * GitHub: https://github.com/yhuse/SunnyUI
+ *
+ * SunnyUI.dll can be used for free under the GPL-3.0 license.
+ * If you use this code, please keep this note.
+ * 如果您使用此代码,请保留此说明。
+ ******************************************************************************
+ * 文件名称: UIPieChart.cs
+ * 文件说明: 饼状图
+ * 当前版本: V2.2
+ * 创建日期: 2020-06-06
+ *
+ * 2020-06-06: V2.2.5 增加文件说明
+******************************************************************************/
+
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
@@ -76,6 +97,12 @@ namespace Sunny.UI
{
Angles.Clear();
if (o == null || o.Series == null || o.Series.Count == 0) return;
+ UITemplate template = null;
+ if (o.ToolTip != null)
+ {
+ template = new UITemplate(o.ToolTip.formatter);
+ }
+
for (int pieIndex = 0; pieIndex < o.Series.Count; pieIndex++)
{
@@ -99,7 +126,14 @@ namespace Sunny.UI
{
try
{
- text = string.Format(o.ToolTip.formatter, pie.Name, pie.Data[i].Name, pie.Data[i].Value, percent);
+ if (template != null)
+ {
+ template.Set("a", pie.Name);
+ template.Set("b", pie.Data[i].Name);
+ template.Set("c", pie.Data[i].Value.ToString("F" + DecimalNumber));
+ template.Set("d", percent.ToString("F2"));
+ text = template.Render();
+ }
}
catch
{
@@ -240,12 +274,12 @@ namespace Sunny.UI
}
else if (az >= 90 && az < 180)
{
- tip.Left = e.Location.X - tip.Width;
+ tip.Left = e.Location.X - tip.Width;
tip.Top = e.Location.Y - tip.Height - 2;
}
else if (az >= 180 && az < 270)
{
- tip.Left = e.Location.X ;
+ tip.Left = e.Location.X;
tip.Top = e.Location.Y - tip.Height - 2;
}
else if (az >= 270 && az < 360)
diff --git a/SunnyUI/Controls/DropItem/UIDropControl.cs b/SunnyUI/Controls/DropItem/UIDropControl.cs
index e2cacddb..350dce68 100644
--- a/SunnyUI/Controls/DropItem/UIDropControl.cs
+++ b/SunnyUI/Controls/DropItem/UIDropControl.cs
@@ -168,6 +168,7 @@ namespace Sunny.UI
private void EditTextChanged(object s, EventArgs e)
{
Text = edit.Text;
+ Invalidate();
}
protected override void OnFontChanged(EventArgs e)
diff --git a/SunnyUI/Controls/UINavBar.cs b/SunnyUI/Controls/UINavBar.cs
index f9a2d97d..c402e99a 100644
--- a/SunnyUI/Controls/UINavBar.cs
+++ b/SunnyUI/Controls/UINavBar.cs
@@ -57,7 +57,7 @@ namespace Sunny.UI
}
[DefaultValue(null)]
- public TabControl TabControl { get; set; }
+ public UITabControl TabControl { get; set; }
public void SetNodeItem(TreeNode node, NavMenuItem item)
{
@@ -515,7 +515,7 @@ namespace Sunny.UI
public TreeNode CreateNode(UIPage page)
{
- return CreateNode(new NavMenuItem(page.Text, page.PageIndex));
+ return CreateNode(new NavMenuItem(page));
}
public TreeNode CreateNode(NavMenuItem item)
@@ -533,7 +533,7 @@ namespace Sunny.UI
public TreeNode CreateNode(UIPage page, int imageIndex)
{
- return CreateNode(new NavMenuItem(page.Text, page.PageIndex), imageIndex);
+ return CreateNode(new NavMenuItem(page), imageIndex);
}
public TreeNode CreateNode(NavMenuItem item, int imageIndex)
@@ -552,7 +552,7 @@ namespace Sunny.UI
public TreeNode CreateNode(UIPage page, int symbol, int symbolSize)
{
- return CreateNode(new NavMenuItem(page.Text, page.PageIndex), symbol, symbolSize);
+ return CreateNode(new NavMenuItem(page), symbol, symbolSize);
}
public TreeNode CreateNode(NavMenuItem item, int symbol, int symbolSize)
@@ -571,7 +571,7 @@ namespace Sunny.UI
public TreeNode CreateChildNode(TreeNode parent, UIPage page)
{
- return CreateChildNode(parent, new NavMenuItem(page.Text, page.PageIndex));
+ return CreateChildNode(parent, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
@@ -589,7 +589,7 @@ namespace Sunny.UI
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, UIPage page)
{
- return CreateChildNode(parent, imageIndex, new NavMenuItem(page.Text, page.PageIndex));
+ return CreateChildNode(parent, imageIndex, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, NavMenuItem item)
@@ -608,7 +608,7 @@ namespace Sunny.UI
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, UIPage page)
{
- return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page.Text, page.PageIndex));
+ return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, NavMenuItem item)
diff --git a/SunnyUI/Controls/UINavMenu.cs b/SunnyUI/Controls/UINavMenu.cs
index 493a2f35..659ee970 100644
--- a/SunnyUI/Controls/UINavMenu.cs
+++ b/SunnyUI/Controls/UINavMenu.cs
@@ -60,7 +60,7 @@ namespace Sunny.UI
Bar.Style = UIStyle.Custom;
Bar.StyleCustomMode = true;
Bar.FillColor = fillColor;
-
+
Bar.ForeColor = Color.Silver;
Bar.HoverColor = Color.Silver;
Bar.PressColor = Color.Silver;
@@ -130,7 +130,7 @@ namespace Sunny.UI
public bool StyleCustomMode { get; set; }
[DefaultValue(null)]
- public TabControl TabControl { get; set; }
+ public UITabControl TabControl { get; set; }
private Color selectedColor = Color.FromArgb(36, 36, 36);
@@ -537,9 +537,23 @@ namespace Sunny.UI
private void ShowSelectedNode()
{
- int index = MenuHelper.GetPageIndex(SelectedNode);
- TabControl?.SelectPage(index);
- MenuItemClick?.Invoke(SelectedNode, MenuHelper[SelectedNode], index);
+ NavMenuItem item = MenuHelper[SelectedNode];
+ if (item != null)
+ {
+ if (item.PageGuid != Guid.Empty)
+ {
+ TabControl?.SelectPage(item.PageGuid);
+ }
+ else
+ {
+ if (item.PageIndex >= 0)
+ {
+ TabControl?.SelectPage(item.PageIndex);
+ }
+ }
+ }
+
+ MenuItemClick?.Invoke(SelectedNode, MenuHelper[SelectedNode], MenuHelper.GetPageIndex(SelectedNode));
}
protected override void OnMouseWheel(MouseEventArgs e)
@@ -620,7 +634,7 @@ namespace Sunny.UI
public TreeNode CreateNode(UIPage page)
{
- return CreateNode(new NavMenuItem(page.Text, page.PageIndex));
+ return CreateNode(new NavMenuItem(page));
}
public TreeNode CreateNode(NavMenuItem item)
@@ -638,7 +652,7 @@ namespace Sunny.UI
public TreeNode CreateNode(UIPage page, int imageIndex)
{
- return CreateNode(new NavMenuItem(page.Text, page.PageIndex), imageIndex);
+ return CreateNode(new NavMenuItem(page), imageIndex);
}
public TreeNode CreateNode(NavMenuItem item, int imageIndex)
@@ -657,7 +671,7 @@ namespace Sunny.UI
public TreeNode CreateNode(UIPage page, int symbol, int symbolSize)
{
- return CreateNode(new NavMenuItem(page.Text, page.PageIndex), symbol, symbolSize);
+ return CreateNode(new NavMenuItem(page), symbol, symbolSize);
}
public TreeNode CreateNode(NavMenuItem item, int symbol, int symbolSize)
@@ -676,7 +690,7 @@ namespace Sunny.UI
public TreeNode CreateChildNode(TreeNode parent, UIPage page)
{
- return CreateChildNode(parent, new NavMenuItem(page.Text, page.PageIndex));
+ return CreateChildNode(parent, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, NavMenuItem item)
@@ -694,7 +708,7 @@ namespace Sunny.UI
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, UIPage page)
{
- return CreateChildNode(parent, imageIndex, new NavMenuItem(page.Text, page.PageIndex));
+ return CreateChildNode(parent, imageIndex, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int imageIndex, NavMenuItem item)
@@ -713,7 +727,7 @@ namespace Sunny.UI
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, UIPage page)
{
- return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page.Text, page.PageIndex));
+ return CreateChildNode(parent, symbol, symbolSize, new NavMenuItem(page));
}
public TreeNode CreateChildNode(TreeNode parent, int symbol, int symbolSize, NavMenuItem item)
@@ -726,144 +740,5 @@ namespace Sunny.UI
}
}
- public class NavMenuHelper
- {
- public NavMenuItem this[TreeNode node]
- {
- get
- {
- if (node == null) return null;
- if (Items.ContainsKey(node))
- return Items[node];
- else
- return null;
- }
- }
-
- private readonly ConcurrentDictionary Items = new ConcurrentDictionary();
-
- public string GetTipsText(TreeNode node)
- {
- return this[node] == null ? string.Empty : Items[node].TipsText;
- }
-
- public int GetSymbol(TreeNode node)
- {
- return this[node] == null ? 0 : Items[node].Symbol;
- }
-
- public int GetSymbolSize(TreeNode node)
- {
- return this[node] == null ? 0 : Items[node].SymbolSize;
- }
-
- public int GetPageIndex(TreeNode node)
- {
- return this[node] == null ? -1 : Items[node].PageIndex;
- }
-
- public object GetTag(TreeNode node)
- {
- return this[node] == null ? null : Items[node].Tag;
- }
-
- public void SetTipsText(TreeNode node, string tips)
- {
- if (node == null) return;
-
- CreateIfNotExist(node);
- Items[node].TipsText = tips;
- node.TreeView.Invalidate();
- }
-
- public void SetPageIndex(TreeNode node, int index)
- {
- if (node == null) return;
-
- CreateIfNotExist(node);
- Items[node].PageIndex = index;
- }
-
- public void SetSymbol(TreeNode node, int symbol, int symbolSize = 32)
- {
- if (node == null) return;
-
- CreateIfNotExist(node);
- Items[node].Symbol = symbol;
- Items[node].SymbolSize = symbolSize;
- node.TreeView.Invalidate();
- }
-
- private void CreateIfNotExist(TreeNode node)
- {
- if (node == null) return;
-
- if (!Items.ContainsKey(node))
- {
- NavMenuItem menuItem = new NavMenuItem();
- Items.TryAdd(node, menuItem);
- }
- }
-
- public void Add(TreeNode node, NavMenuItem item)
- {
- if (node == null || item == null) return;
-
- if (this[node] == null)
- {
- Items.TryAdd(node, item);
- }
- else
- {
- Items[node] = item;
- }
-
- node.ImageIndex = item.ImageIndex;
- node.SelectedImageIndex = item.SelectedImageIndex;
- node.Tag = item;
- }
- }
-
- public class NavMenuItem
- {
- public string Text { get; set; }
-
- public int ImageIndex { get; set; } = -1;
-
- public int SelectedImageIndex { get; set; } = -1;
-
- public int Symbol { get; set; }
-
- public int SymbolSize { get; set; } = 24;
-
- public int PageIndex { get; set; }
-
- public string TipsText { get; set; }
-
- public bool Enabled { get; set; } = true;
-
- public object Tag { get; set; }
-
- public NavMenuItem()
- {
- }
-
- public NavMenuItem(UIPage page)
- {
- Text = page.Text;
- PageIndex = page.PageIndex;
- }
-
- public NavMenuItem(string text, int pageIndex)
- {
- PageIndex = pageIndex;
- Text = text;
- }
-
- public NavMenuItem(int pageIndex)
- {
- PageIndex = pageIndex;
- }
- }
}
\ No newline at end of file
diff --git a/SunnyUI/Controls/UINavMenuHelper.cs b/SunnyUI/Controls/UINavMenuHelper.cs
new file mode 100644
index 00000000..e197a6c1
--- /dev/null
+++ b/SunnyUI/Controls/UINavMenuHelper.cs
@@ -0,0 +1,343 @@
+/******************************************************************************
+ * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。
+ * CopyRight (C) 2012-2020 ShenYongHua(沈永华).
+ * QQ群:56829229 QQ:17612584 EMail:SunnyUI@qq.com
+ *
+ * Blog: https://www.cnblogs.com/yhuse
+ * Gitee: https://gitee.com/yhuse/SunnyUI
+ * GitHub: https://github.com/yhuse/SunnyUI
+ *
+ * SunnyUI.dll can be used for free under the GPL-3.0 license.
+ * If you use this code, please keep this note.
+ * 如果您使用此代码,请保留此说明。
+ ******************************************************************************
+ * 文件名称: UINavMenuHelper.cs
+ * 文件说明: 导航菜单帮助类
+ * 当前版本: V2.2
+ * 创建日期: 2020-01-01
+ *
+ * 2020-01-01: V2.2.0 增加文件说明
+******************************************************************************/
+
+
+using System;
+using System.Collections.Concurrent;
+using System.Windows.Forms;
+
+namespace Sunny.UI
+{
+ public class NavMenuHelper
+ {
+ public NavMenuItem this[TreeNode node]
+ {
+ get
+ {
+ if (node == null) return null;
+
+ if (Items.ContainsKey(node))
+ return Items[node];
+ else
+ return null;
+ }
+ }
+
+ private readonly ConcurrentDictionary Items = new ConcurrentDictionary();
+
+ public string GetTipsText(TreeNode node)
+ {
+ return this[node] == null ? string.Empty : Items[node].TipsText;
+ }
+
+ public Guid GetGuid(TreeNode node)
+ {
+ return this[node] == null ? Guid.Empty : Items[node].PageGuid;
+ }
+
+ public int GetSymbol(TreeNode node)
+ {
+ return this[node] == null ? 0 : Items[node].Symbol;
+ }
+
+ public int GetSymbolSize(TreeNode node)
+ {
+ return this[node] == null ? 0 : Items[node].SymbolSize;
+ }
+
+ public int GetPageIndex(TreeNode node)
+ {
+ return this[node] == null ? -1 : Items[node].PageIndex;
+ }
+
+ public object GetTag(TreeNode node)
+ {
+ return this[node] == null ? null : Items[node].Tag;
+ }
+
+ public void SetTipsText(TreeNode node, string tips)
+ {
+ if (node == null) return;
+
+ CreateIfNotExist(node);
+ Items[node].TipsText = tips;
+ node.TreeView.Invalidate();
+ }
+
+ public void SetPageIndex(TreeNode node, int index)
+ {
+ if (node == null) return;
+
+ CreateIfNotExist(node);
+ Items[node].PageIndex = index;
+ }
+
+ public void SetGuid(TreeNode node, Guid guid)
+ {
+ if (node == null) return;
+
+ CreateIfNotExist(node);
+ Items[node].PageGuid = guid;
+ }
+
+ public void SetSymbol(TreeNode node, int symbol, int symbolSize = 32)
+ {
+ if (node == null) return;
+
+ CreateIfNotExist(node);
+ Items[node].Symbol = symbol;
+ Items[node].SymbolSize = symbolSize;
+ node.TreeView.Invalidate();
+ }
+
+ private void CreateIfNotExist(TreeNode node)
+ {
+ if (node == null) return;
+
+ if (!Items.ContainsKey(node))
+ {
+ NavMenuItem menuItem = new NavMenuItem();
+ Items.TryAdd(node, menuItem);
+ }
+ }
+
+ public void Add(TreeNode node, NavMenuItem item)
+ {
+ if (node == null || item == null) return;
+
+ if (this[node] == null)
+ {
+ Items.TryAdd(node, item);
+ }
+ else
+ {
+ Items[node] = item;
+ }
+
+ node.ImageIndex = item.ImageIndex;
+ node.SelectedImageIndex = item.SelectedImageIndex;
+ node.Tag = item;
+ }
+ }
+
+ public class UITabControlHelper
+ {
+ private readonly ConcurrentDictionary PageItems = new ConcurrentDictionary();
+
+ private readonly UITabControl tabControl;
+
+ public UITabControlHelper(UITabControl ctrl)
+ {
+ tabControl = ctrl;
+ }
+
+ public UIPage AddPage(int pageIndex, UIPage page)
+ {
+ page.PageIndex = pageIndex;
+ return AddPage(page);
+ }
+
+ public UIPage AddPage(Guid pageGuid, UIPage page)
+ {
+ page.PageGuid = pageGuid;
+ return AddPage(page);
+ }
+
+ public UIPage AddPage(UIPage page)
+ {
+ if (page.PageGuid == Guid.Empty && page.PageIndex < 0)
+ {
+ page.PageGuid = Guid.NewGuid();
+ }
+
+ TabPage tabPage = CreateTabIfNotExists(new NavMenuItem(page));
+ page.TabPage = tabPage;
+ tabPage.Controls.Add(page);
+ tabPage.Text = page.Text;
+ page.Show();
+
+ return page;
+ }
+
+ public void AddPages(params UIPage[] pages)
+ {
+ foreach (var page in pages)
+ {
+ AddPage(page);
+ }
+ }
+
+ public void AddPage(int index, UITabControlMenu page)
+ {
+ TabPage tabPage = CreateTabIfNotExists(index);
+ tabPage.Controls.Add(page);
+ page.Dock = DockStyle.Fill;
+ page.Show();
+ }
+
+ public void AddPage(int index, UITabControl page)
+ {
+ TabPage tabPage = CreateTabIfNotExists(index);
+ tabPage.Controls.Add(page);
+ page.Dock = DockStyle.Fill;
+ page.Show();
+ }
+
+ public void AddPage(Guid guid, UITabControlMenu page)
+ {
+ TabPage tabPage = CreateTabIfNotExists(guid);
+ tabPage.Controls.Add(page);
+ page.Dock = DockStyle.Fill;
+ page.Show();
+ }
+
+ public void AddPage(Guid guid, UITabControl page)
+ {
+ TabPage tabPage = CreateTabIfNotExists(guid);
+ tabPage.Controls.Add(page);
+ page.Dock = DockStyle.Fill;
+ page.Show();
+ }
+
+ private TabPage CreateTabIfNotExists(NavMenuItem item)
+ {
+ if (item == null) return null;
+ if (item.PageIndex < 0 && item.PageGuid == Guid.Empty) return null;
+
+ for (int i = 0; i < tabControl.TabPages.Count; i++)
+ {
+ TabPage page = tabControl.TabPages[i];
+
+ if (!PageItems.ContainsKey(page))
+ {
+ if (page.Controls.Count == 0)
+ {
+ PageItems.TryAdd(page, item);
+ return page;
+ }
+ }
+ else
+ {
+ if (item.PageGuid != Guid.Empty)
+ {
+ if (PageItems[page].PageGuid == item.PageGuid) return page;
+ }
+ else
+ {
+ if (item.PageIndex >= 0 && PageItems[page].PageIndex == item.PageIndex) return page;
+ }
+ }
+ }
+
+ TabPage newPage = new TabPage();
+ newPage.SuspendLayout();
+ newPage.Text = "tabPage" + tabControl.TabPages.Count;
+ tabControl.Controls.Add(newPage);
+ PageItems.TryAdd(newPage, item);
+ newPage.ResumeLayout();
+ return newPage;
+ }
+
+ private TabPage CreateTabIfNotExists(int pageIndex)
+ {
+ return CreateTabIfNotExists(new NavMenuItem(pageIndex));
+ }
+
+ private TabPage CreateTabIfNotExists(Guid guid)
+ {
+ return CreateTabIfNotExists(new NavMenuItem(guid));
+ }
+
+ public void SelectPage(int pageIndex)
+ {
+ if (pageIndex < 0) return;
+ foreach (var item in PageItems)
+ {
+ if (item.Value.PageIndex == pageIndex)
+ {
+ tabControl.SelectTab(item.Key);
+ }
+ }
+ }
+
+ public void SelectPage(Guid guid)
+ {
+ if (guid == Guid.Empty) return;
+ foreach (var item in PageItems)
+ {
+ if (item.Value.PageGuid == guid)
+ {
+ tabControl.SelectTab(item.Key);
+ }
+ }
+ }
+ }
+
+ public class NavMenuItem
+ {
+ public string Text { get; set; }
+
+ public int ImageIndex { get; set; } = -1;
+
+ public int SelectedImageIndex { get; set; } = -1;
+
+ public int Symbol { get; set; }
+
+ public int SymbolSize { get; set; } = 24;
+
+ public int PageIndex { get; set; }
+
+ public string TipsText { get; set; }
+
+ public bool Enabled { get; set; } = true;
+
+ public object Tag { get; set; }
+
+ public Guid PageGuid { get; set; } = Guid.Empty;
+
+ public NavMenuItem()
+ {
+ }
+
+ public NavMenuItem(UIPage page)
+ {
+ Text = page.Text;
+ PageIndex = page.PageIndex;
+ PageGuid = page.PageGuid;
+ }
+
+ public NavMenuItem(string text, int pageIndex)
+ {
+ PageIndex = pageIndex;
+ Text = text;
+ }
+
+ public NavMenuItem(int pageIndex)
+ {
+ PageIndex = pageIndex;
+ }
+
+ public NavMenuItem(Guid guid)
+ {
+ PageGuid = guid;
+ }
+ }
+}
\ No newline at end of file
diff --git a/SunnyUI/Controls/UIPanel.cs b/SunnyUI/Controls/UIPanel.cs
index c86466ce..718bd34c 100644
--- a/SunnyUI/Controls/UIPanel.cs
+++ b/SunnyUI/Controls/UIPanel.cs
@@ -21,6 +21,7 @@
******************************************************************************/
using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
@@ -122,6 +123,34 @@ namespace Sunny.UI
{
}
+ protected override void OnControlAdded(ControlEventArgs e)
+ {
+ base.OnControlAdded(e);
+
+ if (e.Control is IStyleInterface ctrl)
+ {
+ if (!ctrl.StyleCustomMode)
+ {
+ ctrl.Style = Style;
+ }
+ }
+
+ if (e.Control is Panel)
+ {
+ List controls = e.Control.GetUIStyleControls("IStyleInterface");
+ foreach (var control in controls)
+ {
+ if (control is IStyleInterface item)
+ {
+ if (!item.StyleCustomMode)
+ {
+ item.Style = Style;
+ }
+ }
+ }
+ }
+ }
+
private UICornerRadiusSides _radiusSides = UICornerRadiusSides.All;
[DefaultValue(UICornerRadiusSides.All), Description("圆角显示位置")]
diff --git a/SunnyUI/Controls/UITabControl.cs b/SunnyUI/Controls/UITabControl.cs
index 82bca762..6ef0f1f7 100644
--- a/SunnyUI/Controls/UITabControl.cs
+++ b/SunnyUI/Controls/UITabControl.cs
@@ -31,6 +31,8 @@ namespace Sunny.UI
{
public sealed class UITabControl : TabControl, IStyleInterface
{
+ private readonly UITabControlHelper Helper;
+
public UITabControl()
{
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer, true);
@@ -41,8 +43,46 @@ namespace Sunny.UI
AfterSetFillColor(FillColor);
Size = new Size(450, 270);
Version = UIGlobal.Version;
+
+ Helper = new UITabControlHelper(this);
}
+ public void SelectPage(int pageIndex)
+ {
+ Helper.SelectPage(pageIndex);
+ }
+
+ public void SelectPage(Guid pageGuid)
+ {
+ Helper.SelectPage(pageGuid);
+ }
+
+ public void AddPage(UIPage page)
+ {
+ Helper.AddPage(page);
+ }
+
+ public void AddPage(int pageIndex, UITabControl page)
+ {
+ Helper.AddPage(pageIndex, page);
+ }
+
+ public void AddPage(int pageIndex, UITabControlMenu page)
+ {
+ Helper.AddPage(pageIndex, page);
+ }
+
+ public void AddPage(Guid guid, UITabControl page)
+ {
+ Helper.AddPage(guid, page);
+ }
+
+ public void AddPage(Guid guid, UITabControlMenu page)
+ {
+ Helper.AddPage(guid, page);
+ }
+
+
public string Version { get; }
private Color _fillColor = UIColor.LightBlue;
@@ -571,7 +611,7 @@ namespace Sunny.UI
break;
case ArrowDirection.Right:
- g.DrawFontImage(61701, 24, arrowColor, rect,1);
+ g.DrawFontImage(61701, 24, arrowColor, rect, 1);
break;
}
}
diff --git a/SunnyUI/Controls/UITabControlMenu.cs b/SunnyUI/Controls/UITabControlMenu.cs
index bee8ba10..2b80ec6a 100644
--- a/SunnyUI/Controls/UITabControlMenu.cs
+++ b/SunnyUI/Controls/UITabControlMenu.cs
@@ -20,6 +20,7 @@
******************************************************************************/
using System;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
@@ -330,100 +331,4 @@ namespace Sunny.UI
}
}
}
-
- public static class UITabControlHelper
- {
- public static UIPage AddPage(this TabControl tabControl, int pageIndex, UIPage page)
- {
- page.PageIndex = pageIndex;
- return tabControl.AddPage(page);
- }
-
- public static UIPage AddPage(this TabControl tabControl, UIPage page)
- {
- if (page.PageIndex < 0)
- {
- page.PageIndex = RandomEx.RandomNumber(8).ToInt();
- }
-
- TabPage tagPage = tabControl.CreateTabIfNotExists(page.PageIndex);
- tagPage.Controls.Add(page);
- tagPage.Text = page.Text;
- page.Show();
-
- return page;
- }
-
- public static void AddPages(this TabControl tabControl, params UIPage[] pages)
- {
- foreach (var page in pages)
- {
- tabControl.AddPage(page);
- }
- }
-
- public static void AddPage(this TabControl tabControl, int index, UITabControlMenu page)
- {
- tabControl.CreateTabIfNotExists(index);
- tabControl.TabPages[index].Controls.Add(page);
- page.Show();
- page.Dock = DockStyle.Fill;
- }
-
- public static void AddPage(this TabControl tabControl, int index, UITabControl page)
- {
- tabControl.CreateTabIfNotExists(index);
- tabControl.TabPages[index].Controls.Add(page);
- page.Show();
- page.Dock = DockStyle.Fill;
- }
-
- private static TabPage CreateTabIfNotExists(this TabControl tabControl, int index)
- {
- if (index < 0) return null;
- for (int i = 0; i < tabControl.TabPages.Count; i++)
- {
- TabPage existPage = tabControl.TabPages[i];
-
- if (existPage.Tag == null)
- {
- if (existPage.Controls.Count > 0)
- {
- continue;
- }
- else
- {
- existPage.Tag = index;
- return existPage;
- }
- }
-
- if (tabControl.TabPages[i].Tag.ToString() == index.ToString())
- {
- return tabControl.TabPages[i];
- }
- }
-
- TabPage page = new TabPage();
- page.SuspendLayout();
- page.Tag = index;
- page.Text = "tabPage" + tabControl.TabPages.Count;
- tabControl.Controls.Add(page);
- page.ResumeLayout();
- return page;
- }
-
- public static void SelectPage(this TabControl tabControl, int pageIndex)
- {
- if (pageIndex < 0) return;
-
- for (int i = 0; i < tabControl.TabPages.Count; i++)
- {
- if (tabControl.TabPages[i].Tag != null && tabControl.TabPages[i].Tag.ToString() == pageIndex.ToString())
- {
- tabControl.SelectedIndex = i;
- }
- }
- }
- }
}
\ No newline at end of file
diff --git a/SunnyUI/Forms/UIForm.cs b/SunnyUI/Forms/UIForm.cs
index 8e401470..5efe4d37 100644
--- a/SunnyUI/Forms/UIForm.cs
+++ b/SunnyUI/Forms/UIForm.cs
@@ -118,6 +118,21 @@ namespace Sunny.UI
}
}
+ if (e.Control is Panel)
+ {
+ List controls = e.Control.GetUIStyleControls("IStyleInterface");
+ foreach (var control in controls)
+ {
+ if (control is IStyleInterface item)
+ {
+ if (!item.StyleCustomMode)
+ {
+ item.Style = Style;
+ }
+ }
+ }
+ }
+
if (ShowTitle && e.Control.Top < TitleHeight)
{
e.Control.Top = TitleHeight;
@@ -595,7 +610,7 @@ namespace Sunny.UI
{
if (FormMoveMouseDown && !MousePosition.Equals(mouseOffset))
{
- if (this.windowState == FormWindowState.Maximized)
+ if (windowState == FormWindowState.Maximized)
{
int MaximizedWidth = Width;
int LocationX = Left;
@@ -1087,7 +1102,7 @@ namespace Sunny.UI
private void UIForm_Shown(object sender, EventArgs e)
{
- SetStyle(UIStyles.Style);
+ //SetStyle(UIStyles.Style);
}
private FormWindowState windowState = FormWindowState.Normal;
diff --git a/SunnyUI/Frames/UIMainFrame.cs b/SunnyUI/Frames/UIMainFrame.cs
index bf7d2f63..4a7f4768 100644
--- a/SunnyUI/Frames/UIMainFrame.cs
+++ b/SunnyUI/Frames/UIMainFrame.cs
@@ -19,6 +19,8 @@
* 2020-05-05: V2.2.5 页面框架基类
******************************************************************************/
+using System;
+
namespace Sunny.UI
{
public partial class UIMainFrame : UIForm
@@ -37,6 +39,13 @@ namespace Sunny.UI
return page;
}
+ public UIPage AddPage(UIPage page, Guid guid)
+ {
+ page.PageGuid = guid;
+ MainContainer.AddPage(page);
+ return page;
+ }
+
public UIPage AddPage(UIPage page)
{
MainContainer.AddPage(page);
diff --git a/SunnyUI/Pages/UIPage.cs b/SunnyUI/Pages/UIPage.cs
index 829904f2..3572ed40 100644
--- a/SunnyUI/Pages/UIPage.cs
+++ b/SunnyUI/Pages/UIPage.cs
@@ -20,9 +20,11 @@
******************************************************************************/
using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
+using System.Drawing.Design;
using System.Windows.Forms;
namespace Sunny.UI
@@ -57,10 +59,54 @@ namespace Sunny.UI
Version = UIGlobal.Version;
}
+ private int _symbolSize = 24;
+
+ [DefaultValue(24)]
+ public int SymbolSize
+ {
+ get => _symbolSize;
+ set
+ {
+ _symbolSize = Math.Max(value, 16);
+ _symbolSize = Math.Min(value, 64);
+ SymbolChange();
+ Invalidate();
+ }
+ }
+
+ private int _symbol;
+
+ [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
+ [Editor(typeof(UIImagePropertyEditor), typeof(UITypeEditor))]
+ [DefaultValue(0)]
+ public int Symbol
+ {
+ get => _symbol;
+ set
+ {
+ _symbol = value;
+ SymbolChange();
+ Invalidate();
+ }
+ }
+
+ protected virtual void SymbolChange()
+ {
+
+ }
+
[Browsable(false)] public Point ParentLocation { get; set; } = new Point(0, 0);
+ [Browsable(false)]
+ [DefaultValue(-1)]
public int PageIndex { get; set; } = -1;
+ [Browsable(false)]
+ public Guid PageGuid { get; set; } = Guid.Empty;
+
+ [Browsable(false), DefaultValue(null)]
+ public TabPage TabPage { get; set; } = null;
+
///
/// 边框颜色
///
@@ -142,8 +188,27 @@ namespace Sunny.UI
base.OnControlAdded(e);
if (e.Control is IStyleInterface ctrl)
+ {
if (!ctrl.StyleCustomMode)
+ {
ctrl.Style = Style;
+ }
+ }
+
+ if (e.Control is Panel)
+ {
+ List controls = e.Control.GetUIStyleControls("IStyleInterface");
+ foreach (var control in controls)
+ {
+ if (control is IStyleInterface item)
+ {
+ if (!item.StyleCustomMode)
+ {
+ item.Style = Style;
+ }
+ }
+ }
+ }
}
public virtual void Init()
@@ -220,7 +285,7 @@ namespace Sunny.UI
private void UIPage_Shown(object sender, EventArgs e)
{
- SetStyle(UIStyles.Style);
+ //SetStyle(UIStyles.Style);
}
}
}
\ No newline at end of file
diff --git a/SunnyUI/Pages/UITitlePage.Designer.cs b/SunnyUI/Pages/UITitlePage.Designer.cs
index c741815b..72c9a077 100644
--- a/SunnyUI/Pages/UITitlePage.Designer.cs
+++ b/SunnyUI/Pages/UITitlePage.Designer.cs
@@ -42,6 +42,8 @@
this.PageTitle.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.PageTitle.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
this.PageTitle.Size = new System.Drawing.Size(800, 35);
+ this.PageTitle.Symbol = 0;
+ this.PageTitle.SymbolSize = 24;
this.PageTitle.TabIndex = 0;
this.PageTitle.Text = "UITitlePage";
this.PageTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -61,7 +63,6 @@
//
// UITitlePage
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.PagePanel);
diff --git a/SunnyUI/Pages/UITitlePage.cs b/SunnyUI/Pages/UITitlePage.cs
index f4e74e2a..d0f27595 100644
--- a/SunnyUI/Pages/UITitlePage.cs
+++ b/SunnyUI/Pages/UITitlePage.cs
@@ -21,6 +21,8 @@
using System.ComponentModel;
using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Windows.Forms;
namespace Sunny.UI
{
@@ -46,6 +48,16 @@ namespace Sunny.UI
}
}
+ protected override void SymbolChange()
+ {
+ base.SymbolChange();
+ int left = Symbol > 0 ? (6 * 2 + SymbolSize) : 6;
+ PageTitle.Padding = new Padding(left, 0, 0, 0);
+ PageTitle.Symbol = Symbol;
+ PageTitle.SymbolSize = SymbolSize;
+ PageTitle.Invalidate();
+ }
+
///
/// 填充颜色,当值为背景色或透明色或空值则不填充
///
@@ -115,6 +127,37 @@ namespace Sunny.UI
FillColor = uiColor.PageTitleFillColor;
ForeColor = uiColor.PageTitleForeColor;
}
+
+ private int symbol = 0;
+ public int Symbol
+ {
+ get => symbol;
+ set
+ {
+ symbol = value;
+ Invalidate();
+ }
+ }
+
+ private int symbolSize = 24;
+ public int SymbolSize
+ {
+ get => symbolSize;
+ set
+ {
+ symbolSize = value;
+ Invalidate();
+ }
+ }
+
+ protected override void OnPaintFore(Graphics g, GraphicsPath path)
+ {
+ base.OnPaintFore(g, path);
+ if (Symbol > 0)
+ {
+ g.DrawFontImage(Symbol, SymbolSize, ForeColor, new Rectangle(6, 0, SymbolSize, Height));
+ }
+ }
}
}
}
\ No newline at end of file
diff --git a/SunnyUI/Style/UIStyle.cs b/SunnyUI/Style/UIStyle.cs
index 39abcb14..9576c538 100644
--- a/SunnyUI/Style/UIStyle.cs
+++ b/SunnyUI/Style/UIStyle.cs
@@ -724,7 +724,7 @@ namespace Sunny.UI
/// 容器
/// 接口名称
/// 控件列表
- private static List GetUIStyleControls(this Control ctrl, string interfaceName)
+ public static List GetUIStyleControls(this Control ctrl, string interfaceName)
{
List values = new List();
diff --git a/SunnyUI/SunnyUI.csproj b/SunnyUI/SunnyUI.csproj
index d2070fc4..9b437de7 100644
--- a/SunnyUI/SunnyUI.csproj
+++ b/SunnyUI/SunnyUI.csproj
@@ -104,6 +104,7 @@
Component
+
UserControl
diff --git a/SunnyUI/Units/UTemplate.cs b/SunnyUI/Units/UTemplate.cs
index 1ce14087..e282348d 100644
--- a/SunnyUI/Units/UTemplate.cs
+++ b/SunnyUI/Units/UTemplate.cs
@@ -27,7 +27,7 @@ namespace Sunny.UI
///
/// 模版引擎
///
- public class Template
+ public class UITemplate
{
private string Content { get; set; }
@@ -35,7 +35,7 @@ namespace Sunny.UI
/// 模版引擎
///
///
- public Template(string content)
+ public UITemplate(string content)
{
Content = content;
}
@@ -46,7 +46,7 @@ namespace Sunny.UI
///
///
///
- public Template Set(string key, string value)
+ public UITemplate Set(string key, string value)
{
Content = Content.Replace("{{" + key + "}}", value);
return this;
diff --git a/Updates.txt b/Updates.txt
index d272f8f3..57c7606e 100644
--- a/Updates.txt
+++ b/Updates.txt
@@ -1,5 +1,8 @@
+ ӣ - ɾ *
+2020.06.08
+* ҳ֧ͨPageIndexPageGuid
+
2020.06.08
* UINAVMenuһϢBug
* UIPieChartToolTipãʾɫ