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