更新文档
This commit is contained in:
parent
aec616b1cf
commit
9a3320c10f
@ -19,6 +19,7 @@ export default defineConfig({
|
|||||||
items: [
|
items: [
|
||||||
{ text: '项目说明', link: '/introduction' },
|
{ text: '项目说明', link: '/introduction' },
|
||||||
{ text: '更新日志', link: '/updates' },
|
{ text: '更新日志', link: '/updates' },
|
||||||
|
{ text: '升级指南', link: '/updatesi' },
|
||||||
{ text: '常见问题', link: '/faq' },
|
{ text: '常见问题', link: '/faq' },
|
||||||
{ text: '安装', link: '/install' },
|
{ text: '安装', link: '/install' },
|
||||||
{ text: '主题', link: '/theme' },
|
{ text: '主题', link: '/theme' },
|
||||||
@ -28,12 +29,37 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: '多页面框架',
|
text: '多页面框架',
|
||||||
collapsed: false,
|
collapsed: true,
|
||||||
items: [
|
items: [
|
||||||
{ text: '快速开始', link: '/started' },
|
{ text: '快速开始', link: '/started' },
|
||||||
{ text: 'DPI缩放自适应方案', link: '/dpi' },
|
{ text: 'DPI缩放自适应方案', link: '/dpi' },
|
||||||
{ text: '全局字体设置', link: '/globalfont' }
|
{ text: '全局字体设置', link: '/globalfont' }
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '窗体',
|
||||||
|
collapsed: true,
|
||||||
|
items: [
|
||||||
|
{ text: 'UIForm', link: '/UIForm' },
|
||||||
|
{ text: 'UILoginForm', link: '/UILoginForm' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '控件',
|
||||||
|
collapsed: true,
|
||||||
|
items: [
|
||||||
|
{ text: 'UIForm', link: '/UIForm' },
|
||||||
|
{ text: 'UILoginForm', link: '/UILoginForm' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '工具类库',
|
||||||
|
collapsed: true,
|
||||||
|
items: [
|
||||||
|
{ text: 'IniFile - Ini文件读写类', link: '/IniFile' },
|
||||||
|
{ text: 'IniConfig - ini配置文件类', link: '/IniConfig' },
|
||||||
|
{ text: 'Json - 简易的Json静态类', link: '/Json' }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
@ -48,8 +74,8 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
|
|
||||||
editLink: {
|
editLink: {
|
||||||
pattern: 'https://github.com/vuejs/vitepress/edit/main/docs/:path',
|
pattern: 'https://gitee.com/yhuse/SunnyUI/tree/master/docs/:path',
|
||||||
text: '在 GitHub 上编辑此页面'
|
text: '在 Gitee 上编辑此页面'
|
||||||
},
|
},
|
||||||
|
|
||||||
docFooter: {
|
docFooter: {
|
||||||
|
92
docs/IniConfig.md
Normal file
92
docs/IniConfig.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# Ini配置文件类
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
看过 [IniFile - Ini文件读写类 ](/IniFile),应该基本了解Ini文件的定义和读写了。
|
||||||
|
|
||||||
|
- 写文件
|
||||||
|
~~~
|
||||||
|
IniFile ini = new IniFile("D:\\setup.ini");
|
||||||
|
ini.Write("Setup", "Name", "Sunny");
|
||||||
|
ini.Write("Setup", "Age", 18);
|
||||||
|
ini.UpdateFile();
|
||||||
|
~~~
|
||||||
|
- 读文件
|
||||||
|
~~~
|
||||||
|
IniFile ini = new IniFile("D:\\setup.ini");
|
||||||
|
string name = ini.ReadString("Setup", "Name", "");
|
||||||
|
int age = ini.ReadInt("Setup", "Age", 0);
|
||||||
|
~~~
|
||||||
|
|
||||||
|
可这样看起来似乎还是比较麻烦,得知道配置文件的位置,正确填写section,name的字符串值。
|
||||||
|
有没有一个类,只要写了类的属性就可以直接用,而不需要关注读写。
|
||||||
|
**IniConfig**就是这样的一个类,下面简单的介绍下IniConfig的用法。
|
||||||
|
|
||||||
|
- 原理
|
||||||
|
通过反射读取和设置类的属性的值,并通过ini格式文件进行存储。
|
||||||
|
|
||||||
|
- 示例
|
||||||
|
有这样一个配置文件,保存服务器的地址和端口,软件名称,以及软件中显示天气需要的城市名称。
|
||||||
|
配置文件类代码如下:
|
||||||
|
~~~
|
||||||
|
[ConfigFile("Config\\Setting.ini")]
|
||||||
|
public class Setting : IniConfig<Setting>
|
||||||
|
{
|
||||||
|
[ConfigSection("Hello")]
|
||||||
|
public string SoftName { get; set; }
|
||||||
|
|
||||||
|
public string ServerIP { get; set; }
|
||||||
|
|
||||||
|
public int ServerPort { get; set; }
|
||||||
|
|
||||||
|
public string City { get; set; }
|
||||||
|
|
||||||
|
public override void SetDefault()
|
||||||
|
{
|
||||||
|
base.SetDefault();
|
||||||
|
SoftName = "XX软件";
|
||||||
|
ServerIP = "192.168.1.2";
|
||||||
|
ServerPort = 9090;
|
||||||
|
City = "南京";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
~~~
|
||||||
|
[ConfigFile("Config\\Setting.ini")]
|
||||||
|
配置ini文件的位置,当前程序目录下Config目录下的Setting.ini。
|
||||||
|
*目录不存在时会自动创建目录
|
||||||
|
|
||||||
|
[ConfigSection("Hello")]
|
||||||
|
设置SoftName所在的节点Section的名称,如果不设置则默认为Setup
|
||||||
|
|
||||||
|
public override void SetDefault()
|
||||||
|
当第一次运行时配置文件不存在时,设置配置的默认值,并保存至文件。
|
||||||
|
|
||||||
|
- 读取
|
||||||
|
读取系统配置,并开始应用:
|
||||||
|
~~~
|
||||||
|
Setting.Current.Load();
|
||||||
|
|
||||||
|
TcpClient client = new TcpClient();
|
||||||
|
client.Connect(Setting.Current.ServerIP, Setting.Current.ServerPort);
|
||||||
|
~~~
|
||||||
|
Setting.Current.Load();
|
||||||
|
读取配置信息,将配置文件Setting.ini里的值读取到类的属性中。
|
||||||
|
这样Setting.Current.ServerIP和Setting.Current.ServerPort就可以直接用了。
|
||||||
|
如果需要修改配置,修改Setting.ini,重新读取就可以了。
|
||||||
|
**注意:配置读取,属性的应用,都是用的Setting.Current,而不是Setting**
|
||||||
|
|
||||||
|
- 保存
|
||||||
|
系统修改配置,并保存到配置文件。
|
||||||
|
例如系统中修改了获取天气的城市为重庆:
|
||||||
|
~~~
|
||||||
|
Setting.Current.City = "重庆";
|
||||||
|
Setting.Current.Save();
|
||||||
|
~~~
|
||||||
|
修改Setting.Current的属性,并通过Setting.Current.Save()保存即可。
|
||||||
|
|
||||||
|
- 其他
|
||||||
|
通过IniConfig配置文件的应用,屏蔽ini文件常用的通过section,name的字符串值来获取参数的繁琐过程。
|
||||||
|
1、建议读写的ini文件为IniConfig存储的文件。以免造成文件编码不统一。即先生成这个文件,再进行修改,而不是手动创建配置文件。
|
||||||
|
2、配置读取,保存类的应用,都是用的Setting.Current,而不是Setting。
|
||||||
|
3、支持的属性类型见[IniFile - Ini文件读写类 ](/IniFile)
|
||||||
|
|
80
docs/IniFile.md
Normal file
80
docs/IniFile.md
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# Ini文件读写类
|
||||||
|
---
|
||||||
|
- **IniFile**
|
||||||
|
Ini文件读写类,基类为IniBase,已经处理过中文读写。
|
||||||
|
**建议读写的ini文件为IniFile存储的文件。以免造成文件编码不统一。**
|
||||||
|
|
||||||
|
- Ini文件格式
|
||||||
|
程序没有任何配置文件,那么它对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,为了让程序出厂后还能根据需要进行必要的配置,所以要用配置文件;配置文件有很多种,如INI配置文件,XML配置文件,cfg配置文件,还有就是可以使用系统注册表等。
|
||||||
|
INI ”就是英文 “initialization”的头三个字母的缩写;当然INI file的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。
|
||||||
|
INI文件的格式很简单,最基本的三个要素是:parameters,sections和comments。
|
||||||
|
|
||||||
|
什么是parameters?
|
||||||
|
INI所包含的最基本的“元素”就是parameter;每一个parameter都有一个name和一个value,如下所示:
|
||||||
|
name = value
|
||||||
|
|
||||||
|
什么是sections?
|
||||||
|
所有的parameters都是以sections为单位结合在一起的。所有的section名称都是独占一行,并且sections名字都被方括号包围着([ and ])。在section声明后的所有parameters都是属于该section。对于一个section没有明显的结束标志符,一个section的开始就是上一个section的结束,或者是end of the file。Sections一般情况下不能被nested,当然特殊情况下也可以实现sections的嵌套。
|
||||||
|
section如下所示:
|
||||||
|
[section]
|
||||||
|
|
||||||
|
什么是comments?
|
||||||
|
在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。
|
||||||
|
注释实例如下:
|
||||||
|
;comments text
|
||||||
|
|
||||||
|
- IniFile类支持的数据类型
|
||||||
|
Windows API(WritePrivateProfileString)支持的类型为string类型,通过类型转换扩展了以下类型:
|
||||||
|
bool,byte,byte[],char,Color,Datetime,decimal,double,float,int,
|
||||||
|
long,Point,PointF,sbyte,short,Size,SizeF,uint,ulong,ushort,
|
||||||
|
Struct*
|
||||||
|
|
||||||
|
- 写文件
|
||||||
|
~~~
|
||||||
|
IniFile ini = new IniFile("D:\\setup.ini");
|
||||||
|
ini.Write("Setup", "Name", "Sunny");
|
||||||
|
ini.Write("Setup", "Age", 18);
|
||||||
|
ini.UpdateFile();
|
||||||
|
~~~
|
||||||
|
ini配置文件被写到D:\setup.ini
|
||||||
|
**注意,ini文件名必须是完全路径,不能是相对路径**
|
||||||
|
如果需要在程序可执行目录下生成ini文件,可用以下方法:
|
||||||
|
~~~
|
||||||
|
IniFile ini = new IniFile(DirEx.CurrentDir() + "Setup.ini");
|
||||||
|
~~~
|
||||||
|
打开此文件
|
||||||
|
~~~
|
||||||
|
;<!--配置文件-->
|
||||||
|
[Setup]
|
||||||
|
Name=Sunny
|
||||||
|
Age=18
|
||||||
|
~~~
|
||||||
|
注意,如果写的文件在C盘,系统为win7以上,请确保所运行的程序有相应的权限可以在C盘文件夹写文件。
|
||||||
|
Write函数主要包括三个参数,分别对应Ini格式的section,name,value
|
||||||
|
|
||||||
|
- 读文件
|
||||||
|
~~~
|
||||||
|
IniFile ini = new IniFile("D:\\setup.ini");
|
||||||
|
string name = ini.ReadString("Setup", "Name", "");
|
||||||
|
int age = ini.ReadInt("Setup", "Age", 0);
|
||||||
|
~~~
|
||||||
|
Read函数主要包括三个参数,分别对应Ini格式的section,name,Default(如配置文件有值则从配置文件取值,如没有取Default值)
|
||||||
|
|
||||||
|
- 其他函数
|
||||||
|
获取指定的Section名称中的所有Key
|
||||||
|
public string[] GetKeys(string section)
|
||||||
|
|
||||||
|
从Ini文件中,读取所有的Sections的名称
|
||||||
|
public string[] Sections
|
||||||
|
|
||||||
|
读取指定的Section的所有Value到列表中
|
||||||
|
public void GetSectionValues(string section, NameValueCollection values)
|
||||||
|
|
||||||
|
清除某个Section
|
||||||
|
public void EraseSection(string section)
|
||||||
|
|
||||||
|
删除某个Section下的键
|
||||||
|
public void DeleteKey(string section, string key)
|
||||||
|
|
||||||
|
检查某个Section下的某个键值是否存在
|
||||||
|
public bool KeyExists(string section, string key)
|
29
docs/Json.md
Normal file
29
docs/Json.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Json - 简易的Json静态类
|
||||||
|
---
|
||||||
|
- **Json**
|
||||||
|
简易的Json静态类库,可以在不引用NewtonJson即可简单处理Json对象。
|
||||||
|
当然如果有复杂需求,第三方库还是推荐NewtonJson。
|
||||||
|
另外在Net5,System.Text.Json的性能已经非常不错了,也可以尝试。
|
||||||
|
|
||||||
|
- 原理
|
||||||
|
NetFramework:调用System.Web.Script.Serialization命名空间下的JavaScriptSerializer
|
||||||
|
NetCore:调用System.Text.Json.JsonSerializer
|
||||||
|
|
||||||
|
- 函数
|
||||||
|
~~~
|
||||||
|
//将指定的Json字符串input转换为T类型的对象
|
||||||
|
public static T Deserialize<T>(string input)
|
||||||
|
|
||||||
|
//将对象obj转换为Json字符串
|
||||||
|
public static string Serialize(object obj)
|
||||||
|
|
||||||
|
//从文件读取字符串转换为T类型的对象
|
||||||
|
public static T DeserializeFromFile<T>(string filename, Encoding encoding)
|
||||||
|
|
||||||
|
//将对象obj转换为Json字符串,并保存到文件
|
||||||
|
public static string SerializeToFile(object obj, string filename, Encoding encoding)
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
78
docs/UIForm.md
Normal file
78
docs/UIForm.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# UIForm
|
||||||
|
---
|
||||||
|
- **UIForm**
|
||||||
|
常用的窗体基类。
|
||||||
|
|
||||||
|
- 默认属性:Text
|
||||||
|
- 默认事件:Load
|
||||||
|
- 属性列表
|
||||||
|
|
||||||
|
| 属性 | 说明 | 类型 | 默认值 |
|
||||||
|
|-----------|--------|--------|-------|
|
||||||
|
| Style | 主题样式 | UIStyle | Blue |
|
||||||
|
| StyleCustomMode | 获取或设置可以自定义主题风格 | bool | false |
|
||||||
|
| Text |获取或设置显示的文本 | string | - |
|
||||||
|
| TextAlignment| 文字对齐方式 | StringAlignment| - |
|
||||||
|
| AllowAddControlOnTitle| 允许在标题栏放置控件 | bool | false |
|
||||||
|
| AllowShowTitle| 允许显示标题栏 | bool | true |
|
||||||
|
| ShowIcon | 是否显示窗体的标题栏图标 | bool | true |
|
||||||
|
| TitleHeight | 标题栏高度 | int | 35 |
|
||||||
|
| TitleColor | 标题栏颜色 | Color | - |
|
||||||
|
| TitleForeColor | 标题前景色(标题颜色) | Color | - |
|
||||||
|
| ExtendBox | 显示扩展按钮 | bool | false |
|
||||||
|
| ExtendSymbol | 扩展按钮字体图标 | int | 0 |
|
||||||
|
| ExtendSymbolSize | 扩展按钮字体图标大小 | int | 24 |
|
||||||
|
| ExtendSymbolOffset | 扩展按钮字体图标偏移量 | Point | 0, 0 |
|
||||||
|
| ExtendMenu | 扩展按钮菜单 | UIContextMenuStrip | - |
|
||||||
|
| ControlBox | 是否显示窗体的控制按钮 | bool | true |
|
||||||
|
| MaximizeBox | 是否显示窗体的最大化按钮 | bool | true |
|
||||||
|
| MinimizeBox | 是否显示窗体的最小化按钮 | bool | true |
|
||||||
|
| RectColor | 边框颜色 | Color | - |
|
||||||
|
| ForeColor | 字体颜色 | Color | - |
|
||||||
|
| StickyBorderTime| 设置或获取在显示器边缘停留的最大时间(ms) | long | 500 |
|
||||||
|
| IsForbidAltF4 | 是否屏蔽Alt+F4 | bool | false |
|
||||||
|
| EscClose| 使用Esc键关闭窗口 | bool | false |
|
||||||
|
| CloseAskString| 关闭时提示文字 | string | |
|
||||||
|
| ShowFullScreen| 是否以全屏模式进入最大化 | bool | false |
|
||||||
|
| ShowRadius| 是否显示圆角 | bool | true|
|
||||||
|
| ShowRect| 是否显示边框 | bool | true|
|
||||||
|
| ShowTitleIcon | 显示标题栏图标 | bool | false |
|
||||||
|
| ShowDragStretch| 显示边框可拖拽调整窗体大小 | bool | false |
|
||||||
|
| ShowShadow| 是否显示阴影 | bool | false |
|
||||||
|
| Version | 版本 | string | - |
|
||||||
|
| TagString | 获取或设置包含有关控件的数据的对象字符串 | string | - |
|
||||||
|
|
||||||
|
- 主题风格
|
||||||
|
主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550<br/>
|
||||||
|
|
||||||
|
- 主题设置
|
||||||
|
设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True
|
||||||
|
StyleCustomMode就是接受用户自定义颜色的意思。
|
||||||
|
|
||||||
|
- 创建窗体
|
||||||
|
项目引用SunnyUI.dll和SunnyUI.Common.dll,或者从Nuget引用SunnyUI。
|
||||||
|
详见安装:https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3742036&doc_id=1022550
|
||||||
|
新建窗体:
|
||||||
|

|
||||||
|
|
||||||
|
修改:把Form修改成UIForm,并且 using Sunny.UI;
|
||||||
|

|
||||||
|
|
||||||
|
这时切换到窗体,窗体已经变为UIForm:
|
||||||
|

|
||||||
|
|
||||||
|
**下一步的操作非常重要:**
|
||||||
|
把窗体的AutoScaleMode从Font设置为None,否则可能出现因为屏幕分辨率而导致的窗体变形。
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- 拖拽调整窗体大小
|
||||||
|
ShowDragStretch 设置为true,显示边框可拖拽调整窗体大小。
|
||||||
|
|
||||||
|
- 显示任务栏图标
|
||||||
|
设置Icon,将ShowIcon设置为true,再打开ShowTitleIcon可显示窗体标题栏图标。
|
||||||
|
|
||||||
|
- 显示标题栏扩展按钮
|
||||||
|
ExtendBox设置为true,可在标题栏现有按钮最小化按钮的左边显示一个扩展按钮。
|
||||||
|
扩展按钮的图标设置ExtendSymbol。ExtendMenu为扩展按钮点击的下拉菜单。
|
78
docs/UILoginForm.md
Normal file
78
docs/UILoginForm.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# UILoginForm
|
||||||
|
---
|
||||||
|
- **UILoginForm**
|
||||||
|
登录窗体基类。
|
||||||
|
|
||||||
|
- 默认属性:Text
|
||||||
|
- 默认事件:OnLogin
|
||||||
|
- 属性列表
|
||||||
|
|
||||||
|
| 属性 | 说明 | 类型 | 默认值 |
|
||||||
|
|-----------|--------|--------|-------|
|
||||||
|
| Style | 主题样式 | UIStyle | Blue |
|
||||||
|
| StyleCustomMode | 获取或设置可以自定义主题风格 | bool | false |
|
||||||
|
| Title | 顶部标题 | string | - |
|
||||||
|
| SubText | 底部文字描述 | string | - |
|
||||||
|
| LoginImage | 背景图片 | UILoginImage | - |
|
||||||
|
| UserName | 用户名 | string | -|
|
||||||
|
| Password | 密码 | string | -|
|
||||||
|
| IsLogin | 登录是否成功| bool | -|
|
||||||
|
| Version | 版本 | string | - |
|
||||||
|
| TagString | 获取或设置包含有关控件的数据的对象字符串 | string | - |
|
||||||
|
|
||||||
|
- 事件
|
||||||
|
ButtonLoginClick:确定按钮点击事件,有此事件时不执行OnLogin。需要手动给IsLogin赋值。
|
||||||
|
ButtonCancelClick:取消按钮点击事件。
|
||||||
|
OnLogin:登录事件。ButtonLoginClick为空时才执行此时间,返回值为IsLogin。
|
||||||
|
|
||||||
|
- 主题风格
|
||||||
|
主题 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3739705&doc_id=1022550<br/>
|
||||||
|
|
||||||
|
- 主题设置
|
||||||
|
设置Style属性调用系统自带主题,如果需要自定义颜色,就是更改颜色属性后,把控件的Style设置为Custom,StyleCustomMode设置为True
|
||||||
|
StyleCustomMode就是接受用户自定义颜色的意思。
|
||||||
|
|
||||||
|
- 创建窗体
|
||||||
|
项目引用SunnyUI.dll和SunnyUI.Common.dll,或者从Nuget引用SunnyUI。
|
||||||
|
详见安装:https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=3742036&doc_id=1022550
|
||||||
|
创建窗体:参考UIForm创建窗体 https://gitee.com/yhuse/SunnyUI/wikis/pages?sort_id=4098716&doc_id=1022550
|
||||||
|
切记把窗体的AutoScaleMode从Font设置为None,否则可能出现因为屏幕分辨率而导致的窗体变形。
|
||||||
|
|
||||||
|
- 为什么继承的窗体,上面有小锁,能解开吗,还有就是继承的窗体,有些控件属性都设置不了,怎么办?
|
||||||
|
首先得了解窗体继承的概念,和类的继承是差不多的,窗体上有小锁的其实就是类似于类继承中父类的某个Private属性
|
||||||
|
为了保证继承窗体的UI设计,上面的某些控件是不让修改和移动的,所以有锁。
|
||||||
|
在使用时,父窗体一般都将其所用的控件的属性和事件进行了封装,可以正常使用。
|
||||||
|
举例:
|
||||||
|

|
||||||
|
|
||||||
|
- 继承的登录窗体的登录按钮有锁,但其点击事件已封装到父类的事件。
|
||||||
|
需要选中窗体,查看其事件:
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- 通过代码创建
|
||||||
|
也可以不用创建窗体,直接通过代码创建,来实现登录过程
|
||||||
|
```c#
|
||||||
|
UILoginForm frm = new UILoginForm();
|
||||||
|
frm.ShowInTaskbar = true;
|
||||||
|
frm.Text = "Login";
|
||||||
|
frm.Title = "SunnyUI.Net Login Form";
|
||||||
|
frm.SubText = Version;
|
||||||
|
frm.OnLogin += Frm_OnLogin;
|
||||||
|
frm.LoginImage = UILoginForm.UILoginImage.Login2;
|
||||||
|
frm.ShowDialog();
|
||||||
|
if (frm.IsLogin)
|
||||||
|
{
|
||||||
|
UIMessageTip.ShowOk("登录成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
frm.Dispose();
|
||||||
|
```
|
||||||
|
在Frm_OnLogin事件里通过与数据库比对或者调用接口判断登录是否成功。例如:
|
||||||
|
```c#
|
||||||
|
private bool Frm_OnLogin(string userName, string password)
|
||||||
|
{
|
||||||
|
return userName == "admin" && password == "admin";
|
||||||
|
}
|
||||||
|
```
|
@ -156,6 +156,7 @@
|
|||||||
\* UIRadioButton: 增加属性可修改图标大小
|
\* UIRadioButton: 增加属性可修改图标大小
|
||||||
\* UIRadioButtonGroup: 增加属性可修改图标大小
|
\* UIRadioButtonGroup: 增加属性可修改图标大小
|
||||||
|
|
||||||
|
|
||||||
## 2023\-11\-28 V3.6.1
|
## 2023\-11\-28 V3.6.1
|
||||||
\+ UISymbolPanel:增加图标编辑器面板
|
\+ UISymbolPanel:增加图标编辑器面板
|
||||||
\* UIFontImages: 重写字体图标编辑器,优化打开速度
|
\* UIFontImages: 重写字体图标编辑器,优化打开速度
|
||||||
@ -166,7 +167,7 @@
|
|||||||
## 2023\-11\-21 V3.6.0
|
## 2023\-11\-21 V3.6.0
|
||||||
**注意:大版本更新,重构主题**
|
**注意:大版本更新,重构主题**
|
||||||
建议新项目使用此版本,如果3.6.0以下版本需要升级参照文档比较差异:
|
建议新项目使用此版本,如果3.6.0以下版本需要升级参照文档比较差异:
|
||||||
[升级指南/3.5.2-->3.6.0](https://gitee.com/yhuse/SunnyUI/wikis/%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97/3.5.2--%3E3.6.0)
|
[升级指南/3.5.2-->3.6.0](/updatesi)
|
||||||
\+ 增加.Net8支持
|
\+ 增加.Net8支持
|
||||||
\- UIKnobControl: 删除UIKnobControl,源码见:[UIKnobControl.cs](https://gitee.com/yhuse/SunnyUI/blob/V3.5.2/SunnyUI/Controls/UIKnobControl.cs)
|
\- UIKnobControl: 删除UIKnobControl,源码见:[UIKnobControl.cs](https://gitee.com/yhuse/SunnyUI/blob/V3.5.2/SunnyUI/Controls/UIKnobControl.cs)
|
||||||
\* 重构主题
|
\* 重构主题
|
||||||
@ -179,6 +180,7 @@
|
|||||||
\* 修改几个进度弹窗的关闭标志
|
\* 修改几个进度弹窗的关闭标志
|
||||||
\* 重构GDI一些方法
|
\* 重构GDI一些方法
|
||||||
|
|
||||||
|
|
||||||
## 2023\-10\-27 V3.5.2
|
## 2023\-10\-27 V3.5.2
|
||||||
\+ **字体图标增加旋转角度参数SymbolRotate**
|
\+ **字体图标增加旋转角度参数SymbolRotate**
|
||||||
\* UINavBar: 修正下拉菜单文字显示垂直居中
|
\* UINavBar: 修正下拉菜单文字显示垂直居中
|
||||||
@ -194,6 +196,7 @@
|
|||||||
\* UIDropControl: 修复在高DPI下,文字垂直不居中的问题
|
\* UIDropControl: 修复在高DPI下,文字垂直不居中的问题
|
||||||
\* UIDropControl: 修复在某些字体不显示下划线的问题
|
\* UIDropControl: 修复在某些字体不显示下划线的问题
|
||||||
|
|
||||||
|
|
||||||
## 2023\-10\-16 V3.5.1
|
## 2023\-10\-16 V3.5.1
|
||||||
\+ 增加.Net8支持
|
\+ 增加.Net8支持
|
||||||
\+ 增加MaterialIcons字体图标
|
\+ 增加MaterialIcons字体图标
|
||||||
@ -208,7 +211,7 @@
|
|||||||
## 2023\-09\-19 V3.5.0
|
## 2023\-09\-19 V3.5.0
|
||||||
**注意:大版本更新,SunnyUI字体改为系统默认字体(中文Windows常见字体为宋体)**
|
**注意:大版本更新,SunnyUI字体改为系统默认字体(中文Windows常见字体为宋体)**
|
||||||
建议新项目使用此版本,如果3.5.0以下版本需要升级参照文档设置全局字体:
|
建议新项目使用此版本,如果3.5.0以下版本需要升级参照文档设置全局字体:
|
||||||
[https://gitee.com/yhuse/SunnyUI/wikis/多页面框架/全局字体设置](https://gitee.com/yhuse/SunnyUI/wikis/%E5%A4%9A%E9%A1%B5%E9%9D%A2%E6%A1%86%E6%9E%B6/%E5%85%A8%E5%B1%80%E5%AD%97%E4%BD%93%E8%AE%BE%E7%BD%AE)
|
[全局字体设置](/globalfont)
|
||||||
|
|
||||||
\+ 重构全局字体设置逻辑,可以在运行时设置全局字体
|
\+ 重构全局字体设置逻辑,可以在运行时设置全局字体
|
||||||
\+ 增加全局矩形设计,忽略圆角,UIStyleManager的GlobalRectangle属性
|
\+ 增加全局矩形设计,忽略圆角,UIStyleManager的GlobalRectangle属性
|
||||||
|
20
docs/updatesi.md
Normal file
20
docs/updatesi.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# 升级指南
|
||||||
|
---
|
||||||
|
## 3.5.2-->3.6.0
|
||||||
|
- 本次升级对主题进行了重构,隐藏了修改自定义颜色时需要设置的StyleCustomMode属性。
|
||||||
|
**不需要设置全局主题时**
|
||||||
|
所有控件的颜色修改所见即所得,窗体关闭后再打开,所设置的颜色会保存。默认的主题为UIStyle.Inherited(继承的全局主题)
|
||||||
|
**需要设置全局主题时**
|
||||||
|
不切换主题,和上面的设置一致,如需切换主题仍然保留控件用户自定义修改颜色,在修改完颜色后,将控件的主题设置为UIStyle.Custom(自定义)
|
||||||
|
重构主要是方便了新手用户的使用体验。
|
||||||
|
|
||||||
|
- UICheckBoxGroup
|
||||||
|
升级后原有的值变化事件
|
||||||
|
private void uiCheckBoxGroup1_ValueChanged(object sender, int index, string text, bool isChecked)
|
||||||
|
修改为:
|
||||||
|
private void uiCheckBoxGroup1_ValueChanged(object sender, CheckBoxGroupEventArgs e)
|
||||||
|
按Demo示例操作修改即可。
|
||||||
|
|
||||||
|
- UIForm: 修改默认ShowShadow边框阴影打开,ShowRadius显示圆角关闭
|
||||||
|
ShowShadow打开时,在Win11显示圆角窗体,不需要可以关闭
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user