diff --git a/.gitignore b/.gitignore
index d67ce165..72fd6aa3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -342,3 +342,4 @@ ASALocalRun/
healthchecksdb
/SunnyUI.Net5.Demo/bin/net5.0-windows
/Bin/net472
+/Bin/net6.0-windows
diff --git a/Bin/net40/SunnyUI.Common.dll b/Bin/net40/SunnyUI.Common.dll
index 35a8ecc2..7189065b 100644
Binary files a/Bin/net40/SunnyUI.Common.dll and b/Bin/net40/SunnyUI.Common.dll differ
diff --git a/Bin/net40/SunnyUI.Demo.exe b/Bin/net40/SunnyUI.Demo.exe
index ac8b02a6..d9db3154 100644
Binary files a/Bin/net40/SunnyUI.Demo.exe and b/Bin/net40/SunnyUI.Demo.exe differ
diff --git a/Bin/net40/SunnyUI.dll b/Bin/net40/SunnyUI.dll
index 51659654..81defd89 100644
Binary files a/Bin/net40/SunnyUI.dll and b/Bin/net40/SunnyUI.dll differ
diff --git a/SunnyUI.Demo/Properties/AssemblyInfo.cs b/SunnyUI.Demo/Properties/AssemblyInfo.cs
index e759a97e..55df25a1 100644
--- a/SunnyUI.Demo/Properties/AssemblyInfo.cs
+++ b/SunnyUI.Demo/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.0.8.0")]
-[assembly: AssemblyFileVersion("3.0.8.0")]
+[assembly: AssemblyVersion("3.0.9.0")]
+[assembly: AssemblyFileVersion("3.0.9.0")]
diff --git a/SunnyUI.Demo/SunnyUI.Demo.csproj b/SunnyUI.Demo/SunnyUI.Demo.csproj
index 4bbcc0b5..4bb2698d 100644
--- a/SunnyUI.Demo/SunnyUI.Demo.csproj
+++ b/SunnyUI.Demo/SunnyUI.Demo.csproj
@@ -38,12 +38,12 @@
app.manifest
-
+
False
..\Bin\net40\SunnyUI.dll
-
- ..\packages\SunnyUI.Common.3.0.8\lib\net40\SunnyUI.Common.dll
+
+ ..\packages\SunnyUI.Common.3.0.9\lib\net40\SunnyUI.Common.dll
diff --git a/SunnyUI.Demo/packages.config b/SunnyUI.Demo/packages.config
index 101f8ea7..3ed6e0c4 100644
--- a/SunnyUI.Demo/packages.config
+++ b/SunnyUI.Demo/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/SunnyUI.Net5.Demo/SunnyUI.Net5.Demo.csproj b/SunnyUI.Net5.Demo/SunnyUI.Net5.Demo.csproj
index d1494e45..cca8e828 100644
--- a/SunnyUI.Net5.Demo/SunnyUI.Net5.Demo.csproj
+++ b/SunnyUI.Net5.Demo/SunnyUI.Net5.Demo.csproj
@@ -6,9 +6,9 @@
true
Sunny.UI.Demo
SunnyUI.ico
- 3.0.8.0
- 3.0.8.0
- 3.0.8
+ 3.0.9.0
+ 3.0.9.0
+ 3.0.9
SunnyUI
SunnyUI.Net
Copyright ©SunnyUI.Net 2012-2021
@@ -25,7 +25,7 @@
-
+
diff --git a/SunnyUI/Common/UImage.cs b/SunnyUI/Common/UImage.cs
index f5741095..d9a7b29a 100644
--- a/SunnyUI/Common/UImage.cs
+++ b/SunnyUI/Common/UImage.cs
@@ -19,6 +19,7 @@
* 2020-01-01: V2.2.0 增加文件说明
******************************************************************************/
+#pragma warning disable CA1416 // 验证平台兼容性
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -394,7 +395,9 @@ namespace Sunny.UI
/// Image
public static Image GetImageFromUrl(string url)
{
+#pragma warning disable SYSLIB0014 // 类型或成员已过时
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(url));
+#pragma warning restore SYSLIB0014 // 类型或成员已过时
req.Method = "GET";
req.UserAgent = " Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko";
req.ContentType = "application/x-www-form-urlencoded";
diff --git a/SunnyUI/Common/UIniFileEx.cs b/SunnyUI/Common/UIniFileEx.cs
deleted file mode 100644
index a6372b1b..00000000
--- a/SunnyUI/Common/UIniFileEx.cs
+++ /dev/null
@@ -1,788 +0,0 @@
-/******************************************************************************
- * SunnyUI 开源控件库、工具类库、扩展类库、多页面开发框架。
- * CopyRight (C) 2012-2021 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.
- * 如果您使用此代码,请保留此说明。
- ******************************************************************************
- * 文件名称: UIniFileEx.cs
- * 文件说明: INI 文件读取类(不用WinAPI)
- * 当前版本: V3.0
- * 创建日期: 2021-10-27
- *
- * 2021-10-27: V2.2.0 增加文件说明
-******************************************************************************/
-
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using System.Drawing;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Text.RegularExpressions;
-
-namespace Sunny.UI
-{
- public class IniFileEx
- {
- private readonly Dictionary data = new();
-
- private static readonly Regex regRemoveEmptyLines =
- new Regex
- (
- @"(\s*;[\d\D]*?\r?\n)+|\r?\n(\s*\r?\n)*",
- RegexOptions.Multiline | RegexOptions.Compiled
- );
-
- private static readonly Regex regParseIniData =
- new Regex
- (
- @"
- (?
- ^\s*\[(?[^\]]+)?\]\s*$
- )
- |
- (?
- ^\s*(?[^(\s*\=\s*)]+)?\s*\=\s*(?[\d\D]*)$
- )",
- RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace
- );
-
- public IniFileEx(string fileName) : this(fileName, Encoding.Default) { }
-
- public IniFileEx(string fileName, Encoding encoding)
- {
- FileName = fileName;
- Encoding = encoding;
- using FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
- ReadIniData(fs, encoding);
- }
-
- ///
- /// 文件名
- ///
- [Description("文件名")]
- public string FileName { get; set; } //INI文件名
-
- public Encoding Encoding { get; set; }
-
- private void ReadIniData(Stream stream, Encoding encoding)
- {
- string lastSection = string.Empty;
- data.Add(lastSection, new NameValueCollection());
- if (stream != null && encoding != null)
- {
- using StreamReader reader = new StreamReader(stream, encoding);
- string iniData = reader.ReadToEnd();
-
- iniData = regRemoveEmptyLines.Replace(iniData, "\n");
- string[] lines = iniData.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
-
- foreach (string s in lines)
- {
- Match m = regParseIniData.Match(s);
- if (m.Success)
- {
- if (m.Groups["IsSection"].Length > 0)
- {
- string sName = m.Groups["SectionName"].Value.ToLowerInvariant();
- if (lastSection != sName)
- {
- lastSection = sName;
- if (!data.ContainsKey(sName))
- {
- data.Add(sName, new NameValueCollection());
- }
- }
- }
- else if (m.Groups["IsKeyValue"].Length > 0)
- {
- data[lastSection].Add(m.Groups["Key"].Value, m.Groups["Value"].Value);
- }
- }
- }
- }
- }
-
- public NameValueCollection this[string section]
- {
- get
- {
- section = section.ToLowerInvariant();
- if (!data.ContainsKey(section))
- data.Add(section, new NameValueCollection());
- return data[section];
- }
- }
-
- public string this[string section, string key]
- {
- get => this[section][key];
- set => this[section][key] = value;
- }
-
- public object this[string section, string key, Type t]
- {
- get
- {
- if (t == null || t == (Type)Type.Missing)
- return this[section][key];
- return GetValue(section, key, null, t);
- }
- set
- {
- if (t == null || t == (Type)Type.Missing)
- this[section][key] = String.Empty;
- else
- SetValue(section, key, value);
- }
- }
-
- public string[] KeyNames(string section)
- {
- return this[section].AllKeys;
- }
-
- public string[] SectionValues(string section)
- {
- return this[section].GetValues(0);
- }
-
- private object GetValue(string section, string key, object defaultValue, Type t)
- {
- if (!data.ContainsKey(section)) return defaultValue;
- string v = data[section][key];
- if (string.IsNullOrEmpty(v)) return defaultValue;
- TypeConverter conv = TypeDescriptor.GetConverter(t);
- if (!conv.CanConvertFrom(typeof(string))) return defaultValue;
-
- try
- {
- return conv.ConvertFrom(v);
- }
- catch
- {
- return defaultValue;
- }
- }
-
- private T GetValue(string section, string key, T defaultValue)
- {
- return (T)GetValue(section, key, defaultValue, typeof(T));
- }
-
- private void SetValue(string section, string key, object value)
- {
- if (value == null)
- {
- this[section][key] = string.Empty;
- }
- else
- {
- TypeConverter conv = TypeDescriptor.GetConverter(value);
- if (!conv.CanConvertTo(typeof(string)))
- {
- this[section][key] = value.ToString();
- }
- else
- {
- this[section][key] = (string)conv.ConvertTo(value, typeof(string));
- }
- }
-
- UpdateFile();
- }
-
- public void Write(string section, string key, string value)
- {
- SetValue(section, key, value);
- }
-
- public string Read(string section, string key, string Default)
- {
- return GetValue(section, key, Default);
- }
-
- ///
- /// 读取指定的Section的所有Value到列表中
- ///
- /// section
- public NameValueCollection GetSectionValues(string section)
- {
- return this[section];
- }
-
- public void UpdateFile()
- {
- Save();
- }
-
- public void Save()
- {
- Save(FileName, Encoding);
- }
-
- public void Save(string fileName, Encoding encoding)
- {
- using FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
- Save(fs, encoding);
- }
-
- private void Save(Stream stream, Encoding encoding)
- {
- using StreamWriter sw = new StreamWriter(stream, encoding);
- foreach (var cur in data)
- {
- if (!string.IsNullOrEmpty(cur.Key))
- {
- sw.WriteLine("[{0}]", cur.Key);
- }
-
- NameValueCollection col = cur.Value;
- foreach (string key in col.Keys)
- {
- if (!string.IsNullOrEmpty(key))
- {
- string value = col[key];
- if (!string.IsNullOrEmpty(value))
- sw.WriteLine("{0}={1}", key, value);
- }
- }
- }
-
- sw.Flush();
- }
-
- public bool HasSection(string section)
- {
- return data.ContainsKey(section.ToLowerInvariant());
- }
-
- public bool HasKey(string section, string key)
- {
- return
- data.ContainsKey(section) &&
- !string.IsNullOrEmpty(data[section][key]);
- }
-
- ///
- /// 写结构
- ///
- /// section
- /// key
- /// value
- /// T
- public void WriteStruct(string section, string key, T value) where T : struct
- {
- Write(section, key, value.StructToBytes());
- }
-
- ///
- /// 读结构
- ///
- /// T
- /// section
- /// key
- /// Normal
- /// 结果
- public T ReadStruct(string section, string key, T Default) where T : struct
- {
- //得到结构体的大小
- int size = Default.Size();
- byte[] bytes = Read(section, key, "").ToHexBytes();
- return size > bytes.Length ? Default : bytes.ToStruct();
- }
-
- ///
- /// 写Byte数组
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, byte[] value)
- {
- Write(section, key, value.ToHexString());
- }
-
- ///
- /// 读Byte数组
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public byte[] ReadBytes(string section, string key, byte[] Default)
- {
- return Read(section, key, Default.ToHexString()).ToHexBytes();
- }
-
- ///
- /// 写Char
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, char value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读Char
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public char ReadChar(string section, string key, char Default = ' ')
- {
- return Read(section, key, Default.ToString()).ToChar(Default);
- }
-
- ///
- /// 写Decimal
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, decimal value)
- {
- Write(section, key, value.ToString(CultureInfo.InvariantCulture));
- }
-
- ///
- /// 读Decimal
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public decimal ReadDecimal(string section, string key, decimal Default = 0)
- {
- return Read(section, key, Default.ToString(CultureInfo.InvariantCulture)).ToDecimal(Default);
- }
-
- ///
- /// 写整数
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, short value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读整数
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public short ReadShort(string section, string key, short Default = 0)
- {
- return Read(section, key, Default.ToString()).ToShort(Default);
- }
-
- ///
- /// 写整数
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, ushort value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读整数
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public ushort ReadUShort(string section, string key, ushort Default = 0)
- {
- return Read(section, key, Default.ToString()).ToUShort(Default);
- }
-
- ///
- /// 写整数
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, int value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读整数
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public int ReadInt(string section, string key, int Default = 0)
- {
- return Read(section, key, Default.ToString()).ToInt(Default);
- }
-
- ///
- /// 写整数
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, uint value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读整数
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public uint ReadUInt(string section, string key, uint Default = 0)
- {
- return Read(section, key, Default.ToString()).ToUInt(Default);
- }
-
- ///
- /// 写整数
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, ulong value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读整数
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public ulong ReadULong(string section, string key, ulong Default = 0)
- {
- return Read(section, key, Default.ToString()).ToULong(Default);
- }
-
- ///
- /// 写整数
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, long value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读整数
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public long ReadLong(string section, string key, long Default = 0)
- {
- return Read(section, key, Default.ToString()).ToLong(Default);
- }
-
- ///
- /// 写布尔
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, bool value)
- {
- Write(section, key, value ? bool.TrueString : bool.FalseString);
- }
-
- ///
- /// 读布尔
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public bool ReadBool(string section, string key, bool Default = false)
- {
- string str = Read(section, key, Default.ToString());
- if (string.Equals(str, bool.TrueString, StringComparison.CurrentCultureIgnoreCase))
- {
- return true;
- }
-
- if (string.Equals(str, bool.FalseString, StringComparison.CurrentCultureIgnoreCase))
- {
- return false;
- }
-
- return Default;
- }
-
- ///
- /// 写Double
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, double value)
- {
- Write(section, key, value.ToString(CultureInfo.InvariantCulture));
- }
-
- ///
- /// 读Double
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public double ReadDouble(string section, string key, double Default = 0)
- {
- return Read(section, key, Default.ToString(CultureInfo.InvariantCulture)).ToDouble(Default);
- }
-
- ///
- /// 写Float
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, float value)
- {
- Write(section, key, value.ToString(CultureInfo.InvariantCulture));
- }
-
- ///
- /// 读Float
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public float ReadFloat(string section, string key, float Default = 0)
- {
- return Read(section, key, Default.ToString(CultureInfo.InvariantCulture)).ToFloat(Default);
- }
-
- ///
- /// 写Byte
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, byte value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读Byte
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public byte ReadByte(string section, string key, byte Default = 0)
- {
- return Read(section, key, Default.ToString()).ToByte(Default);
- }
-
- ///
- /// 写SByte
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, sbyte value)
- {
- Write(section, key, value.ToString());
- }
-
- ///
- /// 读Byte
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public sbyte ReadSByte(string section, string key, sbyte Default = 0)
- {
- return Read(section, key, Default.ToString()).ToSByte(Default);
- }
-
- ///
- /// 写DateTime
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, DateTime value)
- {
- Write(section, key, value.ToString(DateTimeEx.DateTimeFormat));
- }
-
- ///
- /// 读DateTime
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public DateTime ReadDateTime(string section, string key, DateTime Default)
- {
- string str = Read(section, key, Default.ToString(CultureInfo.InvariantCulture));
- try
- {
- return str.ToDateTime(DateTimeEx.DateTimeFormat);
- }
- catch (Exception)
- {
- return Default;
- }
- }
-
- ///
- /// 写Point
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, Point value)
- {
- Write(section, key, ConvertEx.ObjectToString(value, typeof(Point)));
- }
-
- ///
- /// 读Point
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public Point ReadPoint(string section, string key, Point Default)
- {
- string str = Read(section, key, "");
- return (Point)ConvertEx.StringToObject(str, typeof(Point), Default);
- }
-
- ///
- /// 写PointF
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, PointF value)
- {
- Write(section, key, ConvertEx.ObjectToString(value, typeof(PointF)));
- }
-
- ///
- /// 读PointF
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public PointF ReadPointF(string section, string key, PointF Default)
- {
- string str = Read(section, key, "");
- return (PointF)ConvertEx.StringToObject(str, typeof(PointF), Default);
- }
-
- ///
- /// 写Size
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, Size value)
- {
- Write(section, key, ConvertEx.ObjectToString(value, typeof(Size)));
- }
-
- ///
- /// 读Size
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public Size ReadSize(string section, string key, Size Default)
- {
- string str = Read(section, key, "");
- return (Size)ConvertEx.StringToObject(str, typeof(Size), Default);
- }
-
- ///
- /// 写SizeF
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, SizeF value)
- {
- Write(section, key, ConvertEx.ObjectToString(value, typeof(SizeF)));
- }
-
- ///
- /// 读SizeF
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public SizeF ReadSizeF(string section, string key, SizeF Default)
- {
- string str = Read(section, key, "");
- return (SizeF)ConvertEx.StringToObject(str, typeof(SizeF), Default);
- }
-
- ///
- /// 写Color
- ///
- /// section
- /// key
- /// value
- public void Write(string section, string key, Color value)
- {
- Write(section, key, ConvertEx.ObjectToString(value, typeof(Color)));
- }
-
- ///
- /// 读Color
- ///
- /// section
- /// key
- /// Normal
- /// 结果
- public Color ReadColor(string section, string key, Color Default)
- {
- string str = Read(section, key, "");
- return (Color)ConvertEx.StringToObject(str, typeof(Color), Default);
- }
- }
-}
diff --git a/SunnyUI/Properties/Resources.Designer.cs b/SunnyUI/Properties/Resources.Designer.cs
index bbf823a5..930d6f99 100644
--- a/SunnyUI/Properties/Resources.Designer.cs
+++ b/SunnyUI/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace Sunny.UI.Properties {
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -200,7 +200,7 @@ namespace Sunny.UI.Properties {
}
///
- /// 查找类似 V3.0.8 的本地化字符串。
+ /// 查找类似 V3.0.9 的本地化字符串。
///
internal static string Version {
get {
diff --git a/SunnyUI/Properties/Resources.resx b/SunnyUI/Properties/Resources.resx
index a49e90c2..db2f876e 100644
--- a/SunnyUI/Properties/Resources.resx
+++ b/SunnyUI/Properties/Resources.resx
@@ -112,12 +112,12 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
..\Resources\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -156,14 +156,14 @@
SunnyUI.Net
- SunnyUI.Net 是基于.Net Framework 4.0+、.Net Core3.1、.Net 5 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。
+ SunnyUI.Net 是基于.Net Framework 4.0+、.Net 5 、.Net 6框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。
..\Resources\notifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- V3.0.8
- 2021-10-01
+ V3.0.9
+ 2021-11-19
..\Resources\wind.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/SunnyUI/SunnyUI.csproj b/SunnyUI/SunnyUI.csproj
index 86169337..5efee65c 100644
--- a/SunnyUI/SunnyUI.csproj
+++ b/SunnyUI/SunnyUI.csproj
@@ -1,21 +1,20 @@
- net5.0-windows;netcoreapp3.1;net472;net40
- 9.0
+ net6.0-windows;net5.0-windows;net472;net40
+ 10.0
{AB1CB247-E20B-4CBE-B269-570ADDD96C53}
true
Sunny.UI
- SunnyUI.Net 是基于.Net Framework 4.0+、.Net Core3.1、.Net 5 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。
+ SunnyUI.Net 是基于.Net Framework 4.0+、.Net 5、.Net 6 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。
CopyRight © SunnyUI.Net 2012-2021
LICENSE
- 3.0.8
+ 3.0.9
ShenYonghua
SunnyUI.Net
SunnyUI
https://gitee.com/yhuse/SunnyUI
https://gitee.com/yhuse/SunnyUI
- false
false
SunnyUI.png
@@ -68,7 +67,7 @@
-
+
diff --git a/Updates.md b/Updates.md
index 76f4e498..6793fbd2 100644
--- a/Updates.md
+++ b/Updates.md
@@ -1,320 +1,351 @@
-:fa-plus:增加; :fa-asterisk:修改; :fa-minus:删除
++ 增加;
+* 修改;
+- 删除
+
+#### 2021-11-19 V3.0.9
++ SunnyUI: 增加.Net6版本的支持
++ UIStyle: 全部SunnyUI控件支持DPI自适应缩放
++ UISplitContainer: 增加UISplitContainer控件
++ IniFileEx: 增加INI文件读取类(不用WinAPI)
++ UIForm: 增加全局热键
++ UIForm: 增加IFrame接口
+* UILabel: 增加文字旋转角度
+* UIMessageForm: 多个按钮显示时增加FocusLine
+* UIFlowLayoutPanel: 修改不同DPI缩放滚动条未覆盖的问题
+* UIComboDataGridView: 增加过滤
+* UIDataGridView: 增加一个可能出错的判断
+* UIEditForm: 代码生成增加ComboCheckedListBox类型
+* UIEditForm: 代码生成增加ComboTreeView类型
+* UIFlowLayoutPanel: 增加Scroll事件
+* UIRoundProcess: 增加显示小数位数
+* UICombobox: 右侧边框不显示时,去除绘制线
+* UILine: 调整最小长、宽为1
+* UITextBox: 支持修改背景色
+* UICheckBoxGroup :增加SetItemCheckState功能
+* UITextBox: 调整最小高度限制
+* UIProcessBar: 调整最小高度为3
+* UILineChart: 修改图线显示超出范围的问题
+* UITreeView: 判断节点Checked是否改变,只有改变时才赋值
+* UIListBox: 增加DrawItem和Demo
+* UILineChart: 修改自定义最大值最小值为无穷时出错的问题
+* UILineChart: 显示点的颜色支持自定义
+* UILineChart: 支持数据包括Nan
#### 2021-10-01 V3.0.8
-:fa-plus: Mapper: 轻量级的对象映射框架,可以映射值类型(包括Struct),和以值类型构成的List和数组。
-:fa-asterisk: UITreeView:修复TreeView默认展开时,绘制半选状态报错的问题
-:fa-asterisk: UIDataGridViewFooter: 文字显示方向与Column列显示方向一致
-:fa-asterisk: UICombobox: 修复使用BindingList进行绑定,DisplayMember是空字符串显示错误
-:fa-asterisk: UIStyle: 修改默认字体的GdiCharSet
-:fa-asterisk: UIHeaderButton: 增加Disabled颜色
-:fa-asterisk: UISwitch: 增加Disabled颜色
-:fa-asterisk: UIForm: 增加Movable属性,控制点击标题行是否能移动窗体
++ Mapper: 轻量级的对象映射框架,可以映射值类型(包括Struct),和以值类型构成的List和数组。
+* UITreeView: 修复TreeView默认展开时,绘制半选状态报错的问题
+* UIDataGridViewFooter: 文字显示方向与Column列显示方向一致
+* UICombobox: 修复使用BindingList进行绑定,DisplayMember是空字符串显示错误
+* UIStyle: 修改默认字体的GdiCharSet
+* UIHeaderButton: 增加Disabled颜色
+* UISwitch: 增加Disabled颜色
+* UIForm: 增加Movable属性,控制点击标题行是否能移动窗体
#### 2021-09-08 V3.0.7
-:fa-plus: MMFile: 增加多进程通信框架
-:fa-plus: UIComboDataGridView: 增加表格下拉列表框
-:fa-plus: UIMillisecondTimer: 增加毫秒定时器
-:fa-plus: 增加ToolTip接口,在用UIToolTip时解决类似UITextBox这类的组合控件无法显示ToolTip的问题
-:fa-asterisk: UIForm: 修复多屏时最大化显示的问题
-:fa-asterisk: UIPage: 修复OnLoad在加载时重复加载两次的问题
-:fa-asterisk: UITextBox: 重写了水印文字的画法,并增加水印文字颜色
-:fa-asterisk: UICombobox: 修改Watermark及其颜色
-:fa-asterisk: UITextBox:增加按钮
-:fa-asterisk: UIPanel: 支持背景图片显示
-:fa-asterisk: UITitlePanel: 增加标题文字颜色
-:fa-asterisk: UIDropControl: 优化下拉框控件显示效果
-:fa-asterisk: UIEditForm: 代码创建时增加UISwitch开关文字描述
-:fa-asterisk: UINavMenu: 增加自定义TipsText显示的颜色
-:fa-asterisk: UITreeView: CheckBoxes增加三态,感谢群友:笑口常开
-:fa-asterisk: UILineChart: 增加可只显示点的模式
-:fa-asterisk: UICombobox: 增加ShowDropDown函数
-:fa-asterisk: UIGroupBox: 解决Radius为0时的报错
-:fa-asterisk: UIAnalogMeter: 增加ValueChanged事件
-:fa-asterisk: Demo: 修改Demo的UITitlePage为UIPage,UITitlePage已废弃
-:fa-asterisk: UIForm, UIPage: 增加TitleFont属性
-:fa-asterisk: UIProcessBar: 修改不显示百分比时,显示数值
-:fa-asterisk: UIDatePicker: 增加可选择年、年月、年月日
-:fa-asterisk: UIDateTimePicker: 选中的年月日标记显示
-:fa-asterisk: UIImageButton: 更改了一个属性为私有,在VB.Net下不区分大小写而出错
-:fa-asterisk: UITabControl: 增加DisposeTabPageAfterRemove标志,移除TabPage后,是否自动销毁TabPage
-:fa-asterisk: UITabControl: 关闭TabPage并销毁TabPage
-:fa-asterisk: 整理了一些GDI绘图的常用方法扩展
-:fa-asterisk: 整理了一些扩展函数
++ MMFile: 增加多进程通信框架
++ UIComboDataGridView: 增加表格下拉列表框
++ UIMillisecondTimer: 增加毫秒定时器
++ 增加ToolTip接口,在用UIToolTip时解决类似UITextBox这类的组合控件无法显示ToolTip的问题
+* UIForm: 修复多屏时最大化显示的问题
+* UIPage: 修复OnLoad在加载时重复加载两次的问题
+* UITextBox: 重写了水印文字的画法,并增加水印文字颜色
+* UICombobox: 修改Watermark及其颜色
+* UITextBox: 增加按钮
+* UIPanel: 支持背景图片显示
+* UITitlePanel: 增加标题文字颜色
+* UIDropControl: 优化下拉框控件显示效果
+* UIEditForm: 代码创建时增加UISwitch开关文字描述
+* UINavMenu: 增加自定义TipsText显示的颜色
+* UITreeView: CheckBoxes增加三态,感谢群友: 笑口常开
+* UILineChart: 增加可只显示点的模式
+* UICombobox: 增加ShowDropDown函数
+* UIGroupBox: 解决Radius为0时的报错
+* UIAnalogMeter: 增加ValueChanged事件
+* Demo: 修改Demo的UITitlePage为UIPage,UITitlePage已废弃
+* UIForm, UIPage: 增加TitleFont属性
+* UIProcessBar: 修改不显示百分比时,显示数值
+* UIDatePicker: 增加可选择年、年月、年月日
+* UIDateTimePicker: 选中的年月日标记显示
+* UIImageButton: 更改了一个属性为私有,在VB.Net下不区分大小写而出错
+* UITabControl: 增加DisposeTabPageAfterRemove标志,移除TabPage后,是否自动销毁TabPage
+* UITabControl: 关闭TabPage并销毁TabPage
+* 整理了一些GDI绘图的常用方法扩展
+* 整理了一些扩展函数
#### 2021-08-12 V3.0.6
-:fa-plus: UIPipe: 增加管道控件
-:fa-plus: UIValve: 增加阀门控件
-:fa-plus: UIStyle:增加多彩主题,以颜色深色,文字白色为主
-:fa-plus: UIStyle:增加紫色主题
-:fa-plus: UITableLayoutPanel:增加控件
-:fa-plus: Demo:增加工控分类
-:fa-plus: ITranslate:增加多语翻译接口
-:fa-plus: UGif: GIF图片解析类
-:fa-plus: SunnyUI: Nuget项目引用增加签名
-:fa-asterisk: UIFlowLayoutPanel: 增加了几个原生方法
-:fa-asterisk: UITransfer: 增加了显示多个移动的属性
-:fa-asterisk: UIProcessBar: 增加垂直方向的进度显示
-:fa-asterisk: UILight: 默认不显示灯光亮线
-:fa-asterisk: UINavMenu:显示子节点提示箭头
-:fa-asterisk: UINavBar: 增加选中项圆角
-:fa-asterisk: UIImageListBox: 从文件载入图片,并且解除占用
-:fa-asterisk: UICombobox: 增加几个原生方法
-:fa-asterisk: UIListBox: 增加一大波ListBox原生方法
-:fa-asterisk: UIListBox:增加Items变更的事件
-:fa-asterisk: UIForm: 修复最大化盖住任务栏的问题
-:fa-asterisk: UITextBox: 增加GotFocus和LostFocus事件
-:fa-asterisk: UIFlowLayoutPanel: 可像原生控件一样通过Controls.Add增加
-:fa-asterisk: UIListBox: 选中项显示方角
-:fa-asterisk: UIListBox:增加多选行
-:fa-asterisk: UIComboTreeView : 修复SelectedNode=null的问题
-:fa-asterisk: UIRichTextBox: 修改滚动条没有文字时自动隐藏
-:fa-asterisk: UIPage: 修复OnMouseMove事件
-:fa-asterisk: UIStyle: 更新了放在TableLayoutPanel里控件的自定义颜色问题
-:fa-asterisk: UILocalize: 内置支付串已经处理完国际化
-:fa-asterisk: UILineChart:可自定义背景色
-:fa-asterisk: UILineChart:增加实时数据的Demo
-:fa-asterisk: UIBarChart, UIPieChart, UIDoughnutChart增加更新数据的方法
-:fa-asterisk: UITreeView: 调整了显示CheckBoxes时图片位置
-:fa-asterisk: ISymbol: 将字体图标最大尺寸从64调整到128
-:fa-asterisk: UITextBox: 修改Focus可用
-:fa-asterisk: UIButton:增加ShowFocusColor,用来显示Focus状态
-:fa-asterisk: UIPage:修复OnLoad在加载时重复加载两次的问题,增加Final函数,每次页面切换,退出页面都会执行
-:fa-asterisk: UIStyle: 多彩颜色增加随机颜色Demo
-:fa-asterisk: UIScrollingText: 增加属性控制开启滚动
-:fa-asterisk: UIPage:恢复删除的Initialize事件
-:fa-asterisk: ISytle:调整主题切换执行流程
-:fa-asterisk: IStyle:支持自定义主题
-:fa-asterisk: ISymbol:增加SymbolOffset接口
-:fa-asterisk: UITabControl:支持Tab在下方显示
++ UIPipe: 增加管道控件
++ UIValve: 增加阀门控件
++ UIStyle: 增加多彩主题,以颜色深色,文字白色为主
++ UIStyle: 增加紫色主题
++ UITableLayoutPanel: 增加控件
++ Demo: 增加工控分类
++ ITranslate: 增加多语翻译接口
++ UGif: GIF图片解析类
++ SunnyUI: Nuget项目引用增加签名
+* UIFlowLayoutPanel: 增加了几个原生方法
+* UITransfer: 增加了显示多个移动的属性
+* UIProcessBar: 增加垂直方向的进度显示
+* UILight: 默认不显示灯光亮线
+* UINavMenu: 显示子节点提示箭头
+* UINavBar: 增加选中项圆角
+* UIImageListBox: 从文件载入图片,并且解除占用
+* UICombobox: 增加几个原生方法
+* UIListBox: 增加一大波ListBox原生方法
+* UIListBox: 增加Items变更的事件
+* UIForm: 修复最大化盖住任务栏的问题
+* UITextBox: 增加GotFocus和LostFocus事件
+* UIFlowLayoutPanel: 可像原生控件一样通过Controls.Add增加
+* UIListBox: 选中项显示方角
+* UIListBox: 增加多选行
+* UIComboTreeView : 修复SelectedNode=null的问题
+* UIRichTextBox: 修改滚动条没有文字时自动隐藏
+* UIPage: 修复OnMouseMove事件
+* UIStyle: 更新了放在TableLayoutPanel里控件的自定义颜色问题
+* UILocalize: 内置支付串已经处理完国际化
+* UILineChart: 可自定义背景色
+* UILineChart: 增加实时数据的Demo
+* UIBarChart, UIPieChart, UIDoughnutChart增加更新数据的方法
+* UITreeView: 调整了显示CheckBoxes时图片位置
+* ISymbol: 将字体图标最大尺寸从64调整到128
+* UITextBox: 修改Focus可用
+* UIButton: 增加ShowFocusColor,用来显示Focus状态
+* UIPage: 修复OnLoad在加载时重复加载两次的问题,增加Final函数,每次页面切换,退出页面都会执行
+* UIStyle: 多彩颜色增加随机颜色Demo
+* UIScrollingText: 增加属性控制开启滚动
+* UIPage: 恢复删除的Initialize事件
+* ISytle: 调整主题切换执行流程
+* IStyle: 支持自定义主题
+* ISymbol: 增加SymbolOffset接口
+* UITabControl: 支持Tab在下方显示
#### 2021-07-11 V3.0.5
-:fa-plus: 字体图标:增加FontAwesome V5.15版本字体图标
-:fa-plus: UISignal: 增加信号强度显示控件
-:fa-plus: UIToolStripDropDown: 增加了一个弹窗管理类
-:fa-asterisk: UIPage:增加标题行,后期以替代UITitlePage
-:fa-asterisk: Demo的Controls下的页面全部从UITitlePage切换到UIPage,后期会逐步舍弃UITitlePage。
-:fa-asterisk: UIDataGridView:增加了一个RowHeight,默认23
-:fa-asterisk: IStyleInterface:设置为Public,可基于此扩展外部控件
-:fa-asterisk: UIRichTextBox:支持可改背景色
-:fa-asterisk: UIPagination:更新了Demo,分页切换事件加载数据。
-:fa-asterisk: UITitlePage:解决标题栏闪烁
-:fa-asterisk: UITextBox:增加图标和字体图标的显示
-:fa-asterisk: UITextBox: MaximumEnabled,MinimumEnabled代替HasMaximum,HasMinim
-:fa-asterisk: UIHeaderButton: 增加了TextImageRelation,实现文本和图像的相对位置
-:fa-asterisk: UIListBox:修改对象绑定的显示问题
-:fa-asterisk: UICombobox: 更新了数据绑定相关代码
-:fa-asterisk: UITabControl:Tab页标题选中高亮颜色增加可调整高度
-:fa-asterisk: UINavBar: 标题选中高亮颜色增加可调整高度
-:fa-asterisk: UIListBox:更新一处数据绑定显示错误
-:fa-asterisk: UINavMenu:增加右侧图标
-:fa-asterisk: UIBattery:修改可自定义背景色
-:fa-asterisk: UILight:增加方形显示,优化渐变色
-:fa-asterisk: UIHeaderButton:增加ShowSelected,是否显示选中状态
-:fa-asterisk: UIBarChart:修正一个显示的Bug
-:fa-asterisk: UIRoundProcess:修改显示值
-:fa-asterisk: UIRichTextBox:增加WordWrap属性
-:fa-asterisk: UIDataGridView:自定义单元格颜色
-:fa-asterisk: IFame:增加一个反馈的接口,Feedback,Page可将对象反馈给Frame
-:fa-asterisk: UIAvatar:更改图片显示
-:fa-asterisk: UIPagination:设置总数在页面不超过总页数的情况下不刷新
-:fa-asterisk: UITextBox等组合控件将其回调事件的Sender设置为this,而不是其内置控件
-:fa-asterisk: UIFlowLayoutPanel:增加滚动条颜色属性
++ 字体图标: 增加FontAwesome V5.15版本字体图标
++ UISignal: 增加信号强度显示控件
++ UIToolStripDropDown: 增加了一个弹窗管理类
+* UIPage: 增加标题行,后期以替代UITitlePage
+* Demo的Controls下的页面全部从UITitlePage切换到UIPage,后期会逐步舍弃UITitlePage。
+* UIDataGridView: 增加了一个RowHeight,默认23
+* IStyleInterface: 设置为Public,可基于此扩展外部控件
+* UIRichTextBox: 支持可改背景色
+* UIPagination: 更新了Demo,分页切换事件加载数据。
+* UITitlePage: 解决标题栏闪烁
+* UITextBox: 增加图标和字体图标的显示
+* UITextBox: MaximumEnabled,MinimumEnabled代替HasMaximum,HasMinim
+* UIHeaderButton: 增加了TextImageRelation,实现文本和图像的相对位置
+* UIListBox: 修改对象绑定的显示问题
+* UICombobox: 更新了数据绑定相关代码
+* UITabControl: Tab页标题选中高亮颜色增加可调整高度
+* UINavBar: 标题选中高亮颜色增加可调整高度
+* UIListBox: 更新一处数据绑定显示错误
+* UINavMenu: 增加右侧图标
+* UIBattery: 修改可自定义背景色
+* UILight: 增加方形显示,优化渐变色
+* UIHeaderButton: 增加ShowSelected,是否显示选中状态
+* UIBarChart: 修正一个显示的Bug
+* UIRoundProcess: 修改显示值
+* UIRichTextBox: 增加WordWrap属性
+* UIDataGridView: 自定义单元格颜色
+* IFame: 增加一个反馈的接口,Feedback,Page可将对象反馈给Frame
+* UIAvatar: 更改图片显示
+* UIPagination: 设置总数在页面不超过总页数的情况下不刷新
+* UITextBox等组合控件将其回调事件的Sender设置为this,而不是其内置控件
+* UIFlowLayoutPanel: 增加滚动条颜色属性
#### 2021-05-20 V3.0.4
-:fa-plus: UIObjectCollection:带集合个数改变事件的对象集合类
-:fa-plus: UIStringCollection:带集合个数改变事件的字符串集合类
-:fa-plus: UIDataGridViewFooter:增加DataGridView页脚,可做统计显示
-:fa-asterisk: UIBreadcrumb, UICheckBoxGroup, UIRadioButtonGroup: 更改列表项为UIObjectCollection
-:fa-asterisk: UIScrollingText:增加属性可设置双击暂停滚动
-:fa-asterisk: UIEditForm:动态生成表单,增加校验方法
-:fa-asterisk: UIDoubleUpDown, UIIntegerUpDown:将双击编辑更改为单机编辑并选中
-:fa-asterisk: IFrame:增加RemovePage接口
-:fa-asterisk: UIMessageDialog,UIMessageBox:增加TopMost参数
-:fa-asterisk: UIBarChart:修改了一个显示负值的Bug
-:fa-asterisk: UIForm:加了个属性AllowAddControlOnTitle,允许在标题栏放置控件
-:fa-asterisk: UICombobox:解决鼠标下拉选择,触发SelectedIndexChanged两次的问题
-:fa-asterisk: UISwitch:更新Active状态改变时触发ValueChanged事件
-:fa-asterisk: UIDataGridView:设置数据行头部颜色
-:fa-asterisk: UIEditForm:代码生成增加Switch类型,增加Combobox类型
-:fa-asterisk: UICheckBox,UIRadioButton:增加默认事件CheckedChanged
-:fa-asterisk: UIProcessBar:可设置显示进度条小数个数
-:fa-asterisk: 等待提示框:更新等待时间短时无法关闭等待窗体的问题
-:fa-asterisk: DirEx:增加一个文件夹选择框
-:fa-asterisk: UITextBox:增加ShowScrollBar属性,单独控制垂直滚动条
-:fa-asterisk: UITextBox:不限制高度为根据字体计算,可进行调整
-:fa-asterisk: UITextBox:解决多行输入时不能输入回车的问题
-:fa-asterisk: UITextBox:修改文字可以居中显示
-:fa-asterisk: UIDatePicker,UIDateTimePicker:增加ShowToday显示今日属性
-:fa-asterisk: UILineChart:有右键菜单时,取消恢复上次缩放,可在右键菜单增加节点,调用ZoomBack()方法
++ UIObjectCollection: 带集合个数改变事件的对象集合类
++ UIStringCollection: 带集合个数改变事件的字符串集合类
++ UIDataGridViewFooter: 增加DataGridView页脚,可做统计显示
+* UIBreadcrumb, UICheckBoxGroup, UIRadioButtonGroup: 更改列表项为UIObjectCollection
+* UIScrollingText: 增加属性可设置双击暂停滚动
+* UIEditForm: 动态生成表单,增加校验方法
+* UIDoubleUpDown, UIIntegerUpDown: 将双击编辑更改为单机编辑并选中
+* IFrame: 增加RemovePage接口
+* UIMessageDialog,UIMessageBox: 增加TopMost参数
+* UIBarChart: 修改了一个显示负值的Bug
+* UIForm: 加了个属性AllowAddControlOnTitle,允许在标题栏放置控件
+* UICombobox: 解决鼠标下拉选择,触发SelectedIndexChanged两次的问题
+* UISwitch: 更新Active状态改变时触发ValueChanged事件
+* UIDataGridView: 设置数据行头部颜色
+* UIEditForm: 代码生成增加Switch类型,增加Combobox类型
+* UICheckBox,UIRadioButton: 增加默认事件CheckedChanged
+* UIProcessBar: 可设置显示进度条小数个数
+* 等待提示框: 更新等待时间短时无法关闭等待窗体的问题
+* DirEx: 增加一个文件夹选择框
+* UITextBox: 增加ShowScrollBar属性,单独控制垂直滚动条
+* UITextBox: 不限制高度为根据字体计算,可进行调整
+* UITextBox: 解决多行输入时不能输入回车的问题
+* UITextBox: 修改文字可以居中显示
+* UIDatePicker,UIDateTimePicker: 增加ShowToday显示今日属性
+* UILineChart: 有右键菜单时,取消恢复上次缩放,可在右键菜单增加节点,调用ZoomBack()方法
#### 2021-04-11 V3.0.2
-:fa-plus: UIMarkLabel:增加带颜色标签的Label
-:fa-plus: UIRoundProcess:圆形滚动条
-:fa-plus: UIBreadcrumb:增加面包屑导航
-:fa-plus: UILedLabel:增加Led标签
-:fa-asterisk: UIHeaderButton:在工具箱中显示
-:fa-asterisk: UILineChart:支持拖拽选取放大
-:fa-asterisk: UIDateTimePicker:修复下拉选择日期后关闭的Bug
-:fa-asterisk: UINavMenu:增加设置二级菜单底色
-:fa-asterisk: UIColorPicker:增加单击事件以选中颜色
-:fa-asterisk: UITitlePage:增加ShowTitle可控制是否显示标题
-:fa-asterisk: UINavBar:增加可设置背景图片
-:fa-asterisk: 框架增加IFrame接口,方便页面跳转
-:fa-asterisk: UIDataGridView:修改垂直滚动条和原版一致,并增加翻页方式滚动
-:fa-asterisk: UIPagination: 修正因两次查询数量相等而引起的不刷新
-:fa-asterisk: UIHeaderButton: 增加字体图标背景时鼠标移上背景色
-:fa-asterisk: UITabControl:修改第一个TabPage关不掉的Bug
-:fa-asterisk: UIDataGridView:增加EnterAsTab属性,编辑输入时,用Enter键代替Tab键跳到下一个单元格
-:fa-asterisk: UILineChart:增加鼠标框选放大,可多次放大,右键点击恢复一次,双击恢复
-:fa-asterisk: UITitlePanel:修复OnMouseMove事件
-:fa-asterisk: UITrackBar:增加垂直显示方式
-:fa-asterisk: UIFlowLayoutPanel:修改了一处因为其加入控件大小发生变化而引起的滚动条出错
++ UIMarkLabel: 增加带颜色标签的Label
++ UIRoundProcess: 圆形滚动条
++ UIBreadcrumb: 增加面包屑导航
++ UILedLabel: 增加Led标签
+* UIHeaderButton: 在工具箱中显示
+* UILineChart: 支持拖拽选取放大
+* UIDateTimePicker: 修复下拉选择日期后关闭的Bug
+* UINavMenu: 增加设置二级菜单底色
+* UIColorPicker: 增加单击事件以选中颜色
+* UITitlePage: 增加ShowTitle可控制是否显示标题
+* UINavBar: 增加可设置背景图片
+* 框架增加IFrame接口,方便页面跳转
+* UIDataGridView: 修改垂直滚动条和原版一致,并增加翻页方式滚动
+* UIPagination: 修正因两次查询数量相等而引起的不刷新
+* UIHeaderButton: 增加字体图标背景时鼠标移上背景色
+* UITabControl: 修改第一个TabPage关不掉的Bug
+* UIDataGridView: 增加EnterAsTab属性,编辑输入时,用Enter键代替Tab键跳到下一个单元格
+* UILineChart: 增加鼠标框选放大,可多次放大,右键点击恢复一次,双击恢复
+* UITitlePanel: 修复OnMouseMove事件
+* UITrackBar: 增加垂直显示方式
+* UIFlowLayoutPanel: 修改了一处因为其加入控件大小发生变化而引起的滚动条出错
#### 2021-02-26 V3.0.1
-:fa-plus: UIForm:标题栏增加扩展按钮
-:fa-plus: UIHeaderButton:新增大图标的导航按钮
-:fa-plus: 新增UIComboboxEx,从Combobox原生控件继承,以方便做查询过滤等操作
-:fa-asterisk: UIForm:修正不显示标题栏时,标题栏位置可放置控件
-:fa-asterisk: UIListBox:增加一些原有属性
-:fa-asterisk: FCombobox:增加数据绑定Demo
-:fa-asterisk: UICombobox:更改索引改变事件的多次触发
-:fa-asterisk: UIForm:修改一处Icon图片显示的问题
-:fa-asterisk: UIEditForm:修改通过代码生成窗体控件的TabIndex
-:fa-asterisk: UIDatePicker,UIDateTimePicker:将日期选择控件的最小值调整为1900年
-:fa-asterisk: UIHeaderButton:将其命名空间从Sunny.UI.Control改为Sunny.UI
++ UIForm: 标题栏增加扩展按钮
++ UIHeaderButton: 新增大图标的导航按钮
++ 新增UIComboboxEx,从Combobox原生控件继承,以方便做查询过滤等操作
+* UIForm: 修正不显示标题栏时,标题栏位置可放置控件
+* UIListBox: 增加一些原有属性
+* FCombobox: 增加数据绑定Demo
+* UICombobox: 更改索引改变事件的多次触发
+* UIForm: 修改一处Icon图片显示的问题
+* UIEditForm: 修改通过代码生成窗体控件的TabIndex
+* UIDatePicker,UIDateTimePicker: 将日期选择控件的最小值调整为1900年
+* UIHeaderButton: 将其命名空间从Sunny.UI.Control改为Sunny.UI
#### 2021-01-26 V3.0.0
-:fa-plus: 同时兼容.Net Framework 4.0:fa-plus:、.Net Core3.1、.Net 5 框架
-:fa-asterisk: 更新UIMessageTip
-:fa-asterisk: UIForm:增加ShowTitleIcon用来显示标题栏图标,与ShowIcon分开
-:fa-asterisk: UINavBar:增加下拉菜单可设置自动高度或者固定高度,可显示ImageList绑定
-:fa-asterisk: UIDataGridView更新行头和列头的选中颜色
++ 同时兼容.Net Framework 4.0+:、.Net Core3.1、.Net 5 框架
+* 更新UIMessageTip
+* UIForm: 增加ShowTitleIcon用来显示标题栏图标,与ShowIcon分开
+* UINavBar: 增加下拉菜单可设置自动高度或者固定高度,可显示ImageList绑定
+* UIDataGridView更新行头和列头的选中颜色
#### 2021-01-05 V2.2.10
-:fa-asterisk: V2.2 .Net Framewok 4.0最终版本
-:fa-asterisk: V3.0 开始将同时兼容.Net Framework 4.0:fa-plus:、.Net Core3.1、.Net 5 框架
+* V2.2 .Net Framewok 4.0最终版本
+* V3.0 开始将同时兼容.Net Framework 4.0+:、.Net Core3.1、.Net 5 框架
#### 2020-12-20 V2.2.9
-:fa-plus: UIWaitForm:等待窗体
-:fa-plus: UIComboTreeView:新增下拉框TreeView
-:fa-plus: UIMessageForm:消息提示框增加黑色半透明遮罩层
-:fa-plus: Win32API:新增Win32API函数
-:fa-plus: UJsonConfig:不引用第三方控件,用.Net自带的序列化实现Json,增加Json文件配置类
-:fa-plus: UIDataGridViewForm:增加了一个表格模板基类
-:fa-asterisk: UIDataGridView:修改DataSource赋值后Column改变引起的水平滚动条错误
-:fa-asterisk: UIDoubleUpDown,UIIntegerUpDown:增加双击可编辑数值
-:fa-asterisk: UINavMenu:增加选中后图标的背景色或应用选中图片索引
-:fa-asterisk: 页面框架增加页面内跳转方法
-:fa-asterisk: 日期、时间选择框增加CanEmpty,输入可为空
++ UIWaitForm: 等待窗体
++ UIComboTreeView: 新增下拉框TreeView
++ UIMessageForm: 消息提示框增加黑色半透明遮罩层
++ Win32API: 新增Win32API函数
++ UJsonConfig: 不引用第三方控件,用.Net自带的序列化实现Json,增加Json文件配置类
++ UIDataGridViewForm: 增加了一个表格模板基类
+* UIDataGridView: 修改DataSource赋值后Column改变引起的水平滚动条错误
+* UIDoubleUpDown,UIIntegerUpDown: 增加双击可编辑数值
+* UINavMenu: 增加选中后图标的背景色或应用选中图片索引
+* 页面框架增加页面内跳转方法
+* 日期、时间选择框增加CanEmpty,输入可为空
#### 2020-10-12 V2.2.8
-:fa-plus: UILineChart:完成曲线图表
-:fa-plus: UIScale:增加坐标轴刻度计算类
-:fa-plus: UIFlowLayoutPanel:增加
-:fa-plus: UIBarChartEx:增加了一个新的柱状图类型,序列个数可以不相等
-:fa-plus: UDateTimeInt64:增加DateTimeInt64类,时间整形互转类
-:fa-asterisk: UIForm:增加窗体阴影
-:fa-asterisk: UIMainFrame:页面框架增加Selecting事件,在页面切换时执行该事件
-:fa-asterisk: UITextBox:解决Anchor包含Top、Bottom时,在窗体最小化后恢复时高度变化
-:fa-asterisk: UISwitch:增加长方形形状开关,取消长宽比锁定
-:fa-asterisk: UITreeView:背景色可改,设置FillColor,以及SystemCustomMode = true
-:fa-asterisk: UIDataGridView:解决水平滚动条在有列冻结时出错的问题
++ UILineChart: 完成曲线图表
++ UIScale: 增加坐标轴刻度计算类
++ UIFlowLayoutPanel: 增加
++ UIBarChartEx: 增加了一个新的柱状图类型,序列个数可以不相等
++ UDateTimeInt64: 增加DateTimeInt64类,时间整形互转类
+* UIForm: 增加窗体阴影
+* UIMainFrame: 页面框架增加Selecting事件,在页面切换时执行该事件
+* UITextBox: 解决Anchor包含Top、Bottom时,在窗体最小化后恢复时高度变化
+* UISwitch: 增加长方形形状开关,取消长宽比锁定
+* UITreeView: 背景色可改,设置FillColor,以及SystemCustomMode = true
+* UIDataGridView: 解决水平滚动条在有列冻结时出错的问题
#### 2020-09-17 V2.2.7
-:fa-plus: 新增双主键线程安全字典,分组线程安全字典
-:fa-plus: UIHorScrollBarEx,UIVerScrollBarEx:重写了两个滚动条
-:fa-asterisk: UIForm:恢复了WindowState,增加了窗体可拉拽调整大小
-:fa-asterisk: 增加控件属性显示值及Sunny UI分类
-:fa-asterisk: UIDateTimePicker,UITimePicker:更改滚轮选择时间的方向
-:fa-asterisk: UIButton:Tips颜色可设置
-:fa-asterisk: UIChart:增加图表的边框线颜色设置
-:fa-asterisk: UITextBox:增加FocusedSelectAll属性,激活时全选
-:fa-asterisk: UINavBar:增加节点的Image绘制
-:fa-asterisk: UIDataGridView:调整水平滚动条
-:fa-asterisk: UIButton:添加'是否启用双击事件'属性,解决连续点击效率问题
-:fa-asterisk: UIDataGridView:更新了水平和垂直滚动条的显示,优化滚动效果
-:fa-asterisk: UIBbutton:空格键按下press背景效果
-:fa-asterisk: UIListBox优化滚轮快速滚动流畅性
-:fa-asterisk: UIBarChart:可设置柱状图最小宽度
-:fa-asterisk: UIIntegerUpDown, UIDoubleUpDown:增加字体调整
-:fa-asterisk: UITabControl:标题垂直居中
-:fa-asterisk: UITreeView:更新可设置背景色
-:fa-asterisk: UIDatePicker,UITimePicker,UIDateTimePicker:可编辑输入,日期范围控制
-:fa-asterisk: UIDatePicker:更改日期范围最小值和最大值
-:fa-asterisk: UITitlePanel:更新大小调整后的按钮位置
++ 新增双主键线程安全字典,分组线程安全字典
++ UIHorScrollBarEx,UIVerScrollBarEx: 重写了两个滚动条
+* UIForm: 恢复了WindowState,增加了窗体可拉拽调整大小
+* 增加控件属性显示值及Sunny UI分类
+* UIDateTimePicker,UITimePicker: 更改滚轮选择时间的方向
+* UIButton: Tips颜色可设置
+* UIChart: 增加图表的边框线颜色设置
+* UITextBox: 增加FocusedSelectAll属性,激活时全选
+* UINavBar: 增加节点的Image绘制
+* UIDataGridView: 调整水平滚动条
+* UIButton: 添加'是否启用双击事件'属性,解决连续点击效率问题
+* UIDataGridView: 更新了水平和垂直滚动条的显示,优化滚动效果
+* UIBbutton: 空格键按下press背景效果
+* UIListBox优化滚轮快速滚动流畅性
+* UIBarChart: 可设置柱状图最小宽度
+* UIIntegerUpDown, UIDoubleUpDown: 增加字体调整
+* UITabControl: 标题垂直居中
+* UITreeView: 更新可设置背景色
+* UIDatePicker,UITimePicker,UIDateTimePicker: 可编辑输入,日期范围控制
+* UIDatePicker: 更改日期范围最小值和最大值
+* UITitlePanel: 更新大小调整后的按钮位置
#### 2020-07-30 V2.2.6
-:fa-plus: UIPagination:新增分页控件
-:fa-plus: UIToolTip:新增控件,可修改字体
-:fa-plus: UIHorScrollBar:新增水平滚动条
-:fa-plus: UIWaitingBar:新增等待滚动条控件
-:fa-asterisk: UIDataGridView:重绘水平滚动条,更新默认设置为原生控件设置
-:fa-asterisk: UITitlePanel:增加可收缩选项
-:fa-asterisk: UIPieChart,UIBarChart:增加序列自定义颜色
-:fa-asterisk: UISymbolButton:增加Image属性,增加图片和文字的摆放位置
-:fa-asterisk: UIButton:增加Selected及选中颜色配置
-:fa-asterisk: UIForm:支持点击窗体任务栏图标,可以进行最小化
-:fa-asterisk: UIForm:增加标题栏ICON图标绘制
-:fa-asterisk: UIDateTimePicker:重写下拉窗体,缩短创建时间
-:fa-asterisk: UITreeView:全部重写,增加圆角,CheckBoxes等
-:fa-asterisk: UIDatePicker:重写下拉窗体,缩短创建时间
-:fa-asterisk: UICheckBoxGroup,UIRadioButtonGroup:可以设置初始选中值
-:fa-asterisk: UILedBulb:边缘平滑
-:fa-asterisk: UIForm:仿照QQ,重绘标题栏按钮
++ UIPagination: 新增分页控件
++ UIToolTip: 新增控件,可修改字体
++ UIHorScrollBar: 新增水平滚动条
++ UIWaitingBar: 新增等待滚动条控件
+* UIDataGridView: 重绘水平滚动条,更新默认设置为原生控件设置
+* UITitlePanel: 增加可收缩选项
+* UIPieChart,UIBarChart: 增加序列自定义颜色
+* UISymbolButton: 增加Image属性,增加图片和文字的摆放位置
+* UIButton: 增加Selected及选中颜色配置
+* UIForm: 支持点击窗体任务栏图标,可以进行最小化
+* UIForm: 增加标题栏ICON图标绘制
+* UIDateTimePicker: 重写下拉窗体,缩短创建时间
+* UITreeView: 全部重写,增加圆角,CheckBoxes等
+* UIDatePicker: 重写下拉窗体,缩短创建时间
+* UICheckBoxGroup,UIRadioButtonGroup: 可以设置初始选中值
+* UILedBulb: 边缘平滑
+* UIForm: 仿照QQ,重绘标题栏按钮
#### 2020-06-29 V2.2.5
-:fa-plus: UIDoughnutChart:环状图
-:fa-plus: UILoginForm:登录窗体
-:fa-plus: UIScrollingText:滚动文字
-:fa-plus: UIBarChart:柱状图
-:fa-plus: UIPieChart:饼状图
-:fa-plus: UIRichTextBox:富文本框
-:fa-plus: UIBattery:电池电量显示
-:fa-plus: UIDatetimePicker:日期时间选择框
-:fa-plus: UIColorPicker:颜色选择框
-:fa-plus: UITimePicker:时间选择框
-:fa-plus: UIMessageTipHelper:增加MessageTip扩展方法
-:fa-asterisk: UIComboBox:增加数据绑定
-:fa-asterisk: 页面框架支持通过PageIndex和PageGuid关联
-:fa-asterisk: UITextBox:增加Multiline属性,增加滚动条
-:fa-asterisk: UITabControl:新增关闭按钮,重绘左右移动按钮
-:fa-asterisk: UIForm:更新标题移动、双击最大化/正常、到顶最大化、最大化后拖拽正常
-:fa-asterisk: UINavMenu:增加字体图标显示
-:fa-asterisk: 字体图标字体调整从资源文件中加载字体,不用另存为文件
-:fa-asterisk: UIListBox 增加跟随鼠标滑过高亮
-:fa-asterisk: UIDatePicker:重写日期选择界面
-:fa-asterisk: UIButton:增加ShowFocusLine,可获得焦点并显示
++ UIDoughnutChart: 环状图
++ UILoginForm: 登录窗体
++ UIScrollingText: 滚动文字
++ UIBarChart: 柱状图
++ UIPieChart: 饼状图
++ UIRichTextBox: 富文本框
++ UIBattery: 电池电量显示
++ UIDatetimePicker: 日期时间选择框
++ UIColorPicker: 颜色选择框
++ UITimePicker: 时间选择框
++ UIMessageTipHelper: 增加MessageTip扩展方法
+* UIComboBox: 增加数据绑定
+* 页面框架支持通过PageIndex和PageGuid关联
+* UITextBox: 增加Multiline属性,增加滚动条
+* UITabControl: 新增关闭按钮,重绘左右移动按钮
+* UIForm: 更新标题移动、双击最大化/正常、到顶最大化、最大化后拖拽正常
+* UINavMenu: 增加字体图标显示
+* 字体图标字体调整从资源文件中加载字体,不用另存为文件
+* UIListBox 增加跟随鼠标滑过高亮
+* UIDatePicker: 重写日期选择界面
+* UIButton: 增加ShowFocusLine,可获得焦点并显示
#### 2020.05.05 V2.2.5
-:fa-plus: 增加页面框架
-:fa-plus: 增加下拉框窗体,进度提升窗体
-:fa-plus: UITreeView
++ 增加页面框架
++ 增加下拉框窗体,进度提升窗体
++ UITreeView
#### 2020.04.25 V2.2.4
-:fa-asterisk: 更新主题风格类,各控件主题颜色调用不交叉,便于新增主题
-:fa-plus: 更新Sunny.Demo程序
-:fa-plus: 增加UIDataGridView,基于DataGridView增强、美化
-:fa-minus: UIGrid效率待改,暂时隐藏
+* 更新主题风格类,各控件主题颜色调用不交叉,便于新增主题
++ 更新Sunny.Demo程序
++ 增加UIDataGridView,基于DataGridView增强、美化
+- UIGrid效率待改,暂时隐藏
#### 2020.04.19 V2.2.3
-:fa-plus: UICheckBoxGroup,UIRadioButtonGroup
++ UICheckBoxGroup,UIRadioButtonGroup
#### 2020.04.11 V2.2.2
-:fa-plus: 新增UIGrid
-:fa-minus: 继承DataGridView更改主题风格的UIGridView
++ 新增UIGrid
+- 继承DataGridView更改主题风格的UIGridView
#### 2020.02.15 V2.2.1
-:fa-asterisk: Bug修复
+* Bug修复
#### 2020.01.01 V2.2.0
-:fa-asterisk: 增加文件说明,为开源做准备
-:fa-plus: 增加Office主题风格
+* 增加文件说明,为开源做准备
++ 增加Office主题风格
#### 2019.10.01 V2.1.0
-:fa-plus: 增加Element主题风格
++ 增加Element主题风格
#### 2019.03.12 V2.0.0
-:fa-plus: 增加自定义控件
++ 增加自定义控件
#### 2012.03.31 V1.0.0
-:fa-plus: 增加工具类、扩展类
\ No newline at end of file
++ 增加工具类、扩展类
\ No newline at end of file