+ 新增UIComboboxEx,从Combobox原生控件继承,以方便做查询过滤等操作

This commit is contained in:
Sunny 2021-02-20 15:37:47 +08:00
parent 33faa23295
commit 62f87012f7
9 changed files with 554 additions and 128 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -28,54 +28,54 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.Windows.Forms.TreeNode treeNode61 = new System.Windows.Forms.TreeNode("节点0"); System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("节点0");
System.Windows.Forms.TreeNode treeNode62 = new System.Windows.Forms.TreeNode("节点1"); System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode63 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode64 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode57 = new System.Windows.Forms.TreeNode("节点0"); System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("节点0");
System.Windows.Forms.TreeNode treeNode58 = new System.Windows.Forms.TreeNode("节点1"); System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode59 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode60 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode33 = new System.Windows.Forms.TreeNode("节点0"); System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("节点0");
System.Windows.Forms.TreeNode treeNode34 = new System.Windows.Forms.TreeNode("节点1"); System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode35 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode36 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode37 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode33, treeNode1,
treeNode34, treeNode2,
treeNode35, treeNode3,
treeNode36}); treeNode4});
System.Windows.Forms.TreeNode treeNode38 = new System.Windows.Forms.TreeNode("节点4"); System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("节点4");
System.Windows.Forms.TreeNode treeNode39 = new System.Windows.Forms.TreeNode("节点5"); System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("节点5");
System.Windows.Forms.TreeNode treeNode40 = new System.Windows.Forms.TreeNode("节点6"); System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("节点6");
System.Windows.Forms.TreeNode treeNode41 = new System.Windows.Forms.TreeNode("节点7"); System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("节点7");
System.Windows.Forms.TreeNode treeNode42 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode38, treeNode6,
treeNode39, treeNode7,
treeNode40, treeNode8,
treeNode41}); treeNode9});
System.Windows.Forms.TreeNode treeNode43 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode44 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode45 = new System.Windows.Forms.TreeNode("节点00"); System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("节点00");
System.Windows.Forms.TreeNode treeNode46 = new System.Windows.Forms.TreeNode("节点01"); System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("节点01");
System.Windows.Forms.TreeNode treeNode47 = new System.Windows.Forms.TreeNode("节点02"); System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("节点02");
System.Windows.Forms.TreeNode treeNode48 = new System.Windows.Forms.TreeNode("节点03"); System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("节点03");
System.Windows.Forms.TreeNode treeNode49 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode45, treeNode13,
treeNode46, treeNode14,
treeNode47, treeNode15,
treeNode48}); treeNode16});
System.Windows.Forms.TreeNode treeNode50 = new System.Windows.Forms.TreeNode("节点11"); System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("节点11");
System.Windows.Forms.TreeNode treeNode51 = new System.Windows.Forms.TreeNode("节点12"); System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("节点12");
System.Windows.Forms.TreeNode treeNode52 = new System.Windows.Forms.TreeNode("节点13"); System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("节点13");
System.Windows.Forms.TreeNode treeNode53 = new System.Windows.Forms.TreeNode("节点14"); System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("节点14");
System.Windows.Forms.TreeNode treeNode54 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] { System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode50, treeNode18,
treeNode51, treeNode19,
treeNode52, treeNode20,
treeNode53}); treeNode21});
System.Windows.Forms.TreeNode treeNode55 = new System.Windows.Forms.TreeNode("节点2"); System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode56 = new System.Windows.Forms.TreeNode("节点3"); System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("节点3");
this.uiLine8 = new Sunny.UI.UILine(); this.uiLine8 = new Sunny.UI.UILine();
this.uiDatetimePicker1 = new Sunny.UI.UIDatetimePicker(); this.uiDatetimePicker1 = new Sunny.UI.UIDatetimePicker();
this.uiColorPicker1 = new Sunny.UI.UIColorPicker(); this.uiColorPicker1 = new Sunny.UI.UIColorPicker();
@ -92,11 +92,17 @@
this.uiComboTreeView2 = new Sunny.UI.UIComboTreeView(); this.uiComboTreeView2 = new Sunny.UI.UIComboTreeView();
this.uiComboTreeView3 = new Sunny.UI.UIComboTreeView(); this.uiComboTreeView3 = new Sunny.UI.UIComboTreeView();
this.uiComboTreeView4 = new Sunny.UI.UIComboTreeView(); this.uiComboTreeView4 = new Sunny.UI.UIComboTreeView();
this.uiLine4 = new Sunny.UI.UILine();
this.uiComboboxEx1 = new Sunny.UI.UIComboboxEx();
this.uiComboboxEx2 = new Sunny.UI.UIComboboxEx();
this.PagePanel.SuspendLayout(); this.PagePanel.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// PagePanel // PagePanel
// //
this.PagePanel.Controls.Add(this.uiComboboxEx2);
this.PagePanel.Controls.Add(this.uiComboboxEx1);
this.PagePanel.Controls.Add(this.uiLine4);
this.PagePanel.Controls.Add(this.uiComboTreeView3); this.PagePanel.Controls.Add(this.uiComboTreeView3);
this.PagePanel.Controls.Add(this.uiComboTreeView4); this.PagePanel.Controls.Add(this.uiComboTreeView4);
this.PagePanel.Controls.Add(this.uiComboTreeView2); this.PagePanel.Controls.Add(this.uiComboTreeView2);
@ -292,19 +298,19 @@
this.uiComboTreeView1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView1.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView1.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView1.Name = "uiComboTreeView1"; this.uiComboTreeView1.Name = "uiComboTreeView1";
treeNode61.Name = "节点0"; treeNode29.Name = "节点0";
treeNode61.Text = "节点0"; treeNode29.Text = "节点0";
treeNode62.Name = "节点1"; treeNode30.Name = "节点1";
treeNode62.Text = "节点1"; treeNode30.Text = "节点1";
treeNode63.Name = "节点2"; treeNode31.Name = "节点2";
treeNode63.Text = "节点2"; treeNode31.Text = "节点2";
treeNode64.Name = "节点3"; treeNode32.Name = "节点3";
treeNode64.Text = "节点3"; treeNode32.Text = "节点3";
this.uiComboTreeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode61, treeNode29,
treeNode62, treeNode30,
treeNode63, treeNode31,
treeNode64}); treeNode32});
this.uiComboTreeView1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView1.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView1.Size = new System.Drawing.Size(150, 29);
this.uiComboTreeView1.TabIndex = 43; this.uiComboTreeView1.TabIndex = 43;
@ -332,19 +338,19 @@
this.uiComboTreeView2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView2.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView2.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView2.Name = "uiComboTreeView2"; this.uiComboTreeView2.Name = "uiComboTreeView2";
treeNode57.Name = "节点0"; treeNode25.Name = "节点0";
treeNode57.Text = "节点0"; treeNode25.Text = "节点0";
treeNode58.Name = "节点1"; treeNode26.Name = "节点1";
treeNode58.Text = "节点1"; treeNode26.Text = "节点1";
treeNode59.Name = "节点2"; treeNode27.Name = "节点2";
treeNode59.Text = "节点2"; treeNode27.Text = "节点2";
treeNode60.Name = "节点3"; treeNode28.Name = "节点3";
treeNode60.Text = "节点3"; treeNode28.Text = "节点3";
this.uiComboTreeView2.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView2.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode57, treeNode25,
treeNode58, treeNode26,
treeNode59, treeNode27,
treeNode60}); treeNode28});
this.uiComboTreeView2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView2.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView2.Size = new System.Drawing.Size(150, 29);
this.uiComboTreeView2.TabIndex = 46; this.uiComboTreeView2.TabIndex = 46;
@ -361,35 +367,35 @@
this.uiComboTreeView3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView3.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView3.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView3.Name = "uiComboTreeView3"; this.uiComboTreeView3.Name = "uiComboTreeView3";
treeNode33.Name = "节点0"; treeNode1.Name = "节点0";
treeNode33.Text = "节点0"; treeNode1.Text = "节点0";
treeNode34.Name = "节点1"; treeNode2.Name = "节点1";
treeNode34.Text = "节点1"; treeNode2.Text = "节点1";
treeNode35.Name = "节点2"; treeNode3.Name = "节点2";
treeNode35.Text = "节点2"; treeNode3.Text = "节点2";
treeNode36.Name = "节点3"; treeNode4.Name = "节点3";
treeNode36.Text = "节点3"; treeNode4.Text = "节点3";
treeNode37.Name = "节点0"; treeNode5.Name = "节点0";
treeNode37.Text = "节点0"; treeNode5.Text = "节点0";
treeNode38.Name = "节点4"; treeNode6.Name = "节点4";
treeNode38.Text = "节点4"; treeNode6.Text = "节点4";
treeNode39.Name = "节点5"; treeNode7.Name = "节点5";
treeNode39.Text = "节点5"; treeNode7.Text = "节点5";
treeNode40.Name = "节点6"; treeNode8.Name = "节点6";
treeNode40.Text = "节点6"; treeNode8.Text = "节点6";
treeNode41.Name = "节点7"; treeNode9.Name = "节点7";
treeNode41.Text = "节点7"; treeNode9.Text = "节点7";
treeNode42.Name = "节点1"; treeNode10.Name = "节点1";
treeNode42.Text = "节点1"; treeNode10.Text = "节点1";
treeNode43.Name = "节点2"; treeNode11.Name = "节点2";
treeNode43.Text = "节点2"; treeNode11.Text = "节点2";
treeNode44.Name = "节点3"; treeNode12.Name = "节点3";
treeNode44.Text = "节点3"; treeNode12.Text = "节点3";
this.uiComboTreeView3.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView3.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode37, treeNode5,
treeNode42, treeNode10,
treeNode43, treeNode11,
treeNode44}); treeNode12});
this.uiComboTreeView3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView3.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView3.ShowLines = true; this.uiComboTreeView3.ShowLines = true;
this.uiComboTreeView3.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView3.Size = new System.Drawing.Size(150, 29);
@ -405,41 +411,83 @@
this.uiComboTreeView4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.uiComboTreeView4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboTreeView4.MinimumSize = new System.Drawing.Size(63, 0); this.uiComboTreeView4.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboTreeView4.Name = "uiComboTreeView4"; this.uiComboTreeView4.Name = "uiComboTreeView4";
treeNode45.Name = "节点0"; treeNode13.Name = "节点0";
treeNode45.Text = "节点00"; treeNode13.Text = "节点00";
treeNode46.Name = "节点1"; treeNode14.Name = "节点1";
treeNode46.Text = "节点01"; treeNode14.Text = "节点01";
treeNode47.Name = "节点2"; treeNode15.Name = "节点2";
treeNode47.Text = "节点02"; treeNode15.Text = "节点02";
treeNode48.Name = "节点3"; treeNode16.Name = "节点3";
treeNode48.Text = "节点03"; treeNode16.Text = "节点03";
treeNode49.Name = "节点0"; treeNode17.Name = "节点0";
treeNode49.Text = "节点0"; treeNode17.Text = "节点0";
treeNode50.Name = "节点4"; treeNode18.Name = "节点4";
treeNode50.Text = "节点11"; treeNode18.Text = "节点11";
treeNode51.Name = "节点5"; treeNode19.Name = "节点5";
treeNode51.Text = "节点12"; treeNode19.Text = "节点12";
treeNode52.Name = "节点6"; treeNode20.Name = "节点6";
treeNode52.Text = "节点13"; treeNode20.Text = "节点13";
treeNode53.Name = "节点7"; treeNode21.Name = "节点7";
treeNode53.Text = "节点14"; treeNode21.Text = "节点14";
treeNode54.Name = "节点1"; treeNode22.Name = "节点1";
treeNode54.Text = "节点1"; treeNode22.Text = "节点1";
treeNode55.Name = "节点2"; treeNode23.Name = "节点2";
treeNode55.Text = "节点2"; treeNode23.Text = "节点2";
treeNode56.Name = "节点3"; treeNode24.Name = "节点3";
treeNode56.Text = "节点3"; treeNode24.Text = "节点3";
this.uiComboTreeView4.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { this.uiComboTreeView4.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode49, treeNode17,
treeNode54, treeNode22,
treeNode55, treeNode23,
treeNode56}); treeNode24});
this.uiComboTreeView4.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2); this.uiComboTreeView4.Padding = new System.Windows.Forms.Padding(0, 0, 30, 2);
this.uiComboTreeView4.ShowLines = true; this.uiComboTreeView4.ShowLines = true;
this.uiComboTreeView4.Size = new System.Drawing.Size(150, 29); this.uiComboTreeView4.Size = new System.Drawing.Size(150, 29);
this.uiComboTreeView4.TabIndex = 47; this.uiComboTreeView4.TabIndex = 47;
this.uiComboTreeView4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; this.uiComboTreeView4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
// //
// uiLine4
//
this.uiLine4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine4.Location = new System.Drawing.Point(30, 261);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
this.uiLine4.Size = new System.Drawing.Size(308, 20);
this.uiLine4.TabIndex = 49;
this.uiLine4.Text = "UIComboBox";
this.uiLine4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiComboboxEx1
//
this.uiComboboxEx1.BackColor = System.Drawing.Color.White;
this.uiComboboxEx1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.uiComboboxEx1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiComboboxEx1.FormattingEnabled = true;
this.uiComboboxEx1.Items.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5"});
this.uiComboboxEx1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiComboboxEx1.Location = new System.Drawing.Point(30, 294);
this.uiComboboxEx1.Name = "uiComboboxEx1";
this.uiComboboxEx1.Size = new System.Drawing.Size(150, 30);
this.uiComboboxEx1.TabIndex = 50;
//
// uiComboboxEx2
//
this.uiComboboxEx2.BackColor = System.Drawing.Color.White;
this.uiComboboxEx2.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.uiComboboxEx2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.uiComboboxEx2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiComboboxEx2.FormattingEnabled = true;
this.uiComboboxEx2.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiComboboxEx2.Location = new System.Drawing.Point(188, 294);
this.uiComboboxEx2.Name = "uiComboboxEx2";
this.uiComboboxEx2.Size = new System.Drawing.Size(150, 30);
this.uiComboboxEx2.TabIndex = 51;
//
// FCombobox // FCombobox
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F); this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
@ -471,5 +519,8 @@
private UIComboTreeView uiComboTreeView1; private UIComboTreeView uiComboTreeView1;
private UIComboTreeView uiComboTreeView3; private UIComboTreeView uiComboTreeView3;
private UIComboTreeView uiComboTreeView4; private UIComboTreeView uiComboTreeView4;
private UILine uiLine4;
private UIComboboxEx uiComboboxEx2;
private UIComboboxEx uiComboboxEx1;
} }
} }

