diff --git a/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project.exe b/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project.exe index d0ff6b8..33ebf61 100644 Binary files a/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project.exe and b/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project.exe differ diff --git a/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project2.exe b/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project2.exe index ca14880..ef6e5b8 100644 Binary files a/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project2.exe and b/Bin/Debug/CommonControls/.NET4 示例/Itrycn_Project2.exe differ diff --git a/Bin/Debug/CommonControls/.NET4 示例/MyDb.dll b/Bin/Debug/CommonControls/.NET4 示例/MyDb.dll index ba8dc42..7bca45c 100644 Binary files a/Bin/Debug/CommonControls/.NET4 示例/MyDb.dll and b/Bin/Debug/CommonControls/.NET4 示例/MyDb.dll differ diff --git a/Bin/Debug/CommonControls/.NET4 示例/MyDb.xml b/Bin/Debug/CommonControls/.NET4 示例/MyDb.xml index 531f846..71a7e8c 100644 --- a/Bin/Debug/CommonControls/.NET4 示例/MyDb.xml +++ b/Bin/Debug/CommonControls/.NET4 示例/MyDb.xml @@ -973,6 +973,13 @@ + + + 判断字符串是否只包含数字 + + + + 判断字符串是否匹配,支持?*通配符 @@ -1133,6 +1140,13 @@ + + + 判断字符串是否是数字(不同于IsInt,本函数是判断字符串是否只含有数字,对字符串长度没有限制) + + + + 是否在指定范围内 @@ -1176,6 +1190,20 @@ + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + 将指定类型转换成整型 @@ -1198,6 +1226,20 @@ + + + 转换为Js时间戳 + + + + + + + 转换为Unix时间戳 + + + + 将指定类型转换成长整型 @@ -2540,6 +2582,209 @@ 父窗体居中 + + + 运行库检测类 + + + + + 获取产品状态 + + + + + + + 判断是否已安装VC运行库 + + + + + + 判断是否已安装VC运行库 + + + + + + 安装状态 + + + + + 组件禁用 + + + + + 配置数据已损坏 + + + + + 安装已暂停或正在进行 + + + + + 从源运行,源不可用 + + + + + 返回缓冲区溢出 + + + + + 无效的参数传递给该函数。 + + + + + 不公布或者未安装该产品。 + + + + + 损坏 + + + + + 该产品已公布但尚未安装。 + + + + + 正在移除的组件(操作状态,不可设置) + + + + + 不同的用户安装该产品。 + + + + + 安装在本地驱动器上 + + + + + 从源代码、CD或网络运行 + + + + + 为当前用户安装该产品。 + + + + + 安装的版本,是x86还是x64,还是全部安装了 + + + + + 判断32位和64位运行库是否已安装 + + + + + 判断32位运行库是否已安装 + + + + + 判断64位运行库是否已安装 + + + + + 判断是否已安装VC2005运行库 + + + + + + 判断是否已安装VC2005SP1运行库 + + + + + + 判断是否已安装VC2008运行库 + + + + + + 判断是否已安装VC2008SP1运行库 + + + + + + 判断是否已安装VC2010运行库 + + + + + + 判断是否已安装VC2010SP1运行库 + + + + + + 判断是否已安装VC2012运行库 + + + + + + 判断是否已安装VC2013运行库 + + + + + + 判断是否已安装VC2015或以上运行库 + + + + + + 判断是否已安装VC2017运行库或以上运行库 + + + + + + 判断是否已安装VC2019运行库或以上运行库 + + + + + + 判断是否已安装VC2022运行库或以上运行库 + + + + + + 判断当前系统是否安装了WebView2组件 + + + + + + 判断当前系统是否安装了.NET 4.8 + + + 日期时间的操作类 @@ -2868,6 +3113,15 @@ 访问的注册表节点 + + + 判断注册表项是否存在 + + + + + + 设置是否开机启动 @@ -3109,7 +3363,7 @@ - 获取系统 + 获取系统名称,注意需要在app.manifest文件中设置兼容win10 @@ -3169,124 +3423,60 @@ 是否截取鼠标指针 - - - 给控件增加拖放功能的类 - - - - - 拖放实例 - - - - - 高级拖放事件 - - - + - + - + 根据XPath来获取属性值 - - - - - - - - - 使管理员方式运行时支持拖放 - - - - - - 使支持拖放属性 - - - - - - - - + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 网络操作类 - - - - - 通过NetworkInterface读取网卡Mac + 根据当前节点生成HtmlDocument + - + - 通过NetworkInterface读取网卡Mac + 根据XPath来获取属性值 + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + 根据XPath来查找节点 - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找符合的第一个节点 - - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找所有符合的节点 - - - + + @@ -6404,6 +6594,126 @@ Gets the fragment text. + + + 给控件增加拖放功能的类 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + + + + + + + + + + + + + + + + 使管理员方式运行时支持拖放 + + + + + + 使支持拖放属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络操作类 + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + + + + + + + 远程唤醒 + + + + + + + + 远程唤醒 + + + + + + 消息客户端类 diff --git a/Bin/Debug/CommonControls/.NET4 示例/MyDb_SQLite.dll b/Bin/Debug/CommonControls/.NET4 示例/MyDb_SQLite.dll index edcbbf8..0920e03 100644 Binary files a/Bin/Debug/CommonControls/.NET4 示例/MyDb_SQLite.dll and b/Bin/Debug/CommonControls/.NET4 示例/MyDb_SQLite.dll differ diff --git a/Bin/Debug/CommonControls/.NET4 示例/RyPrint.dll b/Bin/Debug/CommonControls/.NET4 示例/RyPrint.dll index 384a82e..ee37aa3 100644 Binary files a/Bin/Debug/CommonControls/.NET4 示例/RyPrint.dll and b/Bin/Debug/CommonControls/.NET4 示例/RyPrint.dll differ diff --git a/Bin/Debug/CommonControls/.NET4 示例/UserDb/Win.dat b/Bin/Debug/CommonControls/.NET4 示例/UserDb/Win.dat index 9683fa9..de7db3f 100644 --- a/Bin/Debug/CommonControls/.NET4 示例/UserDb/Win.dat +++ b/Bin/Debug/CommonControls/.NET4 示例/UserDb/Win.dat @@ -1,2 +1,2 @@ [Money_Op] -hwnd=2827616 +hwnd=921334 diff --git a/Bin/Debug/CommonControls/.NET4 示例/cUpdate.dat b/Bin/Debug/CommonControls/.NET4 示例/cUpdate.dat index f96c173..9a9eea1 100644 --- a/Bin/Debug/CommonControls/.NET4 示例/cUpdate.dat +++ b/Bin/Debug/CommonControls/.NET4 示例/cUpdate.dat @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Bin/Debug/CommonControls/.NET4 示例/ryControls.dll b/Bin/Debug/CommonControls/.NET4 示例/ryControls.dll index c21b61e..0d07fdc 100644 Binary files a/Bin/Debug/CommonControls/.NET4 示例/ryControls.dll and b/Bin/Debug/CommonControls/.NET4 示例/ryControls.dll differ diff --git a/Bin/Debug/CommonControls/.NET4 示例/ryControls.xml b/Bin/Debug/CommonControls/.NET4 示例/ryControls.xml index f9105cf..ff15c84 100644 --- a/Bin/Debug/CommonControls/.NET4 示例/ryControls.xml +++ b/Bin/Debug/CommonControls/.NET4 示例/ryControls.xml @@ -7084,6 +7084,38 @@ + + + 密码控件 + + + + + + + + + + 密码 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + 分页控件 diff --git a/Bin/Debug/CommonControls/.NET4 示例/ryUpdate.dll b/Bin/Debug/CommonControls/.NET4 示例/ryUpdate.dll index 0b7669c..5090739 100644 Binary files a/Bin/Debug/CommonControls/.NET4 示例/ryUpdate.dll and b/Bin/Debug/CommonControls/.NET4 示例/ryUpdate.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/Google.Protobuf.dll b/Bin/Debug/CommonControls/.NET4/Google.Protobuf.dll new file mode 100644 index 0000000..2d19737 Binary files /dev/null and b/Bin/Debug/CommonControls/.NET4/Google.Protobuf.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/MyDb.dll b/Bin/Debug/CommonControls/.NET4/MyDb.dll index ba8dc42..7bca45c 100644 Binary files a/Bin/Debug/CommonControls/.NET4/MyDb.dll and b/Bin/Debug/CommonControls/.NET4/MyDb.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/MyDb.xml b/Bin/Debug/CommonControls/.NET4/MyDb.xml index 531f846..71a7e8c 100644 --- a/Bin/Debug/CommonControls/.NET4/MyDb.xml +++ b/Bin/Debug/CommonControls/.NET4/MyDb.xml @@ -973,6 +973,13 @@ + + + 判断字符串是否只包含数字 + + + + 判断字符串是否匹配,支持?*通配符 @@ -1133,6 +1140,13 @@ + + + 判断字符串是否是数字(不同于IsInt,本函数是判断字符串是否只含有数字,对字符串长度没有限制) + + + + 是否在指定范围内 @@ -1176,6 +1190,20 @@ + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + 将指定类型转换成整型 @@ -1198,6 +1226,20 @@ + + + 转换为Js时间戳 + + + + + + + 转换为Unix时间戳 + + + + 将指定类型转换成长整型 @@ -2540,6 +2582,209 @@ 父窗体居中 + + + 运行库检测类 + + + + + 获取产品状态 + + + + + + + 判断是否已安装VC运行库 + + + + + + 判断是否已安装VC运行库 + + + + + + 安装状态 + + + + + 组件禁用 + + + + + 配置数据已损坏 + + + + + 安装已暂停或正在进行 + + + + + 从源运行,源不可用 + + + + + 返回缓冲区溢出 + + + + + 无效的参数传递给该函数。 + + + + + 不公布或者未安装该产品。 + + + + + 损坏 + + + + + 该产品已公布但尚未安装。 + + + + + 正在移除的组件(操作状态,不可设置) + + + + + 不同的用户安装该产品。 + + + + + 安装在本地驱动器上 + + + + + 从源代码、CD或网络运行 + + + + + 为当前用户安装该产品。 + + + + + 安装的版本,是x86还是x64,还是全部安装了 + + + + + 判断32位和64位运行库是否已安装 + + + + + 判断32位运行库是否已安装 + + + + + 判断64位运行库是否已安装 + + + + + 判断是否已安装VC2005运行库 + + + + + + 判断是否已安装VC2005SP1运行库 + + + + + + 判断是否已安装VC2008运行库 + + + + + + 判断是否已安装VC2008SP1运行库 + + + + + + 判断是否已安装VC2010运行库 + + + + + + 判断是否已安装VC2010SP1运行库 + + + + + + 判断是否已安装VC2012运行库 + + + + + + 判断是否已安装VC2013运行库 + + + + + + 判断是否已安装VC2015或以上运行库 + + + + + + 判断是否已安装VC2017运行库或以上运行库 + + + + + + 判断是否已安装VC2019运行库或以上运行库 + + + + + + 判断是否已安装VC2022运行库或以上运行库 + + + + + + 判断当前系统是否安装了WebView2组件 + + + + + + 判断当前系统是否安装了.NET 4.8 + + + 日期时间的操作类 @@ -2868,6 +3113,15 @@ 访问的注册表节点 + + + 判断注册表项是否存在 + + + + + + 设置是否开机启动 @@ -3109,7 +3363,7 @@ - 获取系统 + 获取系统名称,注意需要在app.manifest文件中设置兼容win10 @@ -3169,124 +3423,60 @@ 是否截取鼠标指针 - - - 给控件增加拖放功能的类 - - - - - 拖放实例 - - - - - 高级拖放事件 - - - + - + - + 根据XPath来获取属性值 - - - - - - - - - 使管理员方式运行时支持拖放 - - - - - - 使支持拖放属性 - - - - - - - - + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 网络操作类 - - - - - 通过NetworkInterface读取网卡Mac + 根据当前节点生成HtmlDocument + - + - 通过NetworkInterface读取网卡Mac + 根据XPath来获取属性值 + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + 根据XPath来查找节点 - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找符合的第一个节点 - - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找所有符合的节点 - - - + + @@ -6404,6 +6594,126 @@ Gets the fragment text. + + + 给控件增加拖放功能的类 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + + + + + + + + + + + + + + + + 使管理员方式运行时支持拖放 + + + + + + 使支持拖放属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络操作类 + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + + + + + + + 远程唤醒 + + + + + + + + 远程唤醒 + + + + + + 消息客户端类 diff --git a/Bin/Debug/CommonControls/.NET4/MyDb_MySQL.dll b/Bin/Debug/CommonControls/.NET4/MyDb_MySQL.dll index 6fb79f4..9441822 100644 Binary files a/Bin/Debug/CommonControls/.NET4/MyDb_MySQL.dll and b/Bin/Debug/CommonControls/.NET4/MyDb_MySQL.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/MyDb_SQLite.dll b/Bin/Debug/CommonControls/.NET4/MyDb_SQLite.dll index edcbbf8..0920e03 100644 Binary files a/Bin/Debug/CommonControls/.NET4/MyDb_SQLite.dll and b/Bin/Debug/CommonControls/.NET4/MyDb_SQLite.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/MySql.Data.dll b/Bin/Debug/CommonControls/.NET4/MySql.Data.dll index b732da4..173f721 100644 Binary files a/Bin/Debug/CommonControls/.NET4/MySql.Data.dll and b/Bin/Debug/CommonControls/.NET4/MySql.Data.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/RyPrint.dll b/Bin/Debug/CommonControls/.NET4/RyPrint.dll index 384a82e..ee37aa3 100644 Binary files a/Bin/Debug/CommonControls/.NET4/RyPrint.dll and b/Bin/Debug/CommonControls/.NET4/RyPrint.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/ryControls.dll b/Bin/Debug/CommonControls/.NET4/ryControls.dll index c21b61e..0d07fdc 100644 Binary files a/Bin/Debug/CommonControls/.NET4/ryControls.dll and b/Bin/Debug/CommonControls/.NET4/ryControls.dll differ diff --git a/Bin/Debug/CommonControls/.NET4/ryControls.xml b/Bin/Debug/CommonControls/.NET4/ryControls.xml index f9105cf..ff15c84 100644 --- a/Bin/Debug/CommonControls/.NET4/ryControls.xml +++ b/Bin/Debug/CommonControls/.NET4/ryControls.xml @@ -7084,6 +7084,38 @@ + + + 密码控件 + + + + + + + + + + 密码 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + 分页控件 diff --git a/Bin/Debug/CommonControls/.NET4/ryUpdate.dll b/Bin/Debug/CommonControls/.NET4/ryUpdate.dll index 0b7669c..5090739 100644 Binary files a/Bin/Debug/CommonControls/.NET4/ryUpdate.dll and b/Bin/Debug/CommonControls/.NET4/ryUpdate.dll differ diff --git a/Bin/Release/CommonControls/.NET4 示例/Itrycn_Project.exe b/Bin/Release/CommonControls/.NET4 示例/Itrycn_Project.exe index 26f0ee3..d128806 100644 Binary files a/Bin/Release/CommonControls/.NET4 示例/Itrycn_Project.exe and b/Bin/Release/CommonControls/.NET4 示例/Itrycn_Project.exe differ diff --git a/Bin/Release/CommonControls/.NET4 示例/Itrycn_Project2.exe b/Bin/Release/CommonControls/.NET4 示例/Itrycn_Project2.exe new file mode 100644 index 0000000..18f6e1c Binary files /dev/null and b/Bin/Release/CommonControls/.NET4 示例/Itrycn_Project2.exe differ diff --git a/Bin/Release/CommonControls/.NET4 示例/MyDb.dll b/Bin/Release/CommonControls/.NET4 示例/MyDb.dll index 7b9fa9c..75c5e57 100644 Binary files a/Bin/Release/CommonControls/.NET4 示例/MyDb.dll and b/Bin/Release/CommonControls/.NET4 示例/MyDb.dll differ diff --git a/Bin/Release/CommonControls/.NET4 示例/MyDb.xml b/Bin/Release/CommonControls/.NET4 示例/MyDb.xml index 65b228e..2f31e49 100644 --- a/Bin/Release/CommonControls/.NET4 示例/MyDb.xml +++ b/Bin/Release/CommonControls/.NET4 示例/MyDb.xml @@ -973,6 +973,13 @@ + + + 判断字符串是否只包含数字 + + + + 判断字符串是否匹配,支持?*通配符 @@ -1133,6 +1140,13 @@ + + + 判断字符串是否是数字(不同于IsInt,本函数是判断字符串是否只含有数字,对字符串长度没有限制) + + + + 是否在指定范围内 @@ -1176,6 +1190,20 @@ + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + 将指定类型转换成整型 @@ -1198,6 +1226,20 @@ + + + 转换为Js时间戳 + + + + + + + 转换为Unix时间戳 + + + + 将指定类型转换成长整型 @@ -2540,6 +2582,209 @@ 父窗体居中 + + + 运行库检测类 + + + + + 获取产品状态 + + + + + + + 判断是否已安装VC运行库 + + + + + + 判断是否已安装VC运行库 + + + + + + 安装状态 + + + + + 组件禁用 + + + + + 配置数据已损坏 + + + + + 安装已暂停或正在进行 + + + + + 从源运行,源不可用 + + + + + 返回缓冲区溢出 + + + + + 无效的参数传递给该函数。 + + + + + 不公布或者未安装该产品。 + + + + + 损坏 + + + + + 该产品已公布但尚未安装。 + + + + + 正在移除的组件(操作状态,不可设置) + + + + + 不同的用户安装该产品。 + + + + + 安装在本地驱动器上 + + + + + 从源代码、CD或网络运行 + + + + + 为当前用户安装该产品。 + + + + + 安装的版本,是x86还是x64,还是全部安装了 + + + + + 判断32位和64位运行库是否已安装 + + + + + 判断32位运行库是否已安装 + + + + + 判断64位运行库是否已安装 + + + + + 判断是否已安装VC2005运行库 + + + + + + 判断是否已安装VC2005SP1运行库 + + + + + + 判断是否已安装VC2008运行库 + + + + + + 判断是否已安装VC2008SP1运行库 + + + + + + 判断是否已安装VC2010运行库 + + + + + + 判断是否已安装VC2010SP1运行库 + + + + + + 判断是否已安装VC2012运行库 + + + + + + 判断是否已安装VC2013运行库 + + + + + + 判断是否已安装VC2015或以上运行库 + + + + + + 判断是否已安装VC2017运行库或以上运行库 + + + + + + 判断是否已安装VC2019运行库或以上运行库 + + + + + + 判断是否已安装VC2022运行库或以上运行库 + + + + + + 判断当前系统是否安装了WebView2组件 + + + + + + 判断当前系统是否安装了.NET 4.8 + + + 日期时间的操作类 @@ -2868,6 +3113,15 @@ 访问的注册表节点 + + + 判断注册表项是否存在 + + + + + + 设置是否开机启动 @@ -3109,7 +3363,7 @@ - 获取系统 + 获取系统名称,注意需要在app.manifest文件中设置兼容win10 @@ -3169,124 +3423,60 @@ 是否截取鼠标指针 - - - 给控件增加拖放功能的类 - - - - - 拖放实例 - - - - - 高级拖放事件 - - - + - + - + 根据XPath来获取属性值 - - - - - - - - - 使管理员方式运行时支持拖放 - - - - - - 使支持拖放属性 - - - - - - - - + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 网络操作类 - - - - - 通过NetworkInterface读取网卡Mac + 根据当前节点生成HtmlDocument + - + - 通过NetworkInterface读取网卡Mac + 根据XPath来获取属性值 + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + 根据XPath来查找节点 - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找符合的第一个节点 - - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找所有符合的节点 - - - + + @@ -6377,6 +6567,126 @@ Gets the fragment text. + + + 给控件增加拖放功能的类 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + + + + + + + + + + + + + + + + 使管理员方式运行时支持拖放 + + + + + + 使支持拖放属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络操作类 + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + + + + + + + 远程唤醒 + + + + + + + + 远程唤醒 + + + + + + 消息客户端类 diff --git a/Bin/Release/CommonControls/.NET4 示例/MyDb_SQLite.dll b/Bin/Release/CommonControls/.NET4 示例/MyDb_SQLite.dll index cbdb59e..e916c71 100644 Binary files a/Bin/Release/CommonControls/.NET4 示例/MyDb_SQLite.dll and b/Bin/Release/CommonControls/.NET4 示例/MyDb_SQLite.dll differ diff --git a/Bin/Release/CommonControls/.NET4 示例/RyPrint.dll b/Bin/Release/CommonControls/.NET4 示例/RyPrint.dll index dbfeb90..a8958b2 100644 Binary files a/Bin/Release/CommonControls/.NET4 示例/RyPrint.dll and b/Bin/Release/CommonControls/.NET4 示例/RyPrint.dll differ diff --git a/Bin/Release/CommonControls/.NET4 示例/UserDb/Win.dat b/Bin/Release/CommonControls/.NET4 示例/UserDb/Win.dat index d18abd2..2c2150b 100644 --- a/Bin/Release/CommonControls/.NET4 示例/UserDb/Win.dat +++ b/Bin/Release/CommonControls/.NET4 示例/UserDb/Win.dat @@ -1,2 +1,2 @@ [Money_Op] -hwnd=74558 +hwnd=134850 diff --git a/Bin/Release/CommonControls/.NET4 示例/cUpdate.dat b/Bin/Release/CommonControls/.NET4 示例/cUpdate.dat index ebae366..5c1f19f 100644 --- a/Bin/Release/CommonControls/.NET4 示例/cUpdate.dat +++ b/Bin/Release/CommonControls/.NET4 示例/cUpdate.dat @@ -1,4 +1,4 @@ - - - + + + \ No newline at end of file diff --git a/Bin/Release/CommonControls/.NET4 示例/ryControls.dll b/Bin/Release/CommonControls/.NET4 示例/ryControls.dll index 697a275..e148efa 100644 Binary files a/Bin/Release/CommonControls/.NET4 示例/ryControls.dll and b/Bin/Release/CommonControls/.NET4 示例/ryControls.dll differ diff --git a/Bin/Release/CommonControls/.NET4 示例/ryControls.xml b/Bin/Release/CommonControls/.NET4 示例/ryControls.xml index f9105cf..ff15c84 100644 --- a/Bin/Release/CommonControls/.NET4 示例/ryControls.xml +++ b/Bin/Release/CommonControls/.NET4 示例/ryControls.xml @@ -7084,6 +7084,38 @@ + + + 密码控件 + + + + + + + + + + 密码 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + 分页控件 diff --git a/Bin/Release/CommonControls/.NET4 示例/ryUpdate.dll b/Bin/Release/CommonControls/.NET4 示例/ryUpdate.dll index 2dfc624..1471e1e 100644 Binary files a/Bin/Release/CommonControls/.NET4 示例/ryUpdate.dll and b/Bin/Release/CommonControls/.NET4 示例/ryUpdate.dll differ diff --git a/Bin/Release/CommonControls/.NET4/Google.Protobuf.dll b/Bin/Release/CommonControls/.NET4/Google.Protobuf.dll new file mode 100644 index 0000000..2d19737 Binary files /dev/null and b/Bin/Release/CommonControls/.NET4/Google.Protobuf.dll differ diff --git a/Bin/Release/CommonControls/.NET4/MyDb.dll b/Bin/Release/CommonControls/.NET4/MyDb.dll index 7b9fa9c..75c5e57 100644 Binary files a/Bin/Release/CommonControls/.NET4/MyDb.dll and b/Bin/Release/CommonControls/.NET4/MyDb.dll differ diff --git a/Bin/Release/CommonControls/.NET4/MyDb.xml b/Bin/Release/CommonControls/.NET4/MyDb.xml index 65b228e..2f31e49 100644 --- a/Bin/Release/CommonControls/.NET4/MyDb.xml +++ b/Bin/Release/CommonControls/.NET4/MyDb.xml @@ -973,6 +973,13 @@ + + + 判断字符串是否只包含数字 + + + + 判断字符串是否匹配,支持?*通配符 @@ -1133,6 +1140,13 @@ + + + 判断字符串是否是数字(不同于IsInt,本函数是判断字符串是否只含有数字,对字符串长度没有限制) + + + + 是否在指定范围内 @@ -1176,6 +1190,20 @@ + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + 将指定类型转换成整型 @@ -1198,6 +1226,20 @@ + + + 转换为Js时间戳 + + + + + + + 转换为Unix时间戳 + + + + 将指定类型转换成长整型 @@ -2540,6 +2582,209 @@ 父窗体居中 + + + 运行库检测类 + + + + + 获取产品状态 + + + + + + + 判断是否已安装VC运行库 + + + + + + 判断是否已安装VC运行库 + + + + + + 安装状态 + + + + + 组件禁用 + + + + + 配置数据已损坏 + + + + + 安装已暂停或正在进行 + + + + + 从源运行,源不可用 + + + + + 返回缓冲区溢出 + + + + + 无效的参数传递给该函数。 + + + + + 不公布或者未安装该产品。 + + + + + 损坏 + + + + + 该产品已公布但尚未安装。 + + + + + 正在移除的组件(操作状态,不可设置) + + + + + 不同的用户安装该产品。 + + + + + 安装在本地驱动器上 + + + + + 从源代码、CD或网络运行 + + + + + 为当前用户安装该产品。 + + + + + 安装的版本,是x86还是x64,还是全部安装了 + + + + + 判断32位和64位运行库是否已安装 + + + + + 判断32位运行库是否已安装 + + + + + 判断64位运行库是否已安装 + + + + + 判断是否已安装VC2005运行库 + + + + + + 判断是否已安装VC2005SP1运行库 + + + + + + 判断是否已安装VC2008运行库 + + + + + + 判断是否已安装VC2008SP1运行库 + + + + + + 判断是否已安装VC2010运行库 + + + + + + 判断是否已安装VC2010SP1运行库 + + + + + + 判断是否已安装VC2012运行库 + + + + + + 判断是否已安装VC2013运行库 + + + + + + 判断是否已安装VC2015或以上运行库 + + + + + + 判断是否已安装VC2017运行库或以上运行库 + + + + + + 判断是否已安装VC2019运行库或以上运行库 + + + + + + 判断是否已安装VC2022运行库或以上运行库 + + + + + + 判断当前系统是否安装了WebView2组件 + + + + + + 判断当前系统是否安装了.NET 4.8 + + + 日期时间的操作类 @@ -2868,6 +3113,15 @@ 访问的注册表节点 + + + 判断注册表项是否存在 + + + + + + 设置是否开机启动 @@ -3109,7 +3363,7 @@ - 获取系统 + 获取系统名称,注意需要在app.manifest文件中设置兼容win10 @@ -3169,124 +3423,60 @@ 是否截取鼠标指针 - - - 给控件增加拖放功能的类 - - - - - 拖放实例 - - - - - 高级拖放事件 - - - + - + - + 根据XPath来获取属性值 - - - - - - - - - 使管理员方式运行时支持拖放 - - - - - - 使支持拖放属性 - - - - - - - - + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 网络操作类 - - - - - 通过NetworkInterface读取网卡Mac + 根据当前节点生成HtmlDocument + - + - 通过NetworkInterface读取网卡Mac + 根据XPath来获取属性值 + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + - + - 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + 根据XPath来查找节点 - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找符合的第一个节点 - - + + - + - 远程唤醒 + 在当前节点下根据xpath来查找所有符合的节点 - - - + + @@ -6377,6 +6567,126 @@ Gets the fragment text. + + + 给控件增加拖放功能的类 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + + + + + + + + + + + + + + + + 使管理员方式运行时支持拖放 + + + + + + 使支持拖放属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络操作类 + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + + + + + + + 远程唤醒 + + + + + + + + 远程唤醒 + + + + + + 消息客户端类 diff --git a/Bin/Release/CommonControls/.NET4/MyDb_MySQL.dll b/Bin/Release/CommonControls/.NET4/MyDb_MySQL.dll index 9732d41..a9c07d5 100644 Binary files a/Bin/Release/CommonControls/.NET4/MyDb_MySQL.dll and b/Bin/Release/CommonControls/.NET4/MyDb_MySQL.dll differ diff --git a/Bin/Release/CommonControls/.NET4/MyDb_SQLite.dll b/Bin/Release/CommonControls/.NET4/MyDb_SQLite.dll index cbdb59e..e916c71 100644 Binary files a/Bin/Release/CommonControls/.NET4/MyDb_SQLite.dll and b/Bin/Release/CommonControls/.NET4/MyDb_SQLite.dll differ diff --git a/Bin/Release/CommonControls/.NET4/MySql.Data.dll b/Bin/Release/CommonControls/.NET4/MySql.Data.dll index b732da4..173f721 100644 Binary files a/Bin/Release/CommonControls/.NET4/MySql.Data.dll and b/Bin/Release/CommonControls/.NET4/MySql.Data.dll differ diff --git a/Bin/Release/CommonControls/.NET4/RyPrint.dll b/Bin/Release/CommonControls/.NET4/RyPrint.dll index dbfeb90..a8958b2 100644 Binary files a/Bin/Release/CommonControls/.NET4/RyPrint.dll and b/Bin/Release/CommonControls/.NET4/RyPrint.dll differ diff --git a/Bin/Release/CommonControls/.NET4/ryControls.dll b/Bin/Release/CommonControls/.NET4/ryControls.dll index 697a275..e148efa 100644 Binary files a/Bin/Release/CommonControls/.NET4/ryControls.dll and b/Bin/Release/CommonControls/.NET4/ryControls.dll differ diff --git a/Bin/Release/CommonControls/.NET4/ryControls.xml b/Bin/Release/CommonControls/.NET4/ryControls.xml index f9105cf..ff15c84 100644 --- a/Bin/Release/CommonControls/.NET4/ryControls.xml +++ b/Bin/Release/CommonControls/.NET4/ryControls.xml @@ -7084,6 +7084,38 @@ + + + 密码控件 + + + + + + + + + + 密码 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + 分页控件 diff --git a/Bin/Release/CommonControls/.NET4/ryUpdate.dll b/Bin/Release/CommonControls/.NET4/ryUpdate.dll index 2dfc624..1471e1e 100644 Binary files a/Bin/Release/CommonControls/.NET4/ryUpdate.dll and b/Bin/Release/CommonControls/.NET4/ryUpdate.dll differ diff --git a/CHANGELOG.md b/CHANGELOG.md index 266020f..a61f2c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,14 @@ -### 2021-12-14更新 +### 2022-02-09更新 +------ +#### MyDbV4 V3.0.2202.0901 +- *.[改进]新增ToNString扩展函数,支持将数字转换成小数点末尾不带0的字符串。 + +### 2021-12-27更新 +------ +#### MyDbV4 V3.0.2112.2701 +- *.[新增]DateTime类型扩展函数新增ToJsTime、ToUnixTime。 + +### 2021-12-14更新 ------ #### MyDbV4 V3.0.2112.1401 - *.[修复]修复MSSQL的ExecuteNonQuery函数可能因为报错导致软件崩溃的BUG。 diff --git a/Source/.vs/公用控件组V4/FileContentIndex/277c22b4-d272-4e5b-a26d-8707a63f6e06.vsidx b/Source/.vs/公用控件组V4/FileContentIndex/277c22b4-d272-4e5b-a26d-8707a63f6e06.vsidx new file mode 100644 index 0000000..77ce11b Binary files /dev/null and b/Source/.vs/公用控件组V4/FileContentIndex/277c22b4-d272-4e5b-a26d-8707a63f6e06.vsidx differ diff --git a/Source/.vs/公用控件组V4/FileContentIndex/be56b25f-2f31-4fe9-88fc-0d4c800fdb7c.vsidx b/Source/.vs/公用控件组V4/FileContentIndex/be56b25f-2f31-4fe9-88fc-0d4c800fdb7c.vsidx new file mode 100644 index 0000000..7eaff91 Binary files /dev/null and b/Source/.vs/公用控件组V4/FileContentIndex/be56b25f-2f31-4fe9-88fc-0d4c800fdb7c.vsidx differ diff --git a/Source/.vs/公用控件组V4/FileContentIndex/read.lock b/Source/.vs/公用控件组V4/FileContentIndex/read.lock new file mode 100644 index 0000000..e69de29 diff --git a/Source/.vs/公用控件组V4/v17/.suo b/Source/.vs/公用控件组V4/v17/.suo index 5664427..8485624 100644 Binary files a/Source/.vs/公用控件组V4/v17/.suo and b/Source/.vs/公用控件组V4/v17/.suo differ diff --git a/Source/.vs/公用控件组V4/v17/fileList.bin b/Source/.vs/公用控件组V4/v17/fileList.bin index 42f7db5..12ebcba 100644 Binary files a/Source/.vs/公用控件组V4/v17/fileList.bin and b/Source/.vs/公用控件组V4/v17/fileList.bin differ diff --git a/Source/Itrycn_Project2/FrmStart.Designer.cs b/Source/Itrycn_Project2/FrmStart.Designer.cs index 9d4ef67..9069dfe 100644 --- a/Source/Itrycn_Project2/FrmStart.Designer.cs +++ b/Source/Itrycn_Project2/FrmStart.Designer.cs @@ -43,9 +43,15 @@ this.捐助ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.chromeTabControl1 = new ryControls.ChromeTabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); + this.TabLogs = new System.Windows.Forms.TabPage(); + this.LvLogs = new BrightIdeasSoftware.ObjectListView(); + this.OlvLogTime = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); + this.OlvLogText = ((BrightIdeasSoftware.OLVColumn)(new BrightIdeasSoftware.OLVColumn())); this.MenuTray.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.chromeTabControl1.SuspendLayout(); + this.TabLogs.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.LvLogs)).BeginInit(); this.SuspendLayout(); // // notifyIcon1 @@ -133,6 +139,7 @@ | System.Windows.Forms.AnchorStyles.Right))); this.chromeTabControl1.BackTabPageImage = null; this.chromeTabControl1.Controls.Add(this.tabPage1); + this.chromeTabControl1.Controls.Add(this.TabLogs); this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default; this.chromeTabControl1.ItemSize = new System.Drawing.Size(100, 25); this.chromeTabControl1.Location = new System.Drawing.Point(1, 55); @@ -156,6 +163,49 @@ this.tabPage1.Text = "首页"; this.tabPage1.UseVisualStyleBackColor = true; // + // TabLogs + // + this.TabLogs.Controls.Add(this.LvLogs); + this.TabLogs.Location = new System.Drawing.Point(1, 29); + this.TabLogs.Name = "TabLogs"; + this.TabLogs.Padding = new System.Windows.Forms.Padding(3); + this.TabLogs.Size = new System.Drawing.Size(785, 503); + this.TabLogs.TabIndex = 1; + this.TabLogs.Text = "日志"; + this.TabLogs.UseVisualStyleBackColor = true; + // + // LvLogs + // + this.LvLogs.AllColumns.Add(this.OlvLogTime); + this.LvLogs.AllColumns.Add(this.OlvLogText); + this.LvLogs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.LvLogs.CellEditUseWholeCell = false; + this.LvLogs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.OlvLogTime, + this.OlvLogText}); + this.LvLogs.Cursor = System.Windows.Forms.Cursors.Default; + this.LvLogs.FullRowSelect = true; + this.LvLogs.HideSelection = false; + this.LvLogs.Location = new System.Drawing.Point(3, 4); + this.LvLogs.Name = "LvLogs"; + this.LvLogs.RowHeight = 25; + this.LvLogs.Size = new System.Drawing.Size(780, 494); + this.LvLogs.TabIndex = 14; + this.LvLogs.UseCompatibleStateImageBehavior = false; + this.LvLogs.View = System.Windows.Forms.View.Details; + // + // OlvLogTime + // + this.OlvLogTime.Text = "时间"; + this.OlvLogTime.Width = 200; + // + // OlvLogText + // + this.OlvLogText.Text = "日志说明"; + this.OlvLogText.Width = 500; + // // FrmStart // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -174,6 +224,8 @@ this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); this.chromeTabControl1.ResumeLayout(false); + this.TabLogs.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.LvLogs)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -192,5 +244,9 @@ private System.Windows.Forms.ToolStripMenuItem 选项ToolStripMenuItem; private System.Windows.Forms.TabPage tabPage1; private ryControls.ChromeTabControl chromeTabControl1; + private System.Windows.Forms.TabPage TabLogs; + private BrightIdeasSoftware.ObjectListView LvLogs; + private BrightIdeasSoftware.OLVColumn OlvLogTime; + private BrightIdeasSoftware.OLVColumn OlvLogText; } } \ No newline at end of file diff --git a/Source/Itrycn_Project2/FrmStart.cs b/Source/Itrycn_Project2/FrmStart.cs index 58a3af5..c38b99a 100644 --- a/Source/Itrycn_Project2/FrmStart.cs +++ b/Source/Itrycn_Project2/FrmStart.cs @@ -14,6 +14,10 @@ namespace Itrycn_Project2 { public partial class FrmStart : RySkins.SKinForm { + /// + /// 最大日志数量 + /// + private int MaxLogsCount { get; set; } = 1000; readonly string[] prog_args; public FrmStart(string[] args) { @@ -26,8 +30,56 @@ namespace Itrycn_Project2 if (!Soft_ConstInfo.DonateVisabled) { 捐助ToolStripMenuItem.Text = "关于"; } if (Soft_ConstInfo.Soft_Url.Length == 0) { 打开官网ToolStripMenuItem.PerformClick(); } notifyIcon1.Icon = Icon; + OlvLogTime.AspectGetter = delegate (object x) { return ((LogInfo)x).LogTime.ToDateTimeStr(); }; + OlvLogText.AspectGetter = delegate (object x) { return ((LogInfo)x).LogText; }; + LvLogs.FormatRow += delegate (object x, BrightIdeasSoftware.FormatRowEventArgs e) { + LogInfo item = (LogInfo)e.Model; + if (item.Color != Color.Black) + { + e.Item.ForeColor = item.Color; + } + }; + } + /// + /// 添加日志 + /// + /// + public void AddLog(string log) + { + AddLog(log, "", Color.Black); + } + /// + /// 添加日志 + /// + /// + /// + public void AddLog(string log, Color color) + { + AddLog(log, "", color); + } + /// + /// 添加日志 + /// + /// + /// + /// + public void AddLog(string log, string tag, Color color) + { + try + { + this.Invoke(new Action(() => + { + var count = LvLogs.GetItemCount(); + if (count > MaxLogsCount) + { + LvLogs.RemoveObject(LvLogs.GetModelObject(count-1)); + } + LvLogs.InsertObjects(0, new LogInfo[] { new LogInfo() { LogTime = DateTime.Now, LogText = log,LogTag=tag, Color = color } }); + OlvLogTime.Text = "时间(" + LvLogs.GetItemCount() + ")"; + })); + } + catch { } } - private void 显示主窗体ToolStripMenuItem_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Normal; @@ -160,5 +212,27 @@ namespace Itrycn_Project2 } frm.Dispose(); } + /// + /// 日志信息 + /// + public class LogInfo + { + /// + /// 日志时间 + /// + public DateTime LogTime { get; set; } = DateTime.Now; + /// + /// 日志内容 + /// + public string LogText { get; set; } + /// + /// 日志Tag + /// + public string LogTag { get; set; } + /// + /// 日志文字颜色 + /// + public Color Color { get; set; } = Color.Black; + } } } diff --git a/Source/Itrycn_Project2/Program.cs b/Source/Itrycn_Project2/Program.cs index 6625403..38b6401 100644 --- a/Source/Itrycn_Project2/Program.cs +++ b/Source/Itrycn_Project2/Program.cs @@ -23,6 +23,10 @@ namespace Itrycn_Project2 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); + if(ryCommon.RedistCheck.IsInstall_VC2019(RedistCheck.InstallBit.All)) + { + + } Config.Init.Show(args); } static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) diff --git a/Source/MyDb/DbManage/HtmlVarExtension.cs b/Source/MyDb/DbManage/HtmlVarExtension.cs new file mode 100644 index 0000000..9c2e370 --- /dev/null +++ b/Source/MyDb/DbManage/HtmlVarExtension.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HtmlAgilityPack +{ + /// + /// + /// + public static class HtmlVarExtension + { + /// + /// 根据XPath来获取属性值 + /// + /// + /// + /// 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + /// + /// + static public string GetAttr(this HtmlNode original, string xpath,string attr,string defValue) + { + if (original == null) { return defValue; } + HtmlDocument htmlItem = new HtmlDocument(); + htmlItem.LoadHtml(original.OuterHtml); + HtmlNodeCollection anchors = htmlItem.DocumentNode.SelectNodes(xpath); + if (anchors != null && anchors.Count >= 0) + { + if (attr.Length == 0) + { return System.Web.HttpUtility.HtmlDecode(anchors[0].InnerText); } + else if (attr == "-1") + { return anchors[0].InnerHtml; } + else if (attr == "-2") + { return anchors[0].OuterHtml; } + else + { + return anchors[0].GetAttributeValue(attr, defValue); + } + } + return defValue; + } + /// + /// 根据当前节点生成HtmlDocument + /// + /// + /// + static public HtmlDocument GetHtmlDocument(this HtmlNode original) + { + if (original == null) { return null; } + HtmlDocument htmlItem = new HtmlDocument(); + htmlItem.LoadHtml(original.OuterHtml); + return htmlItem; + } + /// + /// 根据XPath来获取属性值 + /// + /// + /// + /// 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + /// + /// + static public string GetAttr(this HtmlDocument htmlItem, string xpath, string attr, string defValue) + { + if(htmlItem == null) { return defValue;} + HtmlNodeCollection item = htmlItem.DocumentNode.SelectNodes(xpath); + if (item != null && item.Count >= 0) + { + if (attr.Length == 0) + { return System.Web.HttpUtility.HtmlDecode(item[0].InnerText); } + else if (attr == "-1") + { return item[0].InnerHtml; } + else if (attr == "-2") + { return item[0].OuterHtml; } + else + { + return item[0].GetAttributeValue(attr, defValue); + } + } + return defValue; + } + /// + /// 根据XPath来查找节点 + /// + /// + /// + /// + static public HtmlNode GetHtmlNode(this HtmlDocument htmlDoc, string xpath) + { + HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(xpath);//筛选出网站的链接 + if (anchors != null) + { + return anchors[0]; + } + return null; + } + /// + /// 在当前节点下根据xpath来查找符合的第一个节点 + /// + /// + /// + /// + static public HtmlNode GetHtmlNode(this HtmlNode node, string xpath) + { + if(node == null) { return null; } + HtmlDocument htmlItem = new HtmlDocument(); + htmlItem.LoadHtml(node.OuterHtml); + HtmlNodeCollection anchors = htmlItem.DocumentNode.SelectNodes(xpath);//筛选出网站的链接 + if (anchors != null) + { + return anchors[0]; + } + return null; + } + /// + /// 在当前节点下根据xpath来查找所有符合的节点 + /// + /// + /// + /// + static public HtmlNodeCollection GetHtmlNodes(this HtmlNode node, string xpath) + { + if (node == null) { return null; } + HtmlDocument htmlItem = new HtmlDocument(); + htmlItem.LoadHtml(node.OuterHtml); + HtmlNodeCollection anchors = htmlItem.DocumentNode.SelectNodes(xpath);//筛选出网站的链接 + return anchors; + } + } +} diff --git a/Source/MyDb/DbManage/Strings.cs b/Source/MyDb/DbManage/Strings.cs index 997674b..8bccb2f 100644 --- a/Source/MyDb/DbManage/Strings.cs +++ b/Source/MyDb/DbManage/Strings.cs @@ -288,6 +288,15 @@ namespace ryCommon return !Regex.IsMatch(str, "[^a-zA-Z]"); } /// + /// 判断字符串是否只包含数字 + /// + /// + /// + public static bool IsNum(string str) + { + return !Regex.IsMatch(str, "[^0-9]"); + } + /// /// 判断字符串是否匹配,支持?*通配符 /// /// 待匹配的字符串 diff --git a/Source/MyDb/DbManage/VarExtension.cs b/Source/MyDb/DbManage/VarExtension.cs index 161c8c2..af666df 100644 --- a/Source/MyDb/DbManage/VarExtension.cs +++ b/Source/MyDb/DbManage/VarExtension.cs @@ -117,6 +117,15 @@ namespace ryCommon return Strings.IsEng(input); } /// + /// 判断字符串是否是数字(不同于IsInt,本函数是判断字符串是否只含有数字,对字符串长度没有限制) + /// + /// + /// + static public bool IsNum(this string input) + { + return Strings.IsNum(input); + } + /// /// 是否在指定范围内 /// /// @@ -187,6 +196,41 @@ namespace ryCommon { return defValue; } } /// + /// 将数字转换成字符串,小数点末尾后面不包含0 + /// + /// + /// + static public string ToNString(this decimal input) + { + var str= input.ToString(); + if (str.IndexOfEx(".") >= 0) { + str= str.TrimEnd('0'); + if(str.EndsWith(".")) + { + str = str.Substring(0, str.Length - 1); + } + } + return str; + } + /// + /// 将数字转换成字符串,小数点末尾后面不包含0 + /// + /// + /// + static public string ToNString(this double input) + { + var str = input.ToString(); + if (str.IndexOfEx(".") >= 0) + { + str = str.TrimEnd('0'); + if (str.EndsWith(".")) + { + str = str.Substring(0, str.Length - 1); + } + } + return str; + } + /// /// 将指定类型转换成整型 /// /// @@ -195,7 +239,8 @@ namespace ryCommon { try { - if(input is string) + if (input == null) { return 0; } + if (input is string) { if(input.IsDouble()) { @@ -213,7 +258,7 @@ namespace ryCommon /// /// /// - static public Int64 ToInt64(this object input, Int64 defValue) + static public long ToInt64(this object input, Int64 defValue) { try { @@ -237,11 +282,29 @@ namespace ryCommon return input.ToTimeStamp(); } /// + /// 转换为Js时间戳 + /// + /// + /// + static public long ToJsTime(this DateTime input) + { + return RyDate.DateTimeToJSTime(input); + } + /// + /// 转换为Unix时间戳 + /// + /// + /// + static public long ToUnixTime(this DateTime input) + { + return RyDate.DateTimeToUnixTime(input); + } + /// /// 将指定类型转换成长整型 /// /// /// - static public Int64 ToInt64(this object input) + static public long ToInt64(this object input) { return ToInt64(input,0); } @@ -304,7 +367,7 @@ namespace ryCommon /// /// /// - static public Int64 ToTimeStamp(this DateTime input) + static public long ToTimeStamp(this DateTime input) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 long timeStamp = (long)(input - startTime).TotalSeconds; // 相差秒数 @@ -315,7 +378,7 @@ namespace ryCommon /// /// /// - static public DateTime ToDateTime(this Int64 input) + static public DateTime ToDateTime(this long input) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 return startTime.AddSeconds(input); diff --git a/Source/MyDb/HtmlAgilityPack.Shared/HtmlNode.Xpath.cs b/Source/MyDb/HtmlAgilityPack.Shared/HtmlNode.Xpath.cs index a591043..287b484 100644 --- a/Source/MyDb/HtmlAgilityPack.Shared/HtmlNode.Xpath.cs +++ b/Source/MyDb/HtmlAgilityPack.Shared/HtmlNode.Xpath.cs @@ -56,7 +56,6 @@ namespace HtmlAgilityPack return list; } - /// /// Selects a list of nodes matching the expression. /// diff --git a/Source/MyDb/MyDbV4.csproj b/Source/MyDb/MyDbV4.csproj index a2d0213..cdfd8d6 100644 --- a/Source/MyDb/MyDbV4.csproj +++ b/Source/MyDb/MyDbV4.csproj @@ -65,6 +65,7 @@ + @@ -147,6 +148,7 @@ + diff --git a/Source/MyDb/Properties/AssemblyInfo.cs b/Source/MyDb/Properties/AssemblyInfo.cs index 468d0f6..41cf9a8 100644 --- a/Source/MyDb/Properties/AssemblyInfo.cs +++ b/Source/MyDb/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.2112.1401")] -[assembly: AssemblyFileVersion("3.0.2112.1401")] \ No newline at end of file +[assembly: AssemblyVersion("3.0.2202.0901")] +[assembly: AssemblyFileVersion("3.0.2202.0901")] \ No newline at end of file diff --git a/Source/MyDb/SysFuns/RedistCheck.cs b/Source/MyDb/SysFuns/RedistCheck.cs new file mode 100644 index 0000000..b2fc105 --- /dev/null +++ b/Source/MyDb/SysFuns/RedistCheck.cs @@ -0,0 +1,411 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace ryCommon +{ + /// + /// 运行库检测类 + /// + public static class RedistCheck + { + #region C++运行库判断模块 + [DllImport("msi.dll")] + private static extern INSTALLSTATE MsiQueryProductState(string product); + /// + /// 获取产品状态 + /// + /// + /// + private static INSTALLSTATE GetProcuct(string product) + { + INSTALLSTATE state = MsiQueryProductState(product); + return state; + } + private static bool HaveInstallVc(string GUID) + { + + if (MsiQueryProductState(GUID) == INSTALLSTATE.INSTALLSTATE_DEFAULT) + { return true; } + else + { + return false; + } + + } + private static bool HaveInstallVc(InstallBit installBit,string GUID_x86,string GUID_X64) + { + if (installBit == InstallBit.All) + { + return HaveInstallVc(GUID_x86) && HaveInstallVc(GUID_X64); + } + else if (installBit == InstallBit.X86) + { + return HaveInstallVc(GUID_x86); + } + else if (installBit == InstallBit.X64) + { + return HaveInstallVc(GUID_X64); + } + return false; + } + private static bool HaveInstallVc(InstallBit installBit, string[] GUID_x86, string[] GUID_X64) + { + if (installBit == InstallBit.All) + { + var result_x86 = false; + for (int i = 0; i < GUID_x86.Length; i++) + { + if (HaveInstallVc(GUID_x86[i])) { result_x86 = true;break; } + } + var result_x64 = false; + for (int i = 0; i < GUID_X64.Length; i++) + { + if (HaveInstallVc(GUID_X64[i])) { result_x64 = true; break; } + } + return result_x86 && result_x64; + } + else if (installBit == InstallBit.X86) + { + var result_x86 = false; + for (int i = 0; i < GUID_x86.Length; i++) + { + if (HaveInstallVc(GUID_x86[i])) { result_x86 = true; break; } + } + return result_x86; + } + else if (installBit == InstallBit.X64) + { + var result_x64 = false; + for (int i = 0; i < GUID_X64.Length; i++) + { + if (HaveInstallVc(GUID_X64[i])) { result_x64 = true; break; } + } + return result_x64; + } + return false; + } + /// + /// 判断是否已安装VC运行库 + /// + /// + private static bool IsInstall_VC(InstallBit installBit,string vcdll,double min_softver,double min_rever) + { + if (Environment.Is64BitOperatingSystem) + { + if (installBit == InstallBit.All) + { + var path_x64 = RyFiles.GetRealPath(@"\"+ vcdll); + var path_x86 = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path_x64) && System.IO.File.Exists(path_x86)) + { + var ver_x64 = RySoft.GetVersionStr(path_x64); + RySoft.GetVerByVerStr(ver_x64, out var _softver_x64, out var _rever_x64); + var ver_x86 = RySoft.GetVersionStr(path_x86); + RySoft.GetVerByVerStr(ver_x86, out var _softver_x86, out var _rever_x86); + if (RySoft.CompareVer(min_softver, min_rever,_softver_x64, _rever_x64)>=0 && RySoft.CompareVer(min_softver, min_rever, _softver_x86, _rever_x86) >= 0) + { + return true; + } + } + } + else if (installBit == InstallBit.X86) + { + var path_x86 = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path_x86)) + { + var ver_x86 = RySoft.GetVersionStr(path_x86); + RySoft.GetVerByVerStr(ver_x86, out var _softver_x86, out var _rever_x86); + if (RySoft.CompareVer(min_softver, min_rever, _softver_x86, _rever_x86) >= 0) + { + return true; + } + } + } + else if (installBit == InstallBit.X64) + { + var path_x64 = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path_x64)) + { + var ver_x64 = RySoft.GetVersionStr(path_x64); + RySoft.GetVerByVerStr(ver_x64, out var _softver_x64, out var _rever_x64); + if (RySoft.CompareVer(min_softver, min_rever, _softver_x64, _rever_x64) >= 0) + { + return true; + } + } + } + } + else + { + var path = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path)) + { + var ver_x86 = RySoft.GetVersionStr(path); + RySoft.GetVerByVerStr(ver_x86, out var _softver_x86, out var _rever_x86); + if (RySoft.CompareVer(min_softver, min_rever, _softver_x86, _rever_x86) >= 0) + { + return true; + } + } + } + return false; + } + /// + /// 判断是否已安装VC运行库 + /// + /// + public static bool IsInstall_VC(InstallBit installBit, string vcdll) + { + if (Environment.Is64BitOperatingSystem) + { + if (installBit == InstallBit.All) + { + var path_x64 = RyFiles.GetRealPath(@"\"+ vcdll); + var path_x86 = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path_x64) && System.IO.File.Exists(path_x86)) + { + return true; + } + } + else if (installBit == InstallBit.X86) + { + var path_x86 = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path_x86)) { return true; } + } + else if (installBit == InstallBit.X64) + { + var path_x64 = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path_x64)) { return true; } + } + } + else + { + var path = RyFiles.GetRealPath(@"\"+ vcdll); + if (System.IO.File.Exists(path)) { return true; } + } + return false; + } + /// + /// 安装状态 + /// + private enum INSTALLSTATE + { + /// + /// 组件禁用 + /// + INSTALLSTATE_NOTUSED = -7, // component disabled + /// + /// 配置数据已损坏 + /// + INSTALLSTATE_BADCONFIG = -6, // configuration data corrupt + /// + /// 安装已暂停或正在进行 + /// + INSTALLSTATE_INCOMPLETE = -5, // installation suspended or in progress + /// + /// 从源运行,源不可用 + /// + INSTALLSTATE_SOURCEABSENT = -4, // run from source, source is unavailable + /// + /// 返回缓冲区溢出 + /// + INSTALLSTATE_MOREDATA = -3, // return buffer overflow + /// + /// 无效的参数传递给该函数。 + /// + INSTALLSTATE_INVALIDARG = -2, // invalid function argument + /// + /// 不公布或者未安装该产品。 + /// + INSTALLSTATE_UNKNOWN = -1, // unrecognized product or feature + /// + /// 损坏 + /// + INSTALLSTATE_BROKEN = 0, // broken + /// + /// 该产品已公布但尚未安装。 + /// + INSTALLSTATE_ADVERTISED = 1, // advertised feature + /// + /// 正在移除的组件(操作状态,不可设置) + /// + INSTALLSTATE_REMOVED = 1, // component being removed (action state, not settable) + /// + /// 不同的用户安装该产品。 + /// + INSTALLSTATE_ABSENT = 2, // uninstalled (or action state absent but clients remain) + /// + /// 安装在本地驱动器上 + /// + INSTALLSTATE_LOCAL = 3, // installed on local drive + /// + /// 从源代码、CD或网络运行 + /// + INSTALLSTATE_SOURCE = 4, // run from source, CD or net + /// + /// 为当前用户安装该产品。 + /// + INSTALLSTATE_DEFAULT = 5, // use default, local or source + } + /// + /// 安装的版本,是x86还是x64,还是全部安装了 + /// + public enum InstallBit + { + /// + /// 判断32位和64位运行库是否已安装 + /// + All=0, + /// + ///判断32位运行库是否已安装 + /// + X86 = 1, + /// + /// 判断64位运行库是否已安装 + /// + X64 = 2 + } + #endregion + /// + /// 判断是否已安装VC2005运行库 + /// + /// + public static bool IsInstall_VC2005(InstallBit installBit) + { + return HaveInstallVc(installBit,new string[] { "{A49F249F-0C91-497F-86DF-B2585E8E76B7}" }, + new string[] { "{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}", "{ad8a2fa1-06e7-4b0d-927d-6e54b3d31028}" }); + } + /// + /// 判断是否已安装VC2005SP1运行库 + /// + /// + public static bool IsInstall_VC2005SP1(InstallBit installBit) + { + return HaveInstallVc(installBit, "{7299052B-02A4-4627-81F2-1818DA5D550D}", "{071C9B48-7C32-4621-A0AC-3F809523288F}"); + } + /// + /// 判断是否已安装VC2008运行库 + /// + /// + public static bool IsInstall_VC2008(InstallBit installBit) + { + return HaveInstallVc(installBit,new string[] { "{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}" }, + new string[] { "{350AA351-21FA-3270-8B7A-835434E766AD}", "{5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4}" }); + } + /// + /// 判断是否已安装VC2008SP1运行库 + /// + /// + public static bool IsInstall_VC2008SP1(InstallBit installBit) + { + return HaveInstallVc(installBit,new string[] { "{9A25302D-30C0-39D9-BD6F-21E6EC160475}", "{9BE518E6-ECC6-35A9-88E4-87755C07200F}" },new string[] { "{8220EEFE-38CD-377E-8595-13398D740ACE}" }); + } + /// + /// 判断是否已安装VC2010运行库 + /// + /// + public static bool IsInstall_VC2010(InstallBit installBit) + { + return HaveInstallVc(installBit, "{196BB40D-1578-3D01-B289-BEFC77A11A1E}", "{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}"); + } + /// + /// 判断是否已安装VC2010SP1运行库 + /// + /// + public static bool IsInstall_VC2010SP1(InstallBit installBit) + { + return HaveInstallVc(installBit, "{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}", "{1D8E6291-B0D5-35EC-8441-6616F567A0F7}"); + } + /// + /// 判断是否已安装VC2012运行库 + /// + /// + public static bool IsInstall_VC2012(InstallBit installBit) + { + return IsInstall_VC(installBit, "mfc110.dll"); + } + /// + /// 判断是否已安装VC2013运行库 + /// + /// + public static bool IsInstall_VC2013(InstallBit installBit) + { + return IsInstall_VC(installBit, "mfc120.dll"); + } + /// + /// 判断是否已安装VC2015或以上运行库 + /// + /// + public static bool IsInstall_VC2015(InstallBit installBit) + { + return IsInstall_VC(installBit, "vcruntime140.dll"); + } + /// + /// 判断是否已安装VC2017运行库或以上运行库 + /// + /// + public static bool IsInstall_VC2017(InstallBit installBit) + { + return IsInstall_VC(installBit, "vcruntime140.dll", 14.16, 27024); + } + /// + /// 判断是否已安装VC2019运行库或以上运行库 + /// + /// + public static bool IsInstall_VC2019(InstallBit installBit) + { + return IsInstall_VC(installBit, "vcruntime140.dll", 14.22, 27821); + } + /// + /// 判断是否已安装VC2022运行库或以上运行库 + /// + /// + public static bool IsInstall_VC2022(InstallBit installBit) + { + return IsInstall_VC(installBit, "vcruntime140.dll", 14.30, 30708); + } + /// + /// 判断当前系统是否安装了WebView2组件 + /// + /// + public static bool IsInstall_WebView2() + { + if (Environment.Is64BitOperatingSystem) + { + var result1 = RyRegedit.ExistKey(Microsoft.Win32.RegistryHive.LocalMachine, + Microsoft.Win32.RegistryView.Registry64, @"SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"); + var result2 = RyRegedit.ExistKey(Microsoft.Win32.RegistryHive.CurrentUser, + Microsoft.Win32.RegistryView.Registry64, @"Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"); + return result1 || result2; + } + else + { + var result1 = RyRegedit.ExistKey(Microsoft.Win32.RegistryHive.LocalMachine, + Microsoft.Win32.RegistryView.Registry32, @"SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"); + var result2 = RyRegedit.ExistKey(Microsoft.Win32.RegistryHive.CurrentUser, + Microsoft.Win32.RegistryView.Registry32, @"Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}"); + return result1 || result2; + } + } + /// + /// 判断当前系统是否安装了.NET 4.8 + /// + /// + public static bool IsInstall_NET48() + { + if (Environment.Is64BitOperatingSystem) + { + return RyRegedit.ExistKey(Microsoft.Win32.RegistryHive.LocalMachine, + Microsoft.Win32.RegistryView.Registry64, @"SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.8"); + } + else + { + return RyRegedit.ExistKey(Microsoft.Win32.RegistryHive.LocalMachine, + Microsoft.Win32.RegistryView.Default, @"SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.8"); + } + } + } +} diff --git a/Source/MyDb/SysFuns/RyRegedit.cs b/Source/MyDb/SysFuns/RyRegedit.cs index 5af3caf..0049100 100644 --- a/Source/MyDb/SysFuns/RyRegedit.cs +++ b/Source/MyDb/SysFuns/RyRegedit.cs @@ -20,6 +20,33 @@ namespace ryCommon /// public static RegistryHive RegRoot = RegistryHive.LocalMachine; /// + /// 判断注册表项是否存在 + /// + /// + /// + /// + /// + public static bool ExistKey(RegistryHive _RegRoot, RegistryView _UseSystemBit, string Path) + { + var result = false; + try + { + RegistryKey LMach = RegistryKey.OpenBaseKey(_RegRoot, _UseSystemBit); + RegistryKey softwareRun = LMach.OpenSubKey(Path, false); + if (softwareRun != null) + { + result = true; + } + softwareRun.Close(); + LMach.Close(); + return result; + } + catch + { + return result; + } + } + /// /// 设置是否开机启动 /// /// 是否开机启动 diff --git a/Source/MyDb/SysFuns/RySystem.cs b/Source/MyDb/SysFuns/RySystem.cs index 4bbce65..0bd4651 100644 --- a/Source/MyDb/SysFuns/RySystem.cs +++ b/Source/MyDb/SysFuns/RySystem.cs @@ -146,7 +146,7 @@ namespace ryCommon return retVal; } /// - /// 获取系统 + /// 获取系统名称,注意需要在app.manifest文件中设置兼容win10 /// /// public static string GetOSystemVer() @@ -168,9 +168,11 @@ namespace ryCommon case "6.3": return "Windows8.1"; case "10.0": - return "Windows10"; - case "10.1": - return "Windows11"; + if (System.Environment.OSVersion.Version.Build < 22000) + { + return "Windows10"; + } + else { return "Windows11"; } default: return "未知"; } diff --git a/Source/MyDb_MySQL/MyDb_MySQLV4.csproj b/Source/MyDb_MySQL/MyDb_MySQLV4.csproj index 5cb9956..75a79ae 100644 --- a/Source/MyDb_MySQL/MyDb_MySQLV4.csproj +++ b/Source/MyDb_MySQL/MyDb_MySQLV4.csproj @@ -9,7 +9,7 @@ Properties MyDb_MySQL MyDb_MySQL - v4.0 + v4.5.2 512 @@ -23,6 +23,7 @@ 4 AnyCPU ..\..\Bin\Debug\CommonControls\.NET4\MyDb_MySQL.xml + false none @@ -32,6 +33,7 @@ prompt 4 ..\..\Bin\Release\CommonControls\.NET4\MyDb_MySQL.xml + false diff --git a/Source/MyDb_MySQL/Properties/AssemblyInfo.cs b/Source/MyDb_MySQL/Properties/AssemblyInfo.cs index 8ae7937..f0c4788 100644 --- a/Source/MyDb_MySQL/Properties/AssemblyInfo.cs +++ b/Source/MyDb_MySQL/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.2109.1601")] -[assembly: AssemblyFileVersion("3.0.2109.1601")] \ No newline at end of file +[assembly: AssemblyVersion("3.0.2201.1101")] +[assembly: AssemblyFileVersion("3.0.2201.1101")] \ No newline at end of file diff --git a/Source/MyDb_MySQL/mySqlDataProvider.cs b/Source/MyDb_MySQL/mySqlDataProvider.cs index 9e5e237..c2a25d7 100644 --- a/Source/MyDb_MySQL/mySqlDataProvider.cs +++ b/Source/MyDb_MySQL/mySqlDataProvider.cs @@ -15,7 +15,7 @@ namespace ryCommonDb /// public class MySqlDataProvider:IDbInterface { - ClsMySQLDb myDb = new ClsMySQLDb(); + readonly ClsMySQLDb myDb = new ClsMySQLDb(); /// /// /// @@ -195,7 +195,13 @@ namespace ryCommonDb DataCommand cmd = myDb.SQL_cn.CreateCommand(); cmd.Parameters.Clear(); if (Parameter != null) - cmd.Parameters.AddRange(Parameter); + { + for (int i = 0; i < Parameter.Length; i++) + { + cmd.Parameters.Add(Parameter[i]); + } + } + //cmd.Parameters.AddRange(Parameter); cmd.CommandText = sql; DataAdapter ad = new DataAdapter(cmd); System.Data.DataSet ds=new System.Data.DataSet(); diff --git a/Source/MyDb_SQLite/MyDb_SQLiteV4.csproj b/Source/MyDb_SQLite/MyDb_SQLiteV4.csproj index 294ca39..c2aa3e6 100644 --- a/Source/MyDb_SQLite/MyDb_SQLiteV4.csproj +++ b/Source/MyDb_SQLite/MyDb_SQLiteV4.csproj @@ -23,6 +23,7 @@ 4 AnyCPU ..\..\Bin\Debug\CommonControls\.NET4\MyDb_SQLite.xml + false none @@ -34,6 +35,7 @@ AnyCPU Auto ..\..\Bin\Release\CommonControls\.NET4\MyDb_SQLite.xml + false diff --git a/Source/ryControls/Controls/PassWordText.Designer.cs b/Source/ryControls/Controls/PassWordText.Designer.cs new file mode 100644 index 0000000..9950e47 --- /dev/null +++ b/Source/ryControls/Controls/PassWordText.Designer.cs @@ -0,0 +1,82 @@ +namespace PassWordManager +{ + partial class PassWordText + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(24, 1); + this.textBox1.Name = "textBox1"; + this.textBox1.PasswordChar = '*'; + this.textBox1.Size = new System.Drawing.Size(155, 23); + this.textBox1.TabIndex = 0; + this.textBox1.Visible = false; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + this.textBox1.Leave += new System.EventHandler(this.textBox1_Leave); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(4, 4); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(14, 14); + this.label1.TabIndex = 1; + this.label1.Text = " "; + this.label1.Click += new System.EventHandler(this.label1_Click); + // + // PassWordText + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Name = "PassWordText"; + this.Size = new System.Drawing.Size(182, 25); + this.Load += new System.EventHandler(this.PassWordText_Load); + this.Click += new System.EventHandler(this.PassWordText_Click); + this.Leave += new System.EventHandler(this.PassWordText_Leave); + this.Resize += new System.EventHandler(this.PassWordText_Resize); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + } +} diff --git a/Source/ryControls/Controls/PassWordText.cs b/Source/ryControls/Controls/PassWordText.cs new file mode 100644 index 0000000..898fad5 --- /dev/null +++ b/Source/ryControls/Controls/PassWordText.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; + +namespace PassWordManager +{ + /// + /// 密码控件 + /// + public partial class PassWordText : UserControl + { + /// + /// + /// + public PassWordText() + { + InitializeComponent(); + } + private int isProUse = 0; + private string m_PassWord = ""; + /// + /// 密码 + /// + [Description("密码")] + public string PassWord + { + get { return m_PassWord; } + set + { + m_PassWord = value; + label1.Text = ""; + for (int i = 0; i < m_PassWord.Length; i++) + { + label1.Text += "*"; + } + } + } + + private void label1_Click(object sender, EventArgs e) + { + EnterEditText(); + } + + private void textBox1_Leave(object sender, EventArgs e) + { + + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + isProUse = 1; + textBox1.Visible = false; + } + else if (e.KeyCode == Keys.Enter) + { + isProUse = 1; + m_PassWord = textBox1.Text; + label1.Text = ""; + for (int i = 0; i < m_PassWord.Length; i++) + { + label1.Text += "*"; + } + textBox1.Visible = false; + } + } + + private void PassWordText_Click(object sender, EventArgs e) + { + EnterEditText(); + } + + private void PassWordText_Load(object sender, EventArgs e) + { + textBox1.Width = Width; + textBox1.Left = 0; + textBox1.Top = 0; + Height = textBox1.Height; + label1.Top = (Height - label1.Height) / 2; + } + private void EnterEditText() //进入编辑框 + { + textBox1.Clear(); + textBox1.Visible = true; + try + { + textBox1.Focus(); + } + catch { } + } + private void LeaveEditText() //离开编辑框 + { + if (textBox1.Text == "") + { + } + else + { + m_PassWord = textBox1.Text; + label1.Text = ""; + for (int i = 0; i < m_PassWord.Length; i++) + { + label1.Text += "*"; + } + } + textBox1.Visible = false; + } + private void PassWordText_Resize(object sender, EventArgs e) + { + textBox1.Width = Width; + textBox1.Left = 0; + textBox1.Top = 0; + Height = textBox1.Height; + label1.Top = (Height - label1.Height) / 2; + } + + private void PassWordText_Leave(object sender, EventArgs e) + { + if (isProUse == 0) + { + LeaveEditText(); + } + else + { + isProUse = 0; + } + } + + } +} diff --git a/Source/ryControls/Controls/PassWordText.resx b/Source/ryControls/Controls/PassWordText.resx new file mode 100644 index 0000000..c7e0d4b --- /dev/null +++ b/Source/ryControls/Controls/PassWordText.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/ryControls/Controls/ctlMyPage.cs b/Source/ryControls/Controls/ctlMyPage.cs index 8c4cdef..0bb9aaa 100644 --- a/Source/ryControls/Controls/ctlMyPage.cs +++ b/Source/ryControls/Controls/ctlMyPage.cs @@ -412,7 +412,9 @@ namespace MyPage { get { + if (m_CurrPageIndex == 0) { m_CurrPageIndex = 1; } int recordnum = m_PageSize * (m_CurrPageIndex - 1); + if (recordnum < 0) { recordnum = 0; } string sxText; if ((recordnum > 0) || (m_SQLText2 == "")) { @@ -428,6 +430,7 @@ namespace MyPage } else { + sxText = m_SQLText2.Replace("{pagecount}", m_PageCount.ToString()); sxText = sxText.Replace("{recordcount}", m_RecordCount.ToString()); sxText = sxText.Replace("{pagesize}", m_PageSize.ToString()); diff --git a/Source/ryControls/Properties/Resources.Designer.cs b/Source/ryControls/Properties/Resources.Designer.cs index 3908b51..ef01c5d 100644 --- a/Source/ryControls/Properties/Resources.Designer.cs +++ b/Source/ryControls/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace ryControls.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 { diff --git a/Source/ryControls/ryControlsV4.csproj b/Source/ryControls/ryControlsV4.csproj index 4a4f956..f3a1304 100644 --- a/Source/ryControls/ryControlsV4.csproj +++ b/Source/ryControls/ryControlsV4.csproj @@ -24,6 +24,7 @@ AnyCPU ..\..\Bin\Debug\CommonControls\.NET4\ryControls.xml true + false none @@ -34,6 +35,7 @@ 4 ..\..\Bin\Release\CommonControls\.NET4\ryControls.xml true + false true @@ -43,6 +45,7 @@ x86 prompt MinimumRecommendedRules.ruleset + false bin\x86\Release\ @@ -52,6 +55,7 @@ x86 prompt MinimumRecommendedRules.ruleset + false @@ -108,6 +112,12 @@ ContextMenuStripRichText.cs + + UserControl + + + PassWordText.cs + UserControl @@ -621,6 +631,9 @@ ctlMyPage.cs + + PassWordText.cs + ctMsgList.cs