V3.0.9 增加对.Net6的支持
This commit is contained in:
parent
88d608a946
commit
49b87913da
1
.gitignore
vendored
1
.gitignore
vendored
@ -342,3 +342,4 @@ ASALocalRun/
|
||||
healthchecksdb
|
||||
/SunnyUI.Net5.Demo/bin/net5.0-windows
|
||||
/Bin/net472
|
||||
/Bin/net6.0-windows
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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")]
|
||||
|
@ -38,12 +38,12 @@
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="SunnyUI, Version=3.0.8.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<Reference Include="SunnyUI, Version=3.0.9.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Bin\net40\SunnyUI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SunnyUI.Common, Version=3.0.8.0, Culture=neutral, PublicKeyToken=5a271fb7ba597231, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SunnyUI.Common.3.0.8\lib\net40\SunnyUI.Common.dll</HintPath>
|
||||
<Reference Include="SunnyUI.Common, Version=3.0.9.0, Culture=neutral, PublicKeyToken=5a271fb7ba597231, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SunnyUI.Common.3.0.9\lib\net40\SunnyUI.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="SunnyUI.Common" version="3.0.8" targetFramework="net40" />
|
||||
<package id="SunnyUI.Common" version="3.0.9" targetFramework="net40" />
|
||||
</packages>
|
@ -6,9 +6,9 @@
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<RootNamespace>Sunny.UI.Demo</RootNamespace>
|
||||
<ApplicationIcon>SunnyUI.ico</ApplicationIcon>
|
||||
<AssemblyVersion>3.0.8.0</AssemblyVersion>
|
||||
<FileVersion>3.0.8.0</FileVersion>
|
||||
<Version>3.0.8</Version>
|
||||
<AssemblyVersion>3.0.9.0</AssemblyVersion>
|
||||
<FileVersion>3.0.9.0</FileVersion>
|
||||
<Version>3.0.9</Version>
|
||||
<Authors>SunnyUI</Authors>
|
||||
<Company>SunnyUI.Net</Company>
|
||||
<Copyright>Copyright ©SunnyUI.Net 2012-2021</Copyright>
|
||||
@ -25,7 +25,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SunnyUI" Version="3.0.8" />
|
||||
<PackageReference Include="SunnyUI" Version="3.0.9" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -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
|
||||
/// <returns>Image</returns>
|
||||
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";
|
||||
|
@ -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<string, NameValueCollection> 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
|
||||
(
|
||||
@"
|
||||
(?<IsSection>
|
||||
^\s*\[(?<SectionName>[^\]]+)?\]\s*$
|
||||
)
|
||||
|
|
||||
(?<IsKeyValue>
|
||||
^\s*(?<Key>[^(\s*\=\s*)]+)?\s*\=\s*(?<Value>[\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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 文件名
|
||||
/// </summary>
|
||||
[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<T>(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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取指定的Section的所有Value到列表中
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
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]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写结构
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
/// <typeparam name="T">T</typeparam>
|
||||
public void WriteStruct<T>(string section, string key, T value) where T : struct
|
||||
{
|
||||
Write(section, key, value.StructToBytes());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读结构
|
||||
/// </summary>
|
||||
/// <typeparam name="T">T</typeparam>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public T ReadStruct<T>(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<T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Byte数组
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, byte[] value)
|
||||
{
|
||||
Write(section, key, value.ToHexString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Byte数组
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public byte[] ReadBytes(string section, string key, byte[] Default)
|
||||
{
|
||||
return Read(section, key, Default.ToHexString()).ToHexBytes();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Char
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, char value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Char
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public char ReadChar(string section, string key, char Default = ' ')
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToChar(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Decimal
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, decimal value)
|
||||
{
|
||||
Write(section, key, value.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Decimal
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public decimal ReadDecimal(string section, string key, decimal Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString(CultureInfo.InvariantCulture)).ToDecimal(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, short value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public short ReadShort(string section, string key, short Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToShort(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, ushort value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public ushort ReadUShort(string section, string key, ushort Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToUShort(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, int value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public int ReadInt(string section, string key, int Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToInt(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, uint value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public uint ReadUInt(string section, string key, uint Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToUInt(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, ulong value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public ulong ReadULong(string section, string key, ulong Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToULong(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, long value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读整数
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public long ReadLong(string section, string key, long Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToLong(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写布尔
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, bool value)
|
||||
{
|
||||
Write(section, key, value ? bool.TrueString : bool.FalseString);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读布尔
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Double
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, double value)
|
||||
{
|
||||
Write(section, key, value.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Double
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public double ReadDouble(string section, string key, double Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString(CultureInfo.InvariantCulture)).ToDouble(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Float
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, float value)
|
||||
{
|
||||
Write(section, key, value.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Float
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public float ReadFloat(string section, string key, float Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString(CultureInfo.InvariantCulture)).ToFloat(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Byte
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, byte value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Byte
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public byte ReadByte(string section, string key, byte Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToByte(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写SByte
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, sbyte value)
|
||||
{
|
||||
Write(section, key, value.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Byte
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public sbyte ReadSByte(string section, string key, sbyte Default = 0)
|
||||
{
|
||||
return Read(section, key, Default.ToString()).ToSByte(Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写DateTime
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, DateTime value)
|
||||
{
|
||||
Write(section, key, value.ToString(DateTimeEx.DateTimeFormat));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读DateTime
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Point
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, Point value)
|
||||
{
|
||||
Write(section, key, ConvertEx.ObjectToString(value, typeof(Point)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Point
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public Point ReadPoint(string section, string key, Point Default)
|
||||
{
|
||||
string str = Read(section, key, "");
|
||||
return (Point)ConvertEx.StringToObject(str, typeof(Point), Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写PointF
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, PointF value)
|
||||
{
|
||||
Write(section, key, ConvertEx.ObjectToString(value, typeof(PointF)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读PointF
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public PointF ReadPointF(string section, string key, PointF Default)
|
||||
{
|
||||
string str = Read(section, key, "");
|
||||
return (PointF)ConvertEx.StringToObject(str, typeof(PointF), Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Size
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, Size value)
|
||||
{
|
||||
Write(section, key, ConvertEx.ObjectToString(value, typeof(Size)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Size
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public Size ReadSize(string section, string key, Size Default)
|
||||
{
|
||||
string str = Read(section, key, "");
|
||||
return (Size)ConvertEx.StringToObject(str, typeof(Size), Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写SizeF
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, SizeF value)
|
||||
{
|
||||
Write(section, key, ConvertEx.ObjectToString(value, typeof(SizeF)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读SizeF
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public SizeF ReadSizeF(string section, string key, SizeF Default)
|
||||
{
|
||||
string str = Read(section, key, "");
|
||||
return (SizeF)ConvertEx.StringToObject(str, typeof(SizeF), Default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 写Color
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="value">value</param>
|
||||
public void Write(string section, string key, Color value)
|
||||
{
|
||||
Write(section, key, ConvertEx.ObjectToString(value, typeof(Color)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读Color
|
||||
/// </summary>
|
||||
/// <param name="section">section</param>
|
||||
/// <param name="key">key</param>
|
||||
/// <param name="Default">Normal</param>
|
||||
/// <returns>结果</returns>
|
||||
public Color ReadColor(string section, string key, Color Default)
|
||||
{
|
||||
string str = Read(section, key, "");
|
||||
return (Color)ConvertEx.StringToObject(str, typeof(Color), Default);
|
||||
}
|
||||
}
|
||||
}
|
4
SunnyUI/Properties/Resources.Designer.cs
generated
4
SunnyUI/Properties/Resources.Designer.cs
generated
@ -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 {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 V3.0.8 的本地化字符串。
|
||||
/// 查找类似 V3.0.9 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string Version {
|
||||
get {
|
||||
|
@ -112,12 +112,12 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="close" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@ -156,14 +156,14 @@
|
||||
</data>
|
||||
<data name="Name" xml:space="preserve">
|
||||
<value>SunnyUI.Net</value>
|
||||
<comment>SunnyUI.Net 是基于.Net Framework 4.0+、.Net Core3.1、.Net 5 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。</comment>
|
||||
<comment>SunnyUI.Net 是基于.Net Framework 4.0+、.Net 5 、.Net 6框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。</comment>
|
||||
</data>
|
||||
<data name="notifier" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\notifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>V3.0.8</value>
|
||||
<comment>2021-10-01</comment>
|
||||
<value>V3.0.9</value>
|
||||
<comment>2021-11-19</comment>
|
||||
</data>
|
||||
<data name="wind" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\wind.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
|
@ -1,21 +1,20 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net5.0-windows;netcoreapp3.1;net472;net40</TargetFrameworks>
|
||||
<LangVersion>9.0</LangVersion>
|
||||
<TargetFrameworks>net6.0-windows;net5.0-windows;net472;net40</TargetFrameworks>
|
||||
<LangVersion>10.0</LangVersion>
|
||||
<ProjectGuid>{AB1CB247-E20B-4CBE-B269-570ADDD96C53}</ProjectGuid>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<RootNamespace>Sunny.UI</RootNamespace>
|
||||
<Description>SunnyUI.Net 是基于.Net Framework 4.0+、.Net Core3.1、.Net 5 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。</Description>
|
||||
<Description>SunnyUI.Net 是基于.Net Framework 4.0+、.Net 5、.Net 6 框架的 C# WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。</Description>
|
||||
<Copyright>CopyRight © SunnyUI.Net 2012-2021</Copyright>
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
<Version>3.0.8</Version>
|
||||
<Version>3.0.9</Version>
|
||||
<Authors>ShenYonghua</Authors>
|
||||
<Company>SunnyUI.Net</Company>
|
||||
<PackageId>SunnyUI</PackageId>
|
||||
<PackageProjectUrl>https://gitee.com/yhuse/SunnyUI</PackageProjectUrl>
|
||||
<RepositoryUrl>https://gitee.com/yhuse/SunnyUI</RepositoryUrl>
|
||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
|
||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||
<PackageIcon>SunnyUI.png</PackageIcon>
|
||||
</PropertyGroup>
|
||||
@ -68,7 +67,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="SunnyUI.Common" Version="3.0.8" />
|
||||
<PackageReference Include="SunnyUI.Common" Version="3.0.9" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
579
Updates.md
579
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: 增加工具类、扩展类
|
||||
+ 增加工具类、扩展类
|
Loading…
x
Reference in New Issue
Block a user