View File

@ -20,6 +20,10 @@ namespace Sunny.UI.Demo
uiComboBox2.ValueMember = "Id"; uiComboBox2.ValueMember = "Id";
uiComboBox2.DisplayMember = "Name"; uiComboBox2.DisplayMember = "Name";
uiComboBox2.DataSource = infoList; uiComboBox2.DataSource = infoList;
uiComboboxEx2.ValueMember = "Id";
uiComboboxEx2.DisplayMember = "Name";
uiComboboxEx2.DataSource = infoList;
} }
private void uiDatePicker1_ValueChanged(object sender, DateTime value) private void uiDatePicker1_ValueChanged(object sender, DateTime value)

View File

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

View File

@ -0,0 +1,251 @@
/******************************************************************************
* SunnyUI
* CopyRight (C) 2012-2020 ShenYongHua().
* QQ群56829229 QQ17612584 EMailSunnyUI@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.
* 使
******************************************************************************
* : UIComboBoxEx.cs
* : Combobox
* : V3.0
* : 2021-02-20
*
* 2021-02-20: V3.0.1
******************************************************************************/
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace Sunny.UI
{
public class UIComboboxEx : ComboBox, IStyleInterface
{
public UIComboboxEx()
{
Version = UIGlobal.Version;
base.Font = UIFontColor.Font;
base.ForeColor = UIFontColor.Primary;
base.BackColor = Color.White;
DrawMode = DrawMode.OwnerDrawFixed;
//FlatStyle = FlatStyle.Flat;
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
SetStyle(ControlStyles.Selectable, true);
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
base.DoubleBuffered = true;
UpdateStyles();
Width = 150;
}
private UIStyle _style = UIStyle.Blue;
protected override void OnBackColorChanged(EventArgs e)
{
base.OnBackColorChanged(e);
Invalidate();
}
/// <summary>
/// 字体颜色
/// </summary>
[Description("字体颜色"), Category("SunnyUI")]
[DefaultValue(typeof(Color), "48, 48, 48")]
public override Color ForeColor
{
get => foreColor;
set => SetForeColor(value);
}
/// <summary>
/// 设置字体颜色
/// </summary>
/// <param name="value">颜色</param>
protected void SetForeColor(Color value)
{
if (foreColor != value)
{
foreColor = value;
_style = UIStyle.Custom;
Invalidate();
}
}
/// <summary>
/// 边框颜色
/// </summary>
[Description("边框颜色"), Category("SunnyUI")]
[DefaultValue(typeof(Color), "80, 160, 255")]
public Color RectColor
{
get => rectColor;
set => SetRectColor(value);
}
/// <summary>
/// 设置边框颜色
/// </summary>
/// <param name="value">颜色</param>
protected void SetRectColor(Color value)
{
if (rectColor != value)
{
rectColor = value;
_style = UIStyle.Custom;
Invalidate();
}
}
/// <summary>
/// 主题样式
/// </summary>
[DefaultValue(UIStyle.Blue), Description("主题样式"), Category("SunnyUI")]
public UIStyle Style
{
get => _style;
set => SetStyle(value);
}
/// <summary>
/// 自定义主题风格
/// </summary>
[DefaultValue(false)]
[Description("获取或设置可以自定义主题风格"), Category("SunnyUI")]
public bool StyleCustomMode { get; set; }
public string Version { get; }
/// <summary>
/// Tag字符串
/// </summary>
[DefaultValue(null)]
[Description("获取或设置包含有关控件的数据的对象字符串"), Category("SunnyUI")]
public string TagString { get; set; }
/// <summary>
/// 设置主题样式
/// </summary>
/// <param name="style">主题样式</param>
public void SetStyle(UIStyle style)
{
SetStyleColor(UIStyles.GetStyleColor(style));
_style = style;
}
/// <summary>
/// 设置主题样式颜色
/// </summary>
/// <param name="uiColor"></param>
public virtual void SetStyleColor(UIBaseStyle uiColor)
{
if (uiColor.IsCustom()) return;
rectColor = uiColor.RectColor;
foreColor = UIFontColor.Primary;
_itemSelectBackColor = uiColor.ListItemSelectBackColor;
_itemSelectForeColor = uiColor.ListItemSelectForeColor;
Invalidate();
}
private Color _itemSelectBackColor = UIColor.Blue;
private Color _itemSelectForeColor = Color.White;
[Description("下拉框选中背景颜色"), Category("SunnyUI")]
[DefaultValue(typeof(Color), "80, 160, 255")]
public Color ItemSelectBackColor
{
get => _itemSelectBackColor;
set
{
if (_itemSelectBackColor != value)
{
_itemSelectBackColor = value;
_style = UIStyle.Custom;
if (DesignMode)
Invalidate();
}
}
}
[Description("下拉框选中字体颜色"), Category("SunnyUI")]
[DefaultValue(typeof(Color), "White")]
public Color ItemSelectForeColor
{
get => _itemSelectForeColor;
set
{
if (_itemSelectForeColor != value)
{
_itemSelectForeColor = value;
_style = UIStyle.Custom;
if (DesignMode)
Invalidate();
}
}
}
/// <summary>
/// 边框颜色
/// </summary>
protected Color rectColor = UIStyles.Blue.RectColor;
/// <summary>
/// 字体颜色
/// </summary>
protected Color foreColor = UIFontColor.Primary;
protected override void OnDrawItem(DrawItemEventArgs e)
{
Color fColor = ForeColor;
Color bColor = BackColor;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
fColor = ItemSelectForeColor;
bColor = ItemSelectBackColor;
}
e.Graphics.FillRectangle(bColor, e.Bounds);
if (e.Index >= 0)
{
e.Graphics.DrawString(GetItemText(Items[e.Index]), Font, fColor, e.Bounds.X + 1, e.Bounds.Y);
}
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
//WM_PAINT = 0xf; 要求一个窗口重画自己,即Paint事件时
//WM_CTLCOLOREDIT = 0x133;当一个编辑型控件将要被绘制时发送此消息给它的父窗口;
//通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色
//windows消息值表,可参考:http://hi.baidu.com/dooy/blog/item/0e770a24f70e3b2cd407421b.html
if (m.Msg == Win32.User.WM_PAINT || m.Msg == Win32.User.WM_CTLCOLOREDIT)
{
IntPtr hDC = (IntPtr)Win32.User.GetWindowDC(m.HWnd);
if (hDC.ToInt32() == 0) return;
Graphics g = Graphics.FromHdc(hDC);
g.FillRectangle(BackColor, new Rectangle(0, 0, Width, Height));
g.DrawRectangle(rectColor, 0, 0, Width - 1, Height - 1);
if (Text.IsValid())
{
SizeF sf = g.MeasureString(Text, Font);
g.DrawString(Text, Font, ForeColor, 0, (Height - sf.Height) / 2);
}
g.DrawFontImage(61703, 24, rectColor, new Rectangle(Width - 28, 1, 28, Height - 2));
Win32.User.ReleaseDC(m.HWnd, hDC);
}
}
}
}