From 7e74b16032c25a6b8e19bc077f046244f53eefcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=9E=9C=E5=BD=93=E6=97=B6?= Date: Sat, 12 Feb 2022 11:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + Bin/Debug/CarSongManage/CarSongManage.exe | Bin 0 -> 184832 bytes .../CarSongManage/CarSongManage.exe.config | 3 + Bin/Debug/CarSongManage/MyDb.dll | Bin 0 -> 481280 bytes Bin/Debug/CarSongManage/MyDb.xml | 11227 ++++++ Bin/Debug/CarSongManage/XPTable.dll | Bin 0 -> 319488 bytes Bin/Debug/CarSongManage/XPTable.xml | 14840 +++++++ Bin/Debug/CarSongManage/krc2lrc.exe | Bin 0 -> 73728 bytes Bin/Debug/CarSongManage/ryControls.dll | Bin 0 -> 1242112 bytes Bin/Debug/CarSongManage/ryControls.xml | 32820 ++++++++++++++++ Bin/混淆_Debug.nrproj | 127 + Bin/混淆_Release.nrproj | 127 + CHANGELOG.md | 4 + README.md | 14 + ...cc429cb8-cc17-40f9-a31c-ef82f0cf8a8b.vsidx | Bin 0 -> 156735 bytes .../CarSongManage/FileContentIndex/read.lock | 0 .../CarSongManage/.vs/CarSongManage/v16/.suo | Bin 0 -> 78336 bytes .../CarSongManage/v16/Server/sqlite3/db.lock | 0 .../v16/Server/sqlite3/storage.ide | Bin 0 -> 675840 bytes .../CarSongManage/.vs/CarSongManage/v17/.suo | Bin 0 -> 79360 bytes Source/CarSongManage/CarSongManage.sln | 25 + .../CarSongManage/CarSongManage.csproj | 102 + .../CarSongManage/CarSongManage.csproj.user | 6 + .../CarSongManage/FrmLrcConvert.Designer.cs | 805 + .../CarSongManage/FrmLrcConvert.cs | 911 + .../CarSongManage/FrmLrcConvert.resx | 1289 + Source/CarSongManage/CarSongManage/ImgExt.cs | 93 + Source/CarSongManage/CarSongManage/Lrc.cs | 111 + Source/CarSongManage/CarSongManage/Program.cs | 35 + .../CarSongManage/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 63 + .../CarSongManage/Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 7 + Source/CarSongManage/CarSongManage/app.config | 3 + .../CarSongManage/CarSongManage/app.manifest | 78 + .../bin/Release/CarSongManage.exe | Bin 0 -> 169984 bytes .../bin/Release/CarSongManage.exe.config | 3 + .../CarSongManage/bin/Release/MyDb.dll | Bin 0 -> 468992 bytes .../CarSongManage/bin/Release/MyDb.xml | 10623 +++++ .../CarSongManage/bin/Release/XPTable.dll | Bin 0 -> 319488 bytes .../CarSongManage/bin/Release/XPTable.xml | 14840 +++++++ .../CarSongManage/bin/Release/ryControls.dll | Bin 0 -> 1212928 bytes .../CarSongManage/bin/Release/ryControls.xml | 31913 +++++++++++++++ Source/CarSongManage/CarSongManage/music.ico | Bin 0 -> 67646 bytes 查看项目.ryp | 6 + 46 files changed, 120260 insertions(+) create mode 100644 .gitignore create mode 100644 Bin/Debug/CarSongManage/CarSongManage.exe create mode 100644 Bin/Debug/CarSongManage/CarSongManage.exe.config create mode 100644 Bin/Debug/CarSongManage/MyDb.dll create mode 100644 Bin/Debug/CarSongManage/MyDb.xml create mode 100644 Bin/Debug/CarSongManage/XPTable.dll create mode 100644 Bin/Debug/CarSongManage/XPTable.xml create mode 100644 Bin/Debug/CarSongManage/krc2lrc.exe create mode 100644 Bin/Debug/CarSongManage/ryControls.dll create mode 100644 Bin/Debug/CarSongManage/ryControls.xml create mode 100644 Bin/混淆_Debug.nrproj create mode 100644 Bin/混淆_Release.nrproj create mode 100644 CHANGELOG.md create mode 100644 README.md create mode 100644 Source/CarSongManage/.vs/CarSongManage/FileContentIndex/cc429cb8-cc17-40f9-a31c-ef82f0cf8a8b.vsidx create mode 100644 Source/CarSongManage/.vs/CarSongManage/FileContentIndex/read.lock create mode 100644 Source/CarSongManage/.vs/CarSongManage/v16/.suo create mode 100644 Source/CarSongManage/.vs/CarSongManage/v16/Server/sqlite3/db.lock create mode 100644 Source/CarSongManage/.vs/CarSongManage/v16/Server/sqlite3/storage.ide create mode 100644 Source/CarSongManage/.vs/CarSongManage/v17/.suo create mode 100644 Source/CarSongManage/CarSongManage.sln create mode 100644 Source/CarSongManage/CarSongManage/CarSongManage.csproj create mode 100644 Source/CarSongManage/CarSongManage/CarSongManage.csproj.user create mode 100644 Source/CarSongManage/CarSongManage/FrmLrcConvert.Designer.cs create mode 100644 Source/CarSongManage/CarSongManage/FrmLrcConvert.cs create mode 100644 Source/CarSongManage/CarSongManage/FrmLrcConvert.resx create mode 100644 Source/CarSongManage/CarSongManage/ImgExt.cs create mode 100644 Source/CarSongManage/CarSongManage/Lrc.cs create mode 100644 Source/CarSongManage/CarSongManage/Program.cs create mode 100644 Source/CarSongManage/CarSongManage/Properties/AssemblyInfo.cs create mode 100644 Source/CarSongManage/CarSongManage/Properties/Resources.Designer.cs create mode 100644 Source/CarSongManage/CarSongManage/Properties/Resources.resx create mode 100644 Source/CarSongManage/CarSongManage/Properties/Settings.Designer.cs create mode 100644 Source/CarSongManage/CarSongManage/Properties/Settings.settings create mode 100644 Source/CarSongManage/CarSongManage/app.config create mode 100644 Source/CarSongManage/CarSongManage/app.manifest create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/CarSongManage.exe create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/CarSongManage.exe.config create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/MyDb.dll create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/MyDb.xml create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/XPTable.dll create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/XPTable.xml create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/ryControls.dll create mode 100644 Source/CarSongManage/CarSongManage/bin/Release/ryControls.xml create mode 100644 Source/CarSongManage/CarSongManage/music.ico create mode 100644 查看项目.ryp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..758c1ca --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +Publish/ +Res/ +**/obj +*.pdb +**/dcu +*.dcu \ No newline at end of file diff --git a/Bin/Debug/CarSongManage/CarSongManage.exe b/Bin/Debug/CarSongManage/CarSongManage.exe new file mode 100644 index 0000000000000000000000000000000000000000..b861065b8e3fe5b97b7a936502efeb957adaa479 GIT binary patch literal 184832 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 MYtc6J1Cqf12MX--vH$=8 literal 0 HcmV?d00001 diff --git a/Bin/Debug/CarSongManage/CarSongManage.exe.config b/Bin/Debug/CarSongManage/CarSongManage.exe.config new file mode 100644 index 0000000..ff99501 --- /dev/null +++ b/Bin/Debug/CarSongManage/CarSongManage.exe.config @@ -0,0 +1,3 @@ + + + diff --git a/Bin/Debug/CarSongManage/MyDb.dll b/Bin/Debug/CarSongManage/MyDb.dll new file mode 100644 index 0000000000000000000000000000000000000000..0e5324deb097507d5ae59f7726d7f8889af8281a GIT binary patch literal 481280 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

oPkA~= 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 z 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 K6P}`}hUkiSyESOz1bS*}$`VcIhuXJ9^2D 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

>=4Wwxx=XDzApVY*rwrz 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 literal 0 HcmV?d00001 diff --git a/Bin/Debug/CarSongManage/MyDb.xml b/Bin/Debug/CarSongManage/MyDb.xml new file mode 100644 index 0000000..8c950df --- /dev/null +++ b/Bin/Debug/CarSongManage/MyDb.xml @@ -0,0 +1,11227 @@ + + + + MyDb + + + +

+ 基于XML实现的权限类 + + + + + 用户名 + + + + + 用户id + + + + + 密码 + + + + + 权限控制Id + + + + + 用户备注 + + + + + 是否是管理员权限 + + + + + 是否是超级管理员权限 + + + + + 设置权限 + + 权限名称 + 权限值 + 返回是否设置成功 + + + + 获取权限 + + 权限名称 + 默认权限值 + 返回权限值 + + + + 获取权限 + + 权限名称 + 返回权限值 + + + + 批量导入权限 + + 权限相关的内容 + 返回是否执行成功 + + + + 导出权限 + + 返回导出文本 + + + + 清除所有权限 + + 返回是否执行成功 + + + + 汉字转拼音静态类,包括功能全拼和缩写,方法全部是静态的 + + + + + 汉字的机内码数组 + + + + + 机内码对应的拼音数组 + + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 转换后的拼音(全拼)字符串 + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 转换后的拼音(全拼)字符串 + + + + 把汉字转换成拼音(首拼) + + 汉字字符串 + 转换后的拼音(首拼)字符串 + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 用指定字符分隔 + 转换后的拼音(全拼)字符串 + + + + 汉字转拼音缩写 + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (字符串) (小写) (空格间隔) + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (大写) + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (字符串)(大写)(空格间隔) + + 要转换的汉字字符串 + 拼音缩写 + + + + 取单个字符的拼音声母 + + 要转换的单个汉字 + 拼音声母 + + + + 取单个字符的拼音声母 + + 要转换的单个汉字 + 拼音声母 + + + + Ini操作类 + + + + + 写入Ini + + + + + + + + + + 获取Ini + + + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + + + 获取所有节点名称(Section) + + 存放节点名称的内存地址,每个节点之间用\0分隔 + 内存大小(characters) + Ini文件 + 内容的实际长度,为0表示没有内容,为nSize-2表示内存大小不够 + + + + 编码 + + + + + Ini操作类 + + + + + + 根据section取所有key和值 + + + + + + + 读取INI文件中指定INI文件中的所有节点名称(Section) + + 所有节点,没有内容返回string[0] + + + + 读取INI文件 + + 段,格式[] + 键 + 返回byte类型的section组或键值组 + + + + 根据section取所有key + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入Ini + + + + + + + + 读取Ini + + + + + + + + 读取Ini + + + + + + + + + 读取Ini + + + + + + + + + 读取Ini + + + + + + + + + + + 写入ini + + + + + + + + + 删除Ini的Key + + + + + + + 删除Ini节点 + + + + + + 控件信息 + + + + + id + + + + + 控件对象 + + + + + 控件值类型 + + + + + 默认值 + + + + + 值类型 + + + + + 默认 + + + + + 取列表顺序值 + + + + + 取当前选择的列表值 + + + + + 取对象值 + + + + + 保存的设置类型 + + + + + Ini + + + + + XML + + + + + 对象值 + + + + + 显示的文本 + + + + + 图片序号 + + + + + id + + + + + Tag值 + + + + + 显示文本值 + + + + + + 星期数据 + + + + + 一周的开始时间 + + + + + 一周的结束时间 + + + + + XML操作类 + + + + + XML操作类 + + + + + 从XML文本中加载数据 + + + + + + 从指定的XML文本中加载 + + XML文本 + 如为1,表示加载成功,为0为失败 + + + + 载入空的XML文档 + + 如为1,表示加载成功,为0为失败 + + + + 从指定的文件中加载 + + XML文件路径 + 如为1,表示加载成功,为0为失败 + + + + 保存到指定文件中 + + 文件路径 + 如为1,表示保存成功,为0为失败 + + + + 判断节点是否存在 + + 属性名 + 属性值 + 返回1,表示存在,其它表示不存在 + + + + 定位节点 + + 属性名 + 属性值 + 返回第一个符合要求的结果 + + + + 定位节点,如果找不到节点,就新建一个节点 + + 属性名 + 属性值 + 返回第一个符合要求的结果 + + + + 根据用户的节点定位节点,输入节点时,一定要注意节点是属于类内部的,否则可能出错。 + + 返回第一个符合要求的结果 + + + + 定位设置节点 + + 返回第一个符合要求的结果 + + + + 在节点后插入数据 + + + + + + + 在节点前插入数据 + + + + + + + 获取节点数量 + + 属性名 + 属性值 + 返回符合要求的结果数量 + + + + 获取节点数量 + + 返回符合要求的结果数量 + + + + 获取节点数量 + + 属性名 + 属性值 + + + + 返回符合要求的结果数量 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 读取指定节点的值(string) + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取属性值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取所有的节点名称 + + + + + + 读取指定节点的值(string) + + + + + + + + 读取指定节点的值(int) + + + + + + + + 读取指定节点的值(decimal) + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取XML文件的根元素 + + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 新增节点 + + + + + + + + 新增节点并定位到新节点 + + + + + + + + 新增设置节点并定位 + + + + + + 在指定节点前新增节点并定位到新节点 + + + + + + + + + 获取当前节点 + + + + + + 删除节点 + + + + + + 获取XML文本 + + + + + + 获取XML文本 + + + + + + 获取文本 + + + + + + 获取文本 + + + + + + 字符串操作类 + + + + + 字符串转Base64 + + + + + + + Base64转字符串 + + + + + + + 转换指定字符串为布尔类型 + + + + + 转换指定字符串为Double类型 + + + + + 已重载.计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 已重载.计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定布尔类型为Int类型,true为1,false为0 + + + + + 判断指定字符串是否是布尔类型 + + + + + 判断指定字符串是否是Double类型 + + + + + 判断指定字符串是否是Int类型 + + + + + 根据年月日转换成日期 + + + + + + + + + 追加字符 + + + + + 获取2个字符串中间的内容,point1为空表示从首位开始算,point2为空表示算到结尾。 + + + + + 判断字符串是否只包含数字或英文 + + + + + + + 判断字符串是否只包含英文 + + + + + + + 判断字符串是否只包含数字 + + + + + + + 判断字符串是否匹配,支持?*通配符 + + 待匹配的字符串 + 匹配的通配符 + + + + + 通配符替换 + + + + + + + + + 支持忽略大小写的替换功能 + + + + + 是否忽略大小写 + + + + + 获取匹配的内容 + + + + + + + + + 文件时间 + + + + + 创建时间 + + + + + 最后修改时间 + + + + + 访问时间 + + + + + 图片类型 + + + + + Bmp图片 + + + + + Jpeg图片 + + + + + Png图片 + + + + + Gif动态图片 + + + + + Tiff图片 + + + + + 对变量的拓展 + + + + + 替换文本(忽略大小写) + + + 需要替换的内容 + 替换后的内容 + + + + + 替换文本(忽略大小写),可支持通配符 + + + + + 是否是通配符表达式,不是,则普通替换,忽略大小写,是,则启用通配符替换 + + + + + 支持忽略大小写的替换文本功能 + + + + + 是否忽略大小写 + + + + + 获取符合要求的第一个结果 + + + + 是否是正则 + + + + + 查找字符串,忽略大小写 + + + + + + + + + 查找字符串,忽略大小写 + + + + + + + + 判断字符串是否是数字或英文 + + + + + + + 判断字符串是否是英文 + + + + + + + 判断字符串是否是数字(不同于IsInt,本函数是判断字符串是否只含有数字,对字符串长度没有限制) + + + + + + + 是否在指定范围内 + + + + + + + + + 是否在指定范围内 + + + + + + + + + 转换指定字符串为Int类型 + + + 最小值 + 最大值 + 如果字符串不在范围内,则使用本默认值 + + + + + 转换指定布尔类型到Int类型,true为1,false为0 + + + + + + + 将指定类型转换成整型 + + + + + + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + + + + 将数字转换成字符串,小数点末尾后面不包含0 + + + + + + + 将指定类型转换成整型 + + + + + + + 将指定类型转换成长整型,如果时间时间类型,则转换为Unix时间戳 + + + + + + + + 转换为Unix时间戳 + + + + + + + 转换为Js时间戳 + + + + + + + 转换为Unix时间戳 + + + + + + + 将指定类型转换成长整型 + + + + + + + 转换指定类型为Double类型 + + + + + + + + 转换指定类型为Double类型 + + + + + + + 转换DateTime类型到日期时间字符串 + + + + + + + 转换DateTime类型到日期字符串 + + + + + + + 转换DateTime类型到日期星期字符串 + + + + + + + 转换DateTime类型到Unix时间戳 + + + + + + + 转换Unix时间戳到DateTime类型 + + + + + + + 判断字符串是否与内容匹配 + + + + + + + + 将变量值转换成Double类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换到文件大小字符串 + + + + + + + 转换到文件大小字符串 + + + + + + + 转换指定类型为Decimal类型 + + + + + + + + 将变量值转换成Decimal类型 + + + + + + + 将变量值转换成Decimal类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换指定类型为DateTime类型 + + + + + + + + 将变量值转换成DateTime类型 + + + + + + + 转换指定类型为布尔类型 + + + + + + + 追加字符 + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + + + + 判断指定字符串是否是Int类型 + + + + + + + 判断指定字符串是否是Double类型 + + + + + + + 判断是否是布尔类型 + + + + + + + 将字符串转换为Base64类型 + + + + + + + 判断字符串是否在指定长度 + + + + + + + + + 判断能否转换成日期格式 + + + + + + + 文件信息 + + + + + 获取版本号 + + + + + 获取版本号 + + + + + + + 根据版本字符串输出double类型的版本号 + + + + + + + + 比较两个版本号大小 + + + + oldVer小于newVer,返回1,大于则返回-1,相等返回0 + + + + 比较版本号 + + + + + + old小于new,返回1,大于则返回-1,相等返回0 + + + + 判断是否是管理员方式运行 + + + + + + Hosts操作类 + + + + + 获取并转换hosts内容 + + hosts内容 + + + + + 获取hosts并转换hosts内容 + + + + + + 追加内容到hosts里 + + 要追加的内容列表,每一行为ip 域名的格式 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + write为true,追加内容到hosts里;为false,判断是否需要追加 + + 要追加的内容列表,每一行为ip 域名的格式 + 是否要写入,如果为false,则只判断是否需要追加,而不写入Hosts文件 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 追加内容到hosts里 + + 要追加的内容 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 追加内容到hosts里 + + ip地址 + 域名 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 从hosts文件里删除内容 + + 要删除的内容 + 0表示无需删除,-1表示添加失败,1表示删除成功 + + + + 从hosts文件里删除内容 + + ip地址 + 域名 + 0表示无需删除,-1表示添加失败,1表示删除成功 + + + + Host信息 + + + + + IP + + + + + 域名 + + + + + 注释 + + + + + 是否要删除 + + + + + 音频播放类 + + + + + 临时音频文件 + + + + + 父窗口句柄 + + + + + 声音标签 + + + + play synchronously (default) + + + play asynchronously + + + silence (!default) if sound not found + + + pszSound points to a memory file + + + loop the sound until next sndPlaySound + + + don’t stop any currently playing sound + + + Stop Playing Wave + + + don’t wait if the driver is busy + + + name is a registry alias + + + alias is a predefined id + + + name is file name + + + name is resource name or atom + + + + 音频播放类 + + embedded music file + 临时保存的文件位置 + 父窗口句柄 + + + + 音频播放类 + + 要播放的音频位置 + 父窗口句柄 + + + + 音频播放类 + + + 父窗口句柄 + + + + 播放音频 + + + + + + 播放音频 + + + + + 关闭音频 + + + + + 文件操作类 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 删除单个文件。 + + 删除的文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 删除单个文件。 + + 删除的文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 永久删除单个文件。 + + 永久删除的文件名 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 删除一组文件。 + + 字符串数组,表示一组文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 移动文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + + + + + 移动一个文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 + + + + 移动一组文件到指定的路径下 + + 要移动的文件名数组 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制一组文件到指定的路径 + + 要复制的文件名数组 + 复制到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 大文件多次复制文件 true:复制成功 false:复制失败 + + 原始文件路径 + 复制目标文件路径 + + + + + 复制文件夹到目标文件夹 + + 源文件夹 + 目标文件夹 + 返回移动操作是否成功的标识,成功返回0,负数表示复制失败的文件数量。1表示源文件夹不存在 + + + + 重命名一个文件为新名称,建议您使用更方便的Microsoft.VisualBasic.FileSystem.ReName();替换该方法 + + 要复制的文件名 + 复制到的目的文件名或路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 删除单个或多个文件 + + 删除的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 移动或复制一个或多个文件到指定路径下 + + 操作类型,是移动操作还是复制操作 + 要移动或复制的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 + 移动到的目的位置 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 + + + + 如果指定文件夹不存在,则创建文件夹 + + + + + + 获取一个文件的全名 + + 文件名 + 返回生成文件的完整路径名 + + + + 获取一个文件的全名 + + 文件名 + 返回生成文件的完整路径名 + + + + 解释错误代码 + + 代码号 + 返回关于错误代码的文字描述 + + + + 运行文件 + + + + + + + + /运行文件 + + + + + + + + + 运行程序 + + + + + + + 打开文件 + + + + + + + 打开文件夹并定位文件 + + + + + + + 打开网址 + + + + + + + 判断文件名是否有效 + + + + + + + 转换到有效文件名 + + + + + + + 追加日志 + + + + + + + 追加文件 + + + + + + + 读取文件内容,可以自动识别文件编码 + + + + + + + 读取文件内容,可以自动识别文件编码 + + + + + + + + 读取文件所有行,可以自动识别文件编码 + + + + + + + 读取文件所有行,可以自动识别文件编码 + + + + + + + + 写入所有文本行到文件,如果文件夹不存在,会自动创建 + + + + + + + + 写入所有文本到文件,如果文件夹不存在,会自动创建 + + + + + + + + 从文件中加载图片,使用本方法,不会导致图片文件被占用。 + + + + + + 获取文件大小 + + + + + + + 添加文件到指定文件夹,会进行自动重命名,并返回重命名后的文件名(含路径) + + 要添加的文件路径 + 要添加到的文件夹 + 是否根据时间进行重命名 + 返回是否成功执行 + 成功执行则返回路径,否则返回空 + + + + 获取文件大小字符串 + + + + + + + 获取文件大小字符串 + + + + + + + 复制内容到剪切板 + + + + + + 添加某个控件为支持拖放属性 + + + + + + + 使管理员方式运行时支持拖放 + + + + + + + 保存高质量不失真照片 + + + + + + + + 保存高质量不失真照片 + + + + + + + + 保存高质量不失真照片 + + + + + + + + 保存高质量不失真照片 + + + + + + + 保存高质量不失真照片 + + + + + + + 获取绝对路径 + + + + + + + 获取相对路径 + + + + + + + 获取图标 + + + + + + + + + + + + + + 销毁图标 + + + + + + + 获取文件图标 + + + + + + + + + + 用于取得一个文本文件的编码方式(Encoding)。 + + + + + 用于取得一个文本文件的编码方式(Encoding)。 + + + + + 取得一个文本文件的编码方式。如果无法在文件头部找到有效的前导符,Encoding.Default将被返回。 + + 文件名。 + + + + + 取得一个文本文件流的编码方式。 + + 文本文件流。 + + + + + 取得一个文本文件的编码方式。 + + 文件名。 + 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 + + + + + 取得一个文本文件流的编码方式。 + + 文本文件流。 + 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 + + + + + 通过给定的文件流,判断文件的编码类型 + + 文件流 + 文件的编码类型 + + + + 判断是否是不带 BOM 的 UTF8 格式 + + + + + + + 数据库操作扩展 + + + + + 判断DataSet是否包含数据 + + + + + + + 获取首行数据,如果没有数据,则返回null + + + + + + + 获取第一行第一列的值 + + + + + + + 获取第一张表的指定行数据 + + + 指定第几行 + + + + + 对鼠标或键盘的自动化操作 + + + + + 鼠标左键 + + + + + 鼠标中键 + + + + + 鼠标右键 + + + + + 模拟键盘按键 + + + + 按下还是抬起 + + + + 鼠标滚轮 + + + + + + + + 鼠标移动 + + + + + + + + 自定义鼠标按下或抬起 + + + + + + + + + 左键单击鼠标(支持后台单击) + + 指定要发送单击命令的句柄 + 坐标x(句柄内的坐标,非屏幕坐标) + 坐标y(句柄内的坐标,非屏幕坐标) + + + + 左键单击鼠标(支持后台单击) + + 指定要发送单击命令的句柄 + 坐标(句柄内的坐标,非屏幕坐标) + + + + 右键单击鼠标(支持后台单击) + + 指定要发送单击命令的句柄 + 坐标x(句柄内的坐标,非屏幕坐标) + 坐标y(句柄内的坐标,非屏幕坐标) + + + + 右键单击鼠标(支持后台单击) + + 指定要发送单击命令的句柄 + 坐标(句柄内的坐标,非屏幕坐标) + + + + 中键单击鼠标(支持后台单击) + + 指定要发送单击命令的句柄 + 坐标x(句柄内的坐标,非屏幕坐标) + 坐标y(句柄内的坐标,非屏幕坐标) + + + + 中键单击鼠标(支持后台单击) + + 指定要发送单击命令的句柄 + 坐标(句柄内的坐标,非屏幕坐标) + + + + 左键单击鼠标(不支持后台单击) + + 坐标x(屏幕坐标) + 坐标y(屏幕坐标) + + + + 左键单击鼠标(不支持后台单击) + + 坐标(屏幕坐标) + + + + 右键单击鼠标(不支持后台单击) + + 坐标x(屏幕坐标) + 坐标y(屏幕坐标) + + + + 右键单击鼠标(不支持后台单击) + + 坐标(屏幕坐标) + + + + 中键单击鼠标(不支持后台单击) + + 坐标x(屏幕坐标) + 坐标y(屏幕坐标) + + + + 中键单击鼠标(不支持后台单击) + + 坐标(屏幕坐标) + + + + 粘贴文本 + + + + + + 获取指定句柄的大小及位置 + + + + + + + + 设置指定句柄的大小 + + + + + + + 判断鼠标位置是不是在指定的矩形中 + + + + + + + + 判断2张图是否相似度超90 + + + + + + + + /获取2种颜色的相似度,范围为0~100 + + + + + + + + 新模态窗体 + + + + + 设置窗体返回的结果值,并关闭窗体。 + + 当前窗体 + 模态变量 + 防止 + + + + 窗体返回的结果事件 + + + + + + + 当打开的窗体返回结果时激发 + + + + + 窗体返回的状态 + + + + + 实例化类 + + 父窗体,如果为null,则取桌面为父窗体 + + + + + 获取最顶级的父窗口 + + + + + + 显示新模态窗体,会暂时禁用父窗体,关闭当前窗体后,父窗体会恢复。 + + + + + 只运行一个实例,打开后,所有窗体都依然有效。 + + + + + + 显示窗体 + + 显示的位置 + + + + 显示在父窗体中间 + + + + + 窗体显示位置 + + + + + 右上角 + + + + + 顶部中间 + + + + + 顶部右边 + + + + + 中间 + + + + + 左下角 + + + + + 底部中间 + + + + + 右下角 + + + + + 父窗体居中 + + + + + 运行库检测类 + + + + + 获取产品状态 + + + + + + + 判断是否已安装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 + + + + + + 日期时间的操作类 + + + + + 获取当前是周几,周一到周日,分别是1-7. + + + + + + + 获取当前是周几,1-7,分别是返回一到日. + + + + + + + 获取当前是周几,输入日期,根据周几,分别是返回一到日. + + + + + + + 获取一周的开始和结束,开始时间为第一天的0点,结束时间以最后一天的0点为结束时间 + + + + + + + 获取2个日期相差几周 + + + + + + + + 获取2个日期相差几个月 + + + + + + + + 获取一个月的开始 + + + + + + + 判断是否在同一个星期。 + + + + + + + + 判断是否在同一个月。 + + + + + + + + 判断是否在同一天 + + + + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + 是否显示秒 + + + + + 将秒数显示成中文表达式 + + + + + + + 计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 将c# DateTime时间格式转换为Unix时间戳格式 + + 时间 + long + + + + 时间戳转为C#格式时间 + + + + + + + 时间戳转为C#格式时间 + + + + + + + 将c# DateTime时间格式转换为js时间戳格式 + + 时间 + long + + + + JS时间戳转为C#格式时间 + + + + + + + JS时间戳转为C#格式时间 + + + + + + + 根据年月日转换成日期 + + + + + + + + + 根据日期和时间转换成日期时间 + + + + + + + + 将时间转换成当前分钟开始的时间 + + + + + + + 将时间转换成当前秒钟开始的时间 + + + + + + + 当前时间在这一天里的秒数 + + + + + + + 窗体操作类 + + + + + 设置Comobox的行间距 + + + + + + + 移除关闭按钮。返回值,非零表示成功,零表示失败。 + + 窗口的句柄 + 是否成功 + + + + 把窗体放到最前 + + + + + + 显示窗体 + + + + + + + + 设置窗体是否置顶 + + + + + + + 显示没有焦点的窗口 + + + + + + 根据句柄获取窗口文本 + + + + + + + 根据句柄获取窗口类 + + + + + + + 获取当前活动的窗口句柄 + + + + + + 设置为当前活动窗口 + + + + + + + 根据窗口句柄来获得进程id + + + + + + + 显示窗体 + + + + + + 设置窗体父窗体为桌面,不会随着显示桌面而最小化,但无法设置窗体透明度 + + + + + + 结束进程 + + + + + + + 打开窗体,只打开一个实例(非模态) + + + + + + + 将窗体植入到容器控件中 + + + 作为窗体容器的控件 + + + + + 重新调整窗体大小以适配容器大小 + + + 作为窗体容器的控件 + + + + + 设置注册表操作,部分功能需要管理员权限 + + + + + 访问的注册表位置(64位还是32位) + + + + + 访问的注册表节点 + + + + + 判断注册表项是否存在 + + + + + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + 启动命令 + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + + + + + 把指定文件设置为开机启动或取消开机启动 + + 是否开机启动 + 开机启动名称 + 要开机启动的文件路径 + + + + + 检查是否开机启动 + + 开机启动名称 + 开机启动命令 + + + + + 检查是否开机启动 + + 开机启动名称 + + + + + 判断指定文件是否是开机启动 + + 开机启动名称 + 文件路径 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + 启动命令行 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置文件关联 + + 扩展名(如.apk) + 映射的扩展名(如apkfile) + app名称(建议用英文数字) + 文件关联描述 + 文件路径 + + + + 设置文件关联 + + 映射的扩展名(如apkfile) + app名称(建议用英文数字) + 文件关联描述 + 文件路径 + + + + 在指定文件格式右键菜单中增加菜单 + + 扩展名(如.apk) + app名称(建议用英文数字) + 文件关联描述 + 文件路径 + + + + 删除文件关联 + + 映射的扩展名(如apkfile) + app名称(建议用英文数字) + + + + 获取文件关联是否存在 + + 映射的扩展名(如apkfile) + app名称(建议用英文数字) + + + + 采用的IE模式 + + + + + IE7兼容视图 + + + + + IE8 标准模式 + + + + + IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE9 标准模式 + + + + + IE9 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE10 标准模式 + + + + + IE10 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置当前软件的浏览器控件内核版本 + + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + IE内核版本 + + + + + 设置当前软件的浏览器控件内核版本 + + IE内核版本 + + + + + 系统函数 + + + + + + + + + + 红 + + + + + 绿 + + + + + 蓝 + + + + + 获取屏幕伽马值 + + + + + + + + 设置屏幕伽马值 + + + + + + + + 获取键盘和鼠标没有操作的时间 + + + + + + 设置屏幕 Gamma值 + + + + + + + + + 设置屏幕亮度 + + + + + + + 获取系统名称,注意需要在app.manifest文件中设置兼容win10 + + + + + + 窗体操作类 + + + + + 构造函数 + + + + + + 析构 + + + + + 设置让窗体支持移动 + + + + + 是否允许可调节大小 + + + + + 可调节窗体大小的宽度 + + + + + + + + + + + + + + + + + + + + + + + 开始截图 + + 是否截取鼠标指针 + + + + + + + + + + 根据XPath来获取属性值 + + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + + + + + + 根据当前节点生成HtmlDocument + + + + + + + 根据XPath来获取属性值 + + + + 属性名,为空则输出InnerText,-1则输出InnerHtml,-2则输出OuterHtml + + + + + + 根据XPath来查找节点 + + + + + + + + 在当前节点下根据xpath来查找符合的第一个节点 + + + + + + + + 在当前节点下根据xpath来查找所有符合的节点 + + + + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the stream position of the value of this attribute in the document, relative to the start of the document. + + + + + Gets the length of the value. + + + + + + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Specifies what type of quote the data should be wrapped in (internal to keep backward compatibility) + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + No quote mark + + + + + The initial value (current value) + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Gets a given attribute from the list using its name. + + + + + Adds a new attribute to the collection with the given values + + + + + + + Adds supplied item to collection + + + + + Adds a range supplied items to collection. + An IEnumerable<HtmlAttribute> of items to append to this. + + + Adds a range supplied items to collection using a dictionary. + A Dictionary<string,string> of items to append to this. + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavior tag p. + + + Default builder to use in the HtmlDocument constructor + + + Action to execute before the Parse is executed + + + + Defines the max level we would go deep into the html document + + + + The HtmlDocument Text. Careful if you modify it. + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Force to take the original comment instead of creating it + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. Default is false. + + + + + If used together with and enabled, Xml namespaces in element names are preserved. Default is false. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + Defines the global attribute value quote. When specified, it will always win. + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes. Default is false. + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + The max number of nested child nodes. + Added to prevent stackoverflow problem when a page has tens of thousands of opening html tags with no closing tags + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node (pre-HTML5) or the meta charset="XXXXX" html node (HTML5). + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + + + + + + + + + + + + + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The html is checked. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the closing tag of the node, null if the node is self-closing. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets the text between the start and end tags of the object. + + + + Gets direct inner text. + The direct inner text. + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets the stream position of the area between the opening and closing tag of the node, relative to the start of the document. + + + + + Gets the stream position of the area of the beginning of the tag, relative to the start of the document. + + + + + Gets the length of the area between the opening and closing tag of the node. + + + + + Gets the length of the entire node, opening and closing tag included. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + The depth of the node relative to the opening root html element. This value is used to determine if a document has to many nested html nodes which can cause stack overflows + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The HTML Document builder. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + Sets child nodes identifier. + The chil node. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + Gets data attribute. + The key. + The data attribute. + + + Gets the data attributes in this collection. + + An enumerator that allows foreach to be used to process the data attributes in this + collection. + + + + Gets the attributes in this collection. + + An enumerator that allows foreach to be used to process the attributes in this collection. + + + + Gets the attributes in this collection. + A variable-length parameters list containing attribute names. + + An enumerator that allows foreach to be used to process the attributes in this collection. + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, + the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + Removes all id for node described by node. + The node. + + + Move a node already associated and append it to this node instead. + The child node to move. + + + Move a children collection already associated and append it to this node instead. + The children collection already associated to move to another node. + + + Removes the children collection for this node. + The old children collection to remove. + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Sets the parent Html node and properly determines the current node's depth using the parent node's depth. + + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Fill an object and go through it's properties and fill them too. + + Type of object to want to fill. It should have atleast one property that defined XPath. + Returns an object of type T including Encapsulated data. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + + + + Fill an object and go through it's properties and fill them too. + + Type of object to want to fill. It should have atleast one property that defined XPath. + If htmlDocument includes data , leave this parameter null. Else pass your specific htmldocument. + Returns an object of type T including Encapsulated data. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + + + + Fill an object and go through it's properties and fill them too. + + Type of object to want to fill. It should have atleast one property that defined XPath. + If htmlDocument includes data , leave this parameter null. Else pass your specific htmldocument. + Returns an object of type targetType including Encapsulated data. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + Why it's thrown. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Includes tools that GetEncapsulatedData method uses them. + + + + + Determine if a type define an attribute or not , supporting both .NetStandard and .NetFramework2.0 + + Type you want to test it. + Attribute that type must have or not. + If true , The type parameter define attributeType parameter. + + + + Retrive properties of type that defined . + + Type that you want to find it's XPath-Defined properties. + IEnumerable of property infos of a type , that defined specific attribute. + + + + Determine if a has implemented BUT is considered as NONE-IEnumerable ! + + The property info you want to test. + True if property info is IEnumerable. + + + + Returns T type(first generic type) of or . + + IEnumerable-Implemented property + List of generic types. + + + + Find and Return a mehtod that defined in a class by it's name. + + Type of class include requested method. + Name of requested method as string. + Method info of requested method. + + + + Create of given type. + + Type that you want to make a List of it. + Returns IList of given type. + + + + Returns the part of value of you want as . + + A htmlNode instance. + Attribute that includes ReturnType + String that choosen from HtmlNode as result. + + + + Returns parts of values of you want as . + + that you want to retrive each value. + A instnce incules . + Type of IList generic you want. + + + + + Simulate Func method to use in Lambada Expression. + + + + + + + + + This method works like Where method in LINQ. + + + + + + + + + Check if the type can instantiated. + + + + + + + Returns count of elements stored in IEnumerable of T + + + + + + + + Specify which part of is requested. + + + + + The text between the start and end tags of the object. + + + + + The HTML between the start and end tags of the object + + + + + The object and its content in HTML + + + + + Just mark and flag classes to show they have properties that defined . + + + + + Includes XPath and . XPath for finding html tags and for specify which part of you want to return. + + + + + XPath Expression that is used to find related html node. + + + + + Html Attribute name + + + + + The methode of output + + + + + Specify Xpath to find related Html Node. + + + + + + Specify Xpath to find related Html Node. + + + Specify you want the output include html text too. + + + + Specify Xpath and Attribute to find related Html Node and its attribute value. + + + + + + + Tagging a property with this Attribute make Encapsulator to ignore that property if it causes an error. + + + + + Exception that often occures when there is no way to bind a XPath to a Html Tag. + + + + + + + + + + + + + + + + + + + + + + + Exception that often occures when there is no way to bind a XPath to a HtmlTag Attribute. + + + + + + + + + + + + + + + + + + + + + + + Exception that often occures when there is no property that assigned with XPath Property in Class. + + + + + + + + + + + + + + + + + + + + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + Gets the parent node associated to the collection. + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Add node to the collection + + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PreRequest event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets a value indicating whether to get document from the cache if exists, otherwise from the web + A value indicating whether to get document from the cache if exists, otherwise from the web + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets the MIME content type for a given path extension. + + The input path extension. + The default content type to return if any error occurs. + The path extension's MIME content type. + + + + Gets the path extension for a given MIME content type. + + The input MIME content type. + The default path extension to return if any error occurs. + The MIME content type's path extension. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The requested type. + An newly created instance. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + Gets or sets the web browser timeout. + + + + Gets or sets the web browser delay. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + An newly created instance. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + An newly created instance. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null. + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + + 给控件增加拖放功能的类 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + + + + + + + + + + + + + + + + 使管理员方式运行时支持拖放 + + + + + + 使支持拖放属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络操作类 + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + + + + + + + 远程唤醒 + + + + + + + + 远程唤醒 + + + + + + + + + 消息客户端类 + + + + + 判断当前消息主服务器是否创建成功 + + + + + 最后一次接收消息的时间,可用来判断服务端是否有响应 + + + + + 主句柄 + + + + + 当收到消息时激发 + + + + + 连接上主服务器时触发 + + + + + 收到服务端关闭通知 + + + + + 收到服务端关闭通知,即将关闭 + + + + + 服务端大小改变时激发 + + + + + 实例化客户端 + + 服务端ID + 当前客户端ID,会向服务器报告当前ID + 客户端 + + + + + + + + + 断开服务端连接 + + + + + 发送消息,采用多线程发送 + + + + + + + 向服务端发送心跳包 + + + + + 判断服务端句柄是否存在。 + + + + + + 共享内存 + + + + + 写共享内存 + + 需要映射的文件的字节数量 + 映射对象(简单类型、结构体等) + 文件映射对象的名称 + + + + + 写共享内存 + + 需要映射的文件的字节数量 + 映射对象(简单类型、结构体等) + 文件映射对象的名称 + 发送消息的窗口句柄 + 发送消息 + + + + + 读共享内存 + + + + + + + + 读共享内存 + + + + + + + + 读共享内存 + + + + + + + + + 读共享内存 + + 需要映射的文件的字节数量 + 类型 + 文件映射对象的名称 + 返回读到的映射对象 + + + + 读共享内存 + + 需要映射的文件的字节数量 + 类型 + 文件映射对象的名称 + 返回读到的映射字节数据 + + + + 消息服务器 + + + + + 消息事件 + + + + + + + 大小改变事件 + + + + + + + + 即将关闭事件 + + + + + + + 当收到消息时激发 + + + + + 消息处理类 + + + + + + + + + + + + + + + + + + + + + + + 发送消息,采用单线程发送 + + 要发送到的句柄 + 编号 + 消息内容 + + + + 发送消息,采用多线程发送 + + 要发送到的句柄 + 编号 + 消息内容 + + + + 消息类 + + + + + 是否取消 + + + + + 来源句柄 + + + + + + + + + + 消息文本 + + + + + 需要回复的内容 + + + + + 消息服务端类 + + + + + 判断当前消息主服务器是否创建成功 + + + + + 当收到消息时激发 + + + + + 当收到自定义消息时(非系统消息)激发 + + + + + 有消息客户端发起连接请求时激发 + + + + + 有消息客户端连接成功时激发 + + + + + 有消息客户端断开连接时激发 + + + + + + + 服务端ID,需要唯一性,共客户端识别 + 服务端 + + + + 释放资源 + + + + + 判断是否包含指定客户端 + + + + + + + + + + + + 设置客户端大小 + + + + + 根据客户端ID,获取客户端对象 + + + + + + + 根据客户端句柄,获取客户端对象 + + + + + + + 关闭所有客户端 + + + + + 关闭指定客户端 + + + + + + 关闭指定客户端 + + + + + + 向所有客户端发送消息,单线程 + + + + + + + 向指定客户端发送消息 + + + + + + + + 关闭在指定时间前失去响应的子客户端 + + + + + + 客户端信息 + + + + + 客户端句柄 + + + + + 客户端ID + + + + + 客户端连接时间 + + + + + 心跳时间 + + + + + 数据库引擎 + + + + + 数据库枚举类型 + + + + + Odbc引擎 + + + + + OleDb引擎 + + + + + Oracle引擎 + + + + + MSSQL引擎 + + + + + SQLite引擎 + + + + + MySql引擎 + + + + + 判断DataSet是否包含数据 + + + + + + + 获取首行数据 + + + + + + + 获取第一行第一列的值 + + + + + + + 将DataSet类型转换为RyQuickSQL列表类型 + + + + + + + 将DataSet类型转换为RyQuickSQL列表类型 + + + + + + + + 数据库操作接口 + + + + + 连接数据库 + + + + + + 断开数据库 + + + + + + 获取数量 + + + + + + + + 获取分页语句 + + + + + + + + + 获取分页语句 + + + + + + + + + 获取分页语句 + + + + + + + + + + 获取分页语句 + + + + + + + + + + 添加Parameter参数 + + + + + + + 清空Parameter参数 + + + + + + + 获取Parameter值 + + + + + + 根据RyQuickSQL类来获取Parameter值 + + + + + + + 开始执行事务 + + + + + 提交事务 + + + + + 判断是否包含数据 + + + + + + + + 返回-1000表示该数据库不支持本接口 + + + + + + + 读取数据 + + + + + + + 读取数据 + + + + + + + + 读取数据 + + + + + + + + 根据id号获取数据 + + + + + + + + 执行SQL语句 + + + + + + + + 执行SQL语句 + + + + + + + + 执行SQL语句 + + + 只针对IsAdd为false才生效,where 以后的sql语句 + 是新增还是更新 + + + + + 插入数据库 + + + + + + + 更新数据库 + + + where 以后的sql语句 + + + + + 执行SQL语句 + + + + + + + 根据id号删除数据 + + + + + + + + 创建数据库 + + + + + + + 释放资源 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 连接数据库 + + 数据库连接字符串 + + + + + 连接数据库 + + 数据源 + 数据库名称 + 用户id + 用户密码 + + + + + + + + + 连接数据库 + + + + + + 关闭数据库 + + + + + + 运行SQL命令 + + SQL语句 + SQL命令参数 + 运行失败,则返回-1,否则返回影响的行数 + + + + 运行SQL命令 + + SQL语句 + 运行失败,则返回-1,否则返回影响的行数 + + + + 运行SQL命令,并返回结果 + + SQL语句 + SQL命令参数 + 运行失败,则返回null,否则返回以数组显示的字符串 + + + + 运行SQL命令,并返回结果 + + SQL语句 + SQL命令参数 + 数组第一个默认的值 + 运行失败,则返回null,否则返回以数组显示的字符串 + + + + 运行SQL命令,并返回结果 + + SQL语句 + 运行失败,则返回null,否则返回以数组显示的字符串 + + + + 运行SQL命令,并返回结果 + + SQL语句 + 数组第一个默认的值 + 运行失败,则返回DefFristValue,否则返回以数组显示的字符串 + + + + 清空指定表的所有数据 + + 表名 + 运行失败,则返回-1,否则返回影响的行数 + + + + 判断指定值是否存在 + + 表名 + 指定值所属字段 + 指定值 + 当前id,如果是新增记录,请填写-1 + + + + + 判断SQL语句是否有结果返回 + + SQL语句 + SQL命令参数 + 运行失败,则返回-1;存在结果,返回1;不存在结果,返回0 + + + + 判断SQL语句是否有结果返回 + + SQL语句 + 运行失败,则返回-1;存在结果,返回1;不存在结果,返回0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 执行SQL语句 + + + 只针对IsAdd为false才生效,where 以后的sql语句 + 是新增还是更新 + + + + + 插入数据库 + + + + + + + 更新数据库 + + + where 以后的sql语句 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SQL字段类型 + + + + + SQL字段类型 + + + + + + + SQL字段类型 + + + + + + + + SQL字段名 + + + + + SQL字段值 + + + + + SQL字段长度 + + + + + 不是真的值,而是用于计算的值 + + + + + SQL快速操作类 + + + + + SQL快速操作类 + + + + + + 表名 + + + + + 操作字段列表 + + + + + 清理使用资源 + + + + + 清理使用资源 + + + + + 清理使用资源 + + + + + 操作参数列表 + + + + + 操作参数列表 + + + + + 添加字符串字段 + + + + + + + 添加null值字段 + + + + + + 添加日期字段 + + + + + + + 添加int字段 + + + + + + + 添加double字段 + + + + + + + 添加decimal字段 + + + + + + + 添加byte[]字段 + + + + + + + 添加bool字段 + + + + + + + 添加用于计算的值 + + + + + + + 添加Int64字段 + + + + + + + 清空内容 + + + + + 数量 + + + + + + + + + + 输出多条件搜索。 + + 字段名,多个字段请用逗号分隔。 + 多个条件之间请用空格隔开 + + + + + 获取插入SQL语句 + + + + + + 获取更新SQL语句 + + + + + + 添加参数 + + + + + + + 获取Ole参数 + + + + + + 获取SQL参数 + + + + + + 一个强类型的资源类,用于查找本地化的字符串等。 + + + + + 返回此类使用的缓存的 ResourceManager 实例。 + + + + + 重写当前线程的 CurrentUICulture 属性,对 + 使用此强类型资源类的所有资源查找执行重写。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + Win32 API + + + + + + + + + + WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。 + + + + + 系统通道ID + + + + + 用户通道ID + + + + + 获取消息 + + + + + + + + 发送消息 + + + + + + + + + + 设置父窗口 + + + + + + + + + Http连接操作帮助类 + + + + + + + + + + + + 根据相传入的数据,得到相应页面数据 + + 参数类对象 + 返回HttpResult类型 + + + + 获取数据的并解析的方法 + + + + + + + 设置编码 + + HttpItem + HttpResult + byte[] + + + + 提取网页Byte + + + + + + 为请求准备参数 + + 参数列表 + + + + 设置证书 + + + + + + 设置多个证书 + + + + + + 设置Cookie + + Http参数 + + + + 设置Post数据 + + Http参数 + + + + 设置代理 + + 参数对象 + + + + 回调验证证书问题 + + 流对象 + 证书 + X509Chain + SslPolicyErrors + bool + + + + 通过设置这个属性,可以在发出连接的时候绑定客户端发出连接所使用的IP地址。 + + + + + + + + + Http请求参考类 + + + + + 请求URL必须填写 + + + + + 请求方式默认为GET方式,当为POST方式时必须设置Postdata的值 + + + + + 默认请求超时时间 + + + + + 默认写入Post数据超时间 + + + + + 设置Host的标头信息 + + + + + 获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接默认为true。 + + + + + 请求标头值 默认为text/html, application/xhtml+xml, */* + + + + + 请求返回类型默认 text/html + + + + + 客户端访问信息默认Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) + + + + + 返回数据编码默认为NUll,可以自动识别,一般为utf-8,gbk,gb2312 + + + + + Post的数据类型 + + + + + Post请求时要发送的字符串Post数据 + + + + + Post请求时要发送的Byte类型的Post数据 + + + + + Cookie对象集合 + + + + + 请求时的Cookie + + + + + 来源地址,上次访问地址 + + + + + 证书绝对路径 + + + + + 设置代理对象,不想使用IE默认配置就设置为Null,而且不要设置ProxyIp + + + + + 是否设置为全文小写,默认为不转化 + + + + + 支持跳转页面,查询结果将是跳转后的页面,默认是不跳转 + + + + + 最大连接数 + + + + + 代理Proxy 服务器用户名 + + + + + 代理 服务器密码 + + + + + 代理 服务IP,如果要使用IE代理就设置为ieproxy + + + + + 设置返回类型String和Byte + + + + + header对象 + + + + + 获取或设置用于请求的 HTTP 版本。返回结果:用于请求的 HTTP 版本。默认为 System.Net.HttpVersion.Version11。 + + + + + 获取或设置一个 System.Boolean 值,该值确定是否使用 100-Continue 行为。如果 POST 请求需要 100-Continue 响应,则为 true;否则为 false。默认值为 true。 + + + + + 设置509证书集合 + + + + + 设置或获取Post参数编码,默认的为Default编码 + + + + + Cookie返回类型,默认的是只返回字符串类型 + + + + + 获取或设置请求的身份验证信息。 + + + + + 设置请求将跟随的重定向的最大数目 + + + + + 获取和设置IfModifiedSince,默认为当前日期和时间 + + + + + 设置本地的出口ip和端口 + ] + + item.IPEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1"),80); + + + + + Http返回参数类 + + + + + Http请求返回的Cookie + + + + + Cookie对象集合 + + + + + 返回的String类型数据 只有ResultType.String时才返回数据,其它情况为空 + + + + + 返回的Byte数组 只有ResultType.Byte时才返回数据,其它情况为空 + + + + + header对象 + + + + + 返回状态说明 + + + + + 返回状态码,默认为OK + + + + + 最后访问的URl + + + + + 获取重定向的URl + + + + + 返回类型 + + + + + 表示只返回字符串 只有Html有数据 + + + + + 表示返回字符串和字节流 ResultByte和Html都有数据返回 + + + + + Post的数据格式默认为string + + + + + 字符串类型,这时编码Encoding可不设置 + + + + + Byte类型,需要设置PostdataByte参数的值编码Encoding可设置为空 + + + + + 传文件,Postdata必须设置为文件的绝对路径,必须设置Encoding的值 + + + + + Cookie返回类型 + + + + + 只返回字符串类型的Cookie + + + + + CookieCollection格式的Cookie集合同时也返回String类型的cookie + + + + + + + + + + + + + + + + + 超时时间 + + + + 以post方式获取网页源码 + + + + + + + + + 以post方式提交json内容 + + + + + + + + + 以post方式提交json内容 + + + + + + + + 以post方式获取网页源码 + + + + + + + + + + 以post方式获取网页源码 + + + + + + + + 获取网址对应的文件大小 + + + + + + + 获取网址对应的文件大小 + + + + + + + + 代理 + + + + + + + + + + 获取网页源码 + + + + + + + + 获取网页源码 + + + + + + + + + 获取网页源码 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 将相对网址转换成绝对网址 + + 相对网址 + 当前页面地址 + 转换后的绝对网址 + + + + + + + + + + + + + + url解密 + + + + + + + + url解密,按UTF8方式解密 + + + + + + + Url加密 + + + + + + + + Url加密,按UTF8方式加密 + + + + + + + 解密 + + + + + + + 加密 + + + + + + + + + + + + + + + + + + + + + + + + + url加密,Unicode + + + + + + + + + + + + + + + + + + + + + + Html解码,将html里未转义成功的重新转义。 + + + + + + + AES加密解密类 + + + + + AES加密算法 + + 明文字符串 + 密钥 + 返回加密后的密文字节数组 + + + + AES解密 + + 密文字节数组 + 密钥 + 返回解密后的字符串 + + + + 加密 + + + + + + + + 解码 + + + + + + + + 转换密钥到合法密钥 + + + + + + + Base64编码类 + + + + + 编码 + + + + + + + 把字符串编码成Base64字符串 + + + + + + + + 解码 + + + + + + + MD5和SHA1操作类 + + + + + 计算文件MD5。 + 通过MD5CryptoServiceProvider类中的ComputeHash方法直接传入一个FileStream类实现计算MD5 + 操作简单,代码少,调用即可 + + 文件地址 + MD5Hash + + + + 计算文件MD5。 + 通过HashAlgorithm的TransformBlock方法对流进行叠加运算获得MD5 + 实现稍微复杂,但可使用与传输文件或接收文件时同步计算MD5值 + 可自定义缓冲区大小,计算速度较快 + + 文件地址 + MD5Hash + + + + 获取MD5 + + + + + + + 获取MD5 + + + + + + + 获取SHA1 + + + + + + + 获取SHA1 + + + + + + + 获取HmacSHA1 + + + + + + + + 获取SHA256 + + + + + + + 获取HmacSHA256 + + + + + + + + 获取SHA224 + + + + + + + 获取SHA512 + + + + + + + 获取HmacSHA512 + + + + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + + + + 利用IDisposable的using语法糖方便的释放锁定操作 + 内部类 + + + + 读写锁对象 + + + + 是否为写入模式 + + + + 利用IDisposable的using语法糖方便的释放锁定操作 + 构造函数 + + 读写锁 + 写入模式为true,读取模式为false + + + 释放对象时退出指定锁定模式 + + + + 空的可释放对象,免去了调用时需要判断是否为null的问题 + 内部类 + + + + 空的可释放对象 + + + + 空的释放方法 + + + + 读写锁 + + + + 保存数据 + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + 构造函数 + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + 构造函数 + 为Data属性设置初始值 + + + + 获取或设置当前对象中保存数据的值 + + 获取数据时未进入读取或写入锁定模式 + 设置数据时未进入写入锁定模式 + + + 是否启用,当该值为false时,Read()和Write()方法将返回 Disposable.Empty + + + + 进入读取锁定模式,该模式下允许多个读操作同时进行 + 退出读锁请将返回对象释放,建议使用using语块 + Enabled为false时,返回Disposable.Empty; + 在读取或写入锁定模式下重复执行,返回Disposable.Empty; + + + + 进入写入锁定模式,该模式下只允许同时执行一个读操作 + 退出读锁请将返回对象释放,建议使用using语块 + Enabled为false时,返回Disposable.Empty; + 在写入锁定模式下重复执行,返回Disposable.Empty; + + 读取模式下不能进入写入锁定状态 + + + + 中国农历类,最大支持公元0-9999年 + + 日期:2019-02-09 + 作者:http://www.cnblogs.com/zjfree/ + + + + 日历类型 + + + + + 无效 + + + + + Julian 日历 + + + + + Gregorian 日历 + + + + + 有效 + + + + + 公历节日 + + + + + 农历节日 + + + + + 某个月第n个星期几 + + + + + 获取农历 + + + + + + + 获取农历 + + + + + + + + + 获得某农历年的闰月,返回 1~12 对应一月到十二月,返回 0 表示无闰月 + + + + + + + 农历搜索方向 + + + + + 无效 + + + + + 向上 + + + + + 向下 + + + + + {* 日月食类型, 无, 日食, 月全食, 月偏食 } + + + + + 无 + + + + + 日食 + + + + + 月全食 + + + + + 月偏食 + + + + + {* 月相, 无, 朔, 望} + + + + + 无 + + + + + 朔 + + + + + 望 + + + + + 获得某公历年月日的农历日数和该日月相以及日月食类型和时刻 + + + + + + + + + + + + 获得某公历年月日的农历月数 + + + + + + + + + 获取阳历日期对应的农历日期 + + + + + + + + + + + + + 获得某公历年月日的农历月日和是否闰月的信息 + + + + + + + + + + + + 获得等效标准日数对应的某公历日,倒推而来 + + + + + + + + + + 比较两个农历日期(包括闰月信息),1 大于2返回1、1等于2返回0、1小于2返回-1 + + + + + + + + + + + + + + 获得某农历年月日(加是否闰月)的公历年月日 + 该函数采用反向二分法查找 + + + + + + + + + + + + + 获取农历某一个月的总天数 + + + + + + + + + 获取农历年份,范围约1901-2101年 + + + + + + + 获取农历年份,范围约0-9999年 + + + + + + + + + 获取农历月份,范围约1901-2101年 + + + + + + + 获取农历月份,范围约0-9999年 + + + + + + + + + 获取中文表示的农历月份 + + + + + + + 获取农历日,范围约1901-2101年 + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + 获取节气,范围约1901-2101年 + + + + + + + 获取节气,范围约0-9999年 + + + + + + + + + 返回y年第n个节气(如小寒为1)的日差天数值(pd取值真假,分别表示平气和定气) + + + + pd取值真假,分别表示平气和定气 + + + + + 获取等效标准日数 + + + + + + + + + 取本月天数,不考虑 1582 年 10 月的特殊情况 + + + + + + + + 获取节气,范围约1901-2101年 + + + + + + + 获取节气,范围约0-9999年 + + + + + + + + + 获取节气 + + + + + + + + + + + + 获取公历节日 + + + + + + + 获取公历节日 + + + + + + + + + 获取指定月份的第n个星期几的节日 + + + + + + + 返回星座,范围约1901-2101年 + + + + + 返回星座,范围约0-9999年 + + + + + 获取农历节日 + + + + + + + + + 获取农历节日 + + + + + + + 判断y年m月(1,2,..,12,下同)d日是Gregorian历还是Julian历(opt=1,2,3分别表示标准日历,Gregorge历和Julian历),是则返回1,是Julian历则返回0,若是Gregorge历所删去的那10天则返回-1 + + + + + 返回阳历y年m月d日的日差天数(在y年年内所走过的天数,如2000年3月1日为61) + + + + + 返回阳历y年日差天数为x时所对应的月日数(如y=2000,x=274时,返回1001(表示10月1日,即返回100*m+d)) + + + + + 获取指定日期的节气。 + + 要获取的年 + 要获取的月 + + + 立春:立是开始的意思,春是蠢动,表示万物开始有生气,这一天春天开始。 + 雨水:降雨开始,雨水将多。 + 惊蛰:春雷响动,惊动蛰伏地下冬眠的生物,它们将开始出土活动。 + 春分:这是春季九十天的中分点,这一天昼夜相等,所以古代曾称春分秋分为昼夜分。 + 清明:明洁晴朗,气候温暖,草木开始萌发繁茂。 + 谷雨:雨生百谷的意思。雨水增多,适时的降雨对谷物生长很为有利。 + 立夏:夏天开始,万物渐将随温暖的气候而生长。 + 小满:满指籽粒饱满,麦类等夏热作物这时开始结籽灌浆,即将饱满。 + 芒种:有芒作物开始成熟,此时也是秋季作物播种的最繁忙时节。 + 夏至:白天最长,黑夜最短,这一天中午太阳位置最高,日影短至终极,古代又称这一天为日北至或长日至。 + 小暑:暑是炎热,此时还未到达最热。 + 大暑:炎热的程度到达高峰。 + 立秋:秋天开始,植物快成熟了。 + 处暑:处是住的意思,表示暑气到此为止。 + 白露:地面水气凝结为露,色白,是天气开始转凉了。 + 秋分:秋季九十天的中间,这一天昼夜相等,同春分一样,太阳从正东升起正西落下。 + 寒露:水露先白而后寒,是气候将逐渐转冷的意思。 + 霜降:水气开始凝结成霜。 + 立冬:冬是终了,作物收割后要收藏起来的意思,这一天起冬天开始。 + 小雪:开始降雪,但还不多。 + 大雪:雪量由小增大。 + 冬至:这一天中午太阳在天空中位置最低,日影最长,白天最短, 黑夜最长,古代又称短日至或日南至。 + 小寒:冷气积久而为寒,此时尚未冷到顶点。 + 大寒:天候达到最寒冷的程度 + + + + + 获取年柱。 + + + + + 获得月柱 + + + + + + + 获取日柱。 + + + + + 返回甲子数x对应的天干数(如33为3) + + + + + 返回甲子数x对应的地支数(如33为9) + + + + + 获取日的天干地支 + + + + + + + 返回甲子数x对应的天干字符串 + + + + + 返回甲子数x对应的地支字符串 + + + + + 返回甲子数x对应的干支字符串 + + + + + + + 获取三伏开始时间 + + + 0表示1伏,1表示2伏,2表示3伏 + + + + + 节气 + + + + + 节气的时间。 + + + + + 节气名。 + + + + + 热键转换类 + + + + + 功能键。 + + + + + 修改键。 + + + + + 转换功能键到谷歌浏览器专用 + + + + + 将chrome功能键转换为普通功能键 + + + + + + + 按键值。 + + + + + 初始化类 的新实例。 + + The modifiers. + The key code. + + + + + + + + + + + + + + + + + 初始化类 的新实例。 + + + + + 加载热键 + + + + + + + 加载热键 + + + + + + 加载热键 + + + + + + 判断是否是热键 + + + + + 获取当前热键 + + + + + 已重载,返回“Ctrl+Alt+A”格式的字符串。 + + 类似“Ctrl+Alt+A”格式的字符串 + + + + 返回“Ctrl+Alt+A”格式的字符串。 + + 类似“Ctrl+Alt+A”格式的字符串 + + + + 功能键 + + + + + 无 + + + + + Alt键 + + + + + Ctrl键 + + + + + Alt+Ctrl键 + + + + + Shift键 + + + + + Shift+Alt键 + + + + + Shift+Ctrl键 + + + + + Alt+Shift+Ctrl键 + + + + + Win键 + + + + + 热键类 + + + + + 热键类 + + + + + + 热键注销 + + + + + 热键是否有效 + + + + + 释放热键 + + + + + 获取热键Tag + + + + + + + 获取热键id + + + + + + + 获取热键id + + + + + + + + 判断热键id是否存在 + + + + + + + 判断热键Tag是否存在 + + + + + + + 判断热键是否存在 + + + + + + + + 注册热键 + + + + + + + + + 注册热键 + + + + + + + + + 注册热键 + + + + + + + + + + 获取热键数量 + + + + + 删除热键 + + + + + + + 删除所有热键 + + + + + 删除所有热键 + + + + + 热键事件 + + + + + + 当使用热键时发生的事件 + + + + + 热键消息过滤 + + + + + + + 热键类型 + + + + + 热键id + + + + + 热键Tag + + + + + 功能键 + + + + + 普通键 + + + + + 热键类型 + + + + + + + + 热键类型 + + + + + + + + + 热键类型 + + + + + + + + + + 结束进程 + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就失效了。 + + + + + + + 选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。 + + + + + + + + 创建一个与指定设备兼容的内存设备上下文环境(DC)。 + + + + + + + 为一个设备创建设备上下文环境。 + + + + + + + + + + 删除指定的设备上下文环境(Dc)。 + + + + + + + + + + + + 模拟鼠标点击 + + + + + + + + + + + 模拟按键 + + + + + + + + + 返回hWnd参数所指定的窗口的设备环境。 + + + + + + + 移动窗口 + + + + + + + + + + + + 将消息信息传送给指定的窗口过程的函数。使用函数CallWindowsProc可进行窗口子分类。 + 通常来说,同一类的所有窗口共享一个窗口过程。子类是一个窗口或者相同类的一套窗口, + 在其消息被传送到该类的窗口过程之前,这些消息是由另一个窗口过程进行解释和处理的。 + + + + + + + + + + + 用来改变指定窗口的属性.函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。 + + + + + + + + + 用来改变指定窗口的属性.函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。 + + + + + + + + + 设置弹出式窗口,层叠窗口或子窗口的父窗口 + + + + + + + + 获得一个指定子窗口的父窗口句柄 + + Handle to the window whose parent window handle is to be retrieved. + If the window is a child window, the return value is a handle to the parent window. If the window is a top-level window, the return value is a handle to the owner window. If the window is a top-level unowned window or if the function fails, the return value is NULL. + + + + 获取系统菜单的句柄 + + 拥有窗口菜单拷贝的窗口的句柄 + 标志位,指定将执行的操作 + + + + + 获取系统菜单的句柄 + + 拥有窗口菜单拷贝的窗口的句柄 + 标志位,指定将执行的操作。 + 如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。该拷贝初始时与窗口菜单相同,但可以被修改。 + 如果此参数为TRUE,GetSystemMenu重置窗口菜单到缺省状态。如果存在先前的窗口菜单,将被销毁。 + + 如果参数bRevert为FALSE,返回值是窗口菜单的拷贝的句柄:如果参数bRevert为TRUE,返回值是NULL。 + + + + 从指定菜单删除一个菜单项或分离一个子菜单。 + 备注:只要一个菜单被修改,无论它是否在显示窗口里,应用程序都必须调用函数DrawMenuBar。 + + 将被修改的菜单的句柄。 + 指定将被删除的菜单项,其含义由参数wFlags决定。 + + 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。 + + + + 设置前台窗口 + + + + + + + 获取当前前台窗口句柄 + + + + + + 获得当前活动窗体 + + 活动窗口的句柄。如没有窗口处于活动状态或处于活动状态的窗口非当前线程创建,则返回零。 + + + + 设置活动窗体 + + + + + + + 获取类名 + + + + + + + + + 获取当前线程对应的进程ID + + + + + + + + 判断指定句柄是否是一个窗口 + + + + + + + 获取窗口标题 + + + + + + + + + 发送消息 + + + + + + + + + + 发送消息 + + + + + + + + + + 发送消息 + + + + + + + + + + 发送消息 + + + + + + + + + + 发送消息 + + + + + + + + + 从文件中载入指针 + + + + + + + 判断窗口是否可见 + + + + + + + 查找窗口 + + + + + + + + The FindWindowEx function retrieves a handle to a window whose class name and window name match the specified strings. The function searches child windows, beginning with the one following the specified child window. + + Handle to the parent window whose child windows are to be searched. + Handle to a child window. + Specifies class name. + Pointer to a null-terminated string that specifies the window name (the window's title). + If the function succeeds, the return value is a handle to the window that has the specified class and window names.If the function fails, the return value is NULL. + + + + The InvalidateRect function adds a rectangle to the specified window's update region. + + Handle to window. + Rectangle coordinates. + Erase state. + If the function succeeds, the return value is true.If the function fails, the return value is false. + + + + The ValidateRect function validates the client area within a rectangle by removing the rectangle from the update region of the specified window. + + Handle to window. + Validation rectangle coordinates. + If the function succeeds, the return value is true.If the function fails, the return value is false. + + + + 获取指定窗口的有关信息,也可用于获取窗口内存中指定偏移的32位度整型值。 + + + + + + + + 检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。 + + + + + + + 释放设备上下文环境(DC)供其他应用程序使用。函数的效果与设备上下文环境类型有关。它只释放公用的和设备上下文环境,对于类或私有的则无效。 + + + + + + + + 获取桌面句柄 + + + + + + 获取窗口客户区的大小。注意一下:窗口的客户区为窗口中除标题栏、菜单栏之外的地方。 + + + + + + + + 返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。 + + + + + + + + 更新一个分层窗口的位置,大小,形状,内容和半透明度 + + + + + + + + + + + + + + + 改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。 + 子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。 + + A handle to the window. + A handle to the window to precede the positioned window in the Z order. This parameter must be a window handle or one of the following values. + Specifies the new position of the left side of the window, in client coordinates. + Specifies the new position of the top of the window, in client coordinates. + Specifies the new width of the window, in pixels. + Specifies the new height of the window, in pixels. + Specifies the window sizing and positioning flags. This parameter can be a combination of the following values. + If the function succeeds, the return value is nonzero, if the function fails, the return value is zero. + + + + 改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。 + 子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。 + + + + + + + + + + + + + 设置指针位置 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 获取或设置是否捕获鼠标 + + + + + 获取或设置是否显示图像信息 + + + + + 获取或设置操作框点的颜色 + + + + + 获取或设置操作框边框颜色 + + + + + 获取或设置放大图形的原始尺寸 + + + + + 获取或设置放大图像的倍数 + + + + + + + + + + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + + + + + + 获取或设置用于被操作的图像 + + + + + 获取或设置操作框点的颜色 + + + + + 获取或设置操作框线条的颜色 + + + + + 获取当前选中的区域 + + + + + 获取或设置放大图像的原图大小尺寸 + + + + + 获取或设置图像放大的倍数 + + + + + 获取或设置是否绘制操作框点 + + + + + 获取或设置是否限制鼠标操作区域 + + + + + 获取或设置是否绘制信息展示 + + + + + 获取或设置是否根据图像大小自动调整控件尺寸 + + + + + 获取当前是否绘制的有区域 + + + + + 获取当前是否开始绘制 + + + + + 获取当前操作框是否正在移动 + + + + + 获取或设置操作框是否锁定 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 响应四个按键实现精确移动 + + + + + + + + + + + + 绘制操作框 + + + + + + 绘制图像放大信息 + + + + + + 清空所有操作 + + + + + 手动设置一个块选中区域 + + 要选中区域 + + + + 手动设置一个块选中区域 + + 要选中区域的坐标 + 要选中区域的大小 + + + + 手动设置一个块选中区域 + + 要选中区域的x坐标 + 要选中区域的y坐标 + 要选中区域的宽度 + 要选中区域的高度 + + + + 手动设置信息显示的位置 + + 要显示的位置 + + + + 手动设置信息显示的位置 + + 要显示位置的x坐标 + 要显示位置的y坐标 + + + + 获取操作框内的图像 + + 结果图像 + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 鼠标结构信息 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 设置Hook + + + + + + 卸载Hook + + + + + + 鼠标状态枚举值 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 事件参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Bin/Debug/CarSongManage/XPTable.dll b/Bin/Debug/CarSongManage/XPTable.dll new file mode 100644 index 0000000000000000000000000000000000000000..4ac2f2ecdbc4f3d1ac7ab72ea8f5e22892ed7a56 GIT binary patch literal 319488 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

**$cvYvTp4c}jflrPuNN20*@)=3!~~;> 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ⅇ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�_?guh0$-9)f2vzM}yA6^erc&G)!x zdU}+bQ?RIhlg}&<>NkH!T%vwc^`Yo9S-Ag{epC8Q={FyNeiJj{hNNVpfoH^1)QbSHT}`n?{i@#VjG4x7rZ9x6N9*vC0B0d=;gAs?n}w!YVy{lj@Z55ui2NnddKmP&bq2^eD&7Vj5{^!F4k>+`?`DO z(aTZa#7mF2m))*?t}pHDeTBBNRXHzwdGnpE=})|0RcqhkI`Oafi zJ0dGR<{zq~RgYykzxdJfR5+tNxAMw*EH5DP4WBy5ArCm8fv5hPM)F@X;>9SI{gI#k zaJ7a*dDl0%t8e|e8UKZ0o#HlY=;!lTd=>chf?!V!Z^cVMA2hGZQdj zY`0PxCXARnvqBO1p2S_2vQq-TO!(|l`IuttG0`{R8=Td>QmfXl1n#dlo0Xxq!`bgA4g)04=HX{Jk&e + + + XPTable + + + +

+ Base class for Cell editors + + + + + Occurs when the CellEditor begins editing a Cell + + + + + Occurs when the CellEditor stops editing a Cell + + + + + Occurs when the editing of a Cell is cancelled + + + + + The Control that is performing the editing + + + + + The Cell that is being edited + + + + + The Table that contains the Cell being edited + + + + + A CellPos that represents the position of the Cell being edited + + + + + The Rectangle that represents the Cells location and size + + + + + A MouseMessageFilter that receives mouse messages before they + are dispatched to their destination + + + + + A KeyMessageFilter that receives key messages before they + are dispatched to their destination + + + + + Initializes a new instance of the CellEditor class with default settings + + + + + Prepares the CellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Displays the editor to the user and adds it to the Table's Control + collection + + + + + Conceals the editor from the user, but does not remove it from the + Table's Control collection + + + + + Conceals the editor from the user and removes it from the Table's + Control collection + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Filters out a mouse message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Filters out a key message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Gets or sets the Control that is being used to edit the Cell + + + + + Gets the Cell that is being edited + + + + + Gets the Table that contains the Cell being edited + + + + + Gets a CellPos that represents the position of the Cell being edited + + + + + Gets whether the CellEditor is currently editing a Cell + + + + + Raises the BeginEdit event + + A CellEditEventArgs that contains the event data + + + + Raises the EndEdit event + + A CellEditEventArgs that contains the event data + + + + Raises the CancelEdit event + + A CellEditEventArgs that contains the event data + + + + A class for editing Cells that contain Colors + + + + + Occurs when the SelectedIndex property has changed + + + + + A ColorPicker control similar to the ColorPicker found in the + VS.NET property window + + + + + Custom color dialog + + + + + Initializes a new instance of the ColorCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Converts the specified Color to its string representation + + The Color to convert + A string that represents the specified Color + + + + Gets whether the editor should stop editing if a mouse click occurs + outside of the DropDownContainer while it is dropped down + + The Control that will receive the message + The current position of the mouse cursor + true if the editor should stop editing, false otherwise + + + + Gets or sets a value specifying the style of the drop down editor + + + + + Gets or sets the custom color dialog + + + + + Raises the SelectedColorChanged event + + An EventArgs that contains the event data + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ColorPicker.SelectedColorChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + A ColorPicker control similar to the ColorPicker found in the + VS.NET property window + + + + + Occurs when the value of the ColorPicker's SelectedColor property changes + + + + + Required designer variable. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the ColorPicker class with default settings + + + + + Clean up any resources being used. + + + + + + + + + + + + + + + + + + + + + + Gets or sets the currently selected Color + + + + + + + + + + + + + + + Gets the default size of the control + + + + + Raises the SelectedColorChanged event + + An EventArgs that contains the event data + + + + Raises the FontChanged event + + An EventArgs that contains the event data + + + + Raises the GotFocus event + + An EventArgs that contains the event data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for frmColorPicker. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for ctrl2DColorBox. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + The drawstyle of the contol (Hue, Saturation, Brightness, Red, Green or Blue) + + + + + The HSL color of the control, changing the HSL will automatically change the RGB color for the control. + + + + + The RGB color of the control, changing the RGB will automatically change the HSL color for the control. + + + + + Redraws only the content over the marker + + + + + Draws the marker (circle) inside the box + + + + + + + + Draws the border around the control. + + + + + Evaluates the DrawStyle of the control and calls the appropriate + drawing function for content + + + + + Draws the content of the control filling in all color values with the provided Hue value. + + + + + Draws the content of the control filling in all color values with the provided Saturation value. + + + + + Draws the content of the control filling in all color values with the provided Luminance or Brightness value. + + + + + Draws the content of the control filling in all color values with the provided Red value. + + + + + Draws the content of the control filling in all color values with the provided Green value. + + + + + Draws the content of the control filling in all color values with the provided Blue value. + + + + + Calls all the functions neccessary to redraw the entire control. + + + + + Resets the marker position of the slider to match the controls color. Gives the option of redrawing the slider. + + Set to true if you want the function to redraw the slider after determining the best position + + + + Resets the controls color (both HSL and RGB variables) based on the current marker position + + + + + Kindof self explanitory, I really need to look up the .NET function that does this. + + double value to be rounded to an integer + + + + + Returns the graphed color at the x,y position on the control + + + + + + + + A vertical slider control that shows a range for a color property (a.k.a. Hue, Saturation, Brightness, + Red, Green, Blue) and sends an event when the slider is changed. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + The drawstyle of the contol (Hue, Saturation, Brightness, Red, Green or Blue) + + + + + The HSL color of the control, changing the HSL will automatically change the RGB color for the control. + + + + + The RGB color of the control, changing the RGB will automatically change the HSL color for the control. + + + + + Redraws the background over the slider area on both sides of the control + + + + + Draws the slider arrows on both sides of the control. + + position value of the slider, lowest being at the bottom. The range + is between 0 and the controls height-9. The values will be adjusted if too large/small + If Unconditional is true, the slider is drawn, otherwise some logic + is performed to determine is drawing is really neccessary. + + + + Draws the border around the control, in this case the border around the content area between + the slider arrows. + + + + + Evaluates the DrawStyle of the control and calls the appropriate + drawing function for content + + + + + Fills in the content of the control showing all values of Hue (from 0 to 360) + + + + + Fills in the content of the control showing all values of Saturation (0 to 100%) for the given + Hue and Luminance. + + + + + Fills in the content of the control showing all values of Luminance (0 to 100%) for the given + Hue and Saturation. + + + + + Fills in the content of the control showing all values of Red (0 to 255) for the given + Green and Blue. + + + + + Fills in the content of the control showing all values of Green (0 to 255) for the given + Red and Blue. + + + + + Fills in the content of the control showing all values of Blue (0 to 255) for the given + Red and Green. + + + + + Calls all the functions neccessary to redraw the entire control. + + + + + Resets the vertical position of the slider to match the controls color. Gives the option of redrawing the slider. + + Set to true if you want the function to redraw the slider after determining the best position + + + + Resets the controls color (both HSL and RGB variables) based on the current slider position + + + + + Kindof self explanitory, I really need to look up the .NET function that does this. + + double value to be rounded to an integer + + + + + Summary description for AdobeColors. + + + + + Sets the absolute brightness of a colour + + Original colour + The luminance level to impose + an adjusted colour + + + + Modifies an existing brightness level + + + To reduce brightness use a number smaller than 1. To increase brightness use a number larger tnan 1 + + The original colour + The luminance delta + An adjusted colour + + + + Sets the absolute saturation level + + Accepted values 0-1 + An original colour + The saturation value to impose + An adjusted colour + + + + Modifies an existing Saturation level + + + To reduce Saturation use a number smaller than 1. To increase Saturation use a number larger tnan 1 + + The original colour + The saturation delta + An adjusted colour + + + + Sets the absolute Hue level + + Accepted values 0-1 + An original colour + The Hue value to impose + An adjusted colour + + + + Modifies an existing Hue level + + + To reduce Hue use a number smaller than 1. To increase Hue use a number larger tnan 1 + + The original colour + The Hue delta + An adjusted colour + + + + Converts a colour from HSL to RGB + + Adapted from the algoritm in Foley and Van-Dam + The HSL value + A Color structure containing the equivalent RGB values + + + + Converts RGB to HSL + + Takes advantage of whats already built in to .NET by using the Color.GetHue, Color.GetSaturation and Color.GetBrightness methods + A Color to convert + An HSL value + + + + Converts RGB to CMYK + + A color to convert. + A CMYK object + + + + Converts CMYK to RGB + + A color to convert + A Color object + + + + Custom rounding function. + + Value to round + Rounded value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A class for editing Cells that look like a ComboBox + + + + + Occurs when the SelectedIndex property has changed + + + + + Occurs when a visual aspect of an owner-drawn ComboBoxCellEditor changes + + + + + Occurs each time an owner-drawn ComboBoxCellEditor item needs to be + drawn and when the sizes of the list items are determined + + + + + The ListBox that contains the items to be shown in the + drop-down portion of the ComboBoxCellEditor + + + + + The maximum number of items to be shown in the drop-down + portion of the ComboBoxCellEditor + + + + + The width of the Cell being edited + + + + + Initializes a new instance of the ComboBoxCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Displays the drop down portion to the user + + + + + Gets or sets the maximum number of items to be shown in the drop-down + portion of the ComboBoxCellEditor + + + + + Gets or sets a value indicating whether your code or the operating + system will handle drawing of elements in the list + + + + + Gets or sets a value indicating whether the drop-down portion of the + editor should resize to avoid showing partial items + + + + + Gets or sets the height of an item in the editor + + + + + Gets an object representing the collection of the items contained + in this ComboBoxCellEditor + + + + + Gets or sets the maximum number of characters allowed in the editable + portion of a ComboBoxCellEditor + + + + + Gets or sets the index specifying the currently selected item + + + + + Gets or sets currently selected item in the ComboBoxCellEditor + + + + + Handler for the editors TextBox.KeyDown and ListBox.KeyDown events + + The object that raised the event + A KeyEventArgs that contains the event data + + + + Handler for the editors TextBox.MouseWheel event + + The object that raised the event + A MouseEventArgs that contains the event data + + + + Raises the DrawItem event + + A DrawItemEventArgs that contains the event data + + + + Raises the MeasureItem event + + A MeasureItemEventArgs that contains the event data + + + + Raises the SelectedIndexChanged event + + An EventArgs that contains the event data + + + + Handler for the editors ListBox.Click event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ListBox.SelectedIndexChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ListBox.MouseEnter event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ListBox.DrawItem event + + The object that raised the event + A DrawItemEventArgs that contains the event data + + + + Handler for the editors ListBox.MeasureItem event + + The object that raised the event + A MeasureItemEventArgs that contains the event data + + + + A class for editing Cells that contain DateTimes + + + + + Occurs when the user makes an explicit date selection using the mouse + + + + + The MonthCalendar that will be shown in the drop-down portion of the + DateTimeCellEditor + + + + + Initializes a new instance of the DateTimeCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Gets or sets a value specifying the style of the drop down editor + + + + + Raises the DateSelected event + + A DateRangeEventArgs that contains the event data + + + + Handler for the editors MonthCalendar.DateSelected events + + The object that raised the event + A DateRangeEventArgs that contains the event data + + + + A base class for editing Cells that contain drop down buttons + + + + + The container that holds the Control displayed when editor is dropped down + + + + + Specifies whether the DropDownContainer is currently displayed + + + + + Specifies the DropDown style + + + + + The user defined width of the DropDownContainer + + + + + Listener for WM_NCACTIVATE and WM_ACTIVATEAPP messages + + + + + The Form that will own the DropDownContainer + + + + + Specifies whether the mouse is currently over the + DropDownContainer + + + + + Initializes a new instance of the DropDownCellEditor class with default settings + + + + + Prepares the CellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Displays the drop down portion to the user + + + + + Conceals the drop down portion from the user + + + + + Gets whether the editor should stop editing if a mouse click occurs + outside of the DropDownContainer while it is dropped down + + The Control that will receive the message + The current position of the mouse cursor + true if the editor should stop editing, false otherwise + + + + Filters out a mouse message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Filters out a key message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Gets the TextBox used to edit the Cells contents + + + + + Gets the container that holds the Control displayed when editor is dropped down + + + + + Gets or sets whether the editor is displaying its drop-down portion + + + + + Gets or sets the width of the of the drop-down portion of the editor + + + + + Gets the user defined width of the of the drop-down portion of the editor + + + + + Gets or sets a value specifying the style of the drop down editor + + + + + Gets or sets the text that is selected in the editable portion of the editor + + + + + Gets or sets the number of characters selected in the editable portion + of the editor + + + + + Gets or sets the starting index of text selected in the editor + + + + + Gets or sets the text associated with the editor + + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors drop down button MouseDown event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors drop down button MouseUp event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors textbox MouseEnter event + + The object that raised the event + An EventArgs that contains the event data + + + + Listener for WM_NCACTIVATE and WM_ACTIVATEAPP messages + + + + + The DropDownCellEditor that owns the listener + + + + + Initializes a new instance of the DropDownCellEditor class with the + specified DropDownCellEditor owner + + The DropDownCellEditor that owns the listener + + + + Gets or sets the DropDownCellEditor that owns the listener + + + + + Processes Windows messages + + The Windows Message to process + + + + Summary description for DropDownContainer. + + + + + The DropDownCellEditor that owns the DropDownContainer + + + + + The Control displayed in the DropDownContainer + + + + + A Panel that provides the black border around the DropDownContainer + + + + + Initializes a new instance of the DropDownContainer class with the + specified DropDownCellEditor owner + + + + + Displays the DropDownContainer to the user + + + + + Hides the DropDownContainer from the user + + + + + Processes any Paint messages in the message queue + + + + + Gets or sets the Control displayed in the DropDownContainer + + + + + Gets the required creation parameters when the control handle is created + + + + + Handler for the DropDownContainer's SizeChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + Specifies the DropDownCellEditor style + + + + + The text portion is editable. The user must click the arrow + button to display the list portion + + + + + The user cannot directly edit the text portion. The user must + click the arrow button to display the list portion + + + + + Specifies the action that causes a Cell to start editing + + + + + A double click will start cell editing + + + + + A single click will start cell editing + + + + + A user defined key press will start cell editing + + + + + Exposes common methods provided by Cell editors + + + + + Prepares the ICellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Specifies that a CellEditor uses the buttons provided by its counter-part + CellRenderer during editing + + + + + Raises the EditorButtonMouseDown event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Raises the EditorButtonMouseUp event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Indicates that an object is interested in receiving key messages + before they are sent to their destination + + + + + Filters out a key message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Indicates that an object is interested in receiving mouse messages + before they are sent to their destination + + + + + Filters out a mouse message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + A message filter that filters key messages + + + + + An IKeyMessageFilterClient that wishes to receive key events + + + + + Initializes a new instance of the CellEditor class with the + specified IKeyMessageFilterClient client + + + + + Gets or sets the IKeyMessageFilterClient that wishes to receive + key events + + + + + Filters out a message before it is dispatched + + The message to be dispatched. You cannot modify + this message + true to filter the message and prevent it from being + dispatched; false to allow the message to continue to the next + filter or control + + + + A message filter that filters mouse messages + + + + + An IMouseMessageFilterClient that wishes to receive mouse events + + + + + Initializes a new instance of the CellEditor class with the + specified IMouseMessageFilterClient client + + + + + Gets or sets the IMouseMessageFilterClient that wishes to + receive mouse events + + + + + Filters out a message before it is dispatched + + The message to be dispatched. You cannot modify + this message + true to filter the message and prevent it from being + dispatched; false to allow the message to continue to the next + filter or control + + + + A class for editing Cells that contain numbers + + + + + ID number for the up button + + + + + ID number for the down button + + + + + The current value of the editor + + + + + The value to increment or decrement when the up or down buttons are clicked + + + + + The maximum value for the editor + + + + + The inximum value for the editor + + + + + A string that specifies how editors value is formatted + + + + + The amount the mouse wheel has moved + + + + + Indicates whether the arrow keys should be passed to the editor + + + + + Specifies whether the editors text value is changing + + + + + Initial interval between timer events + + + + + Current interval between timer events + + + + + Indicates whether the user has changed the editors value + + + + + The bounding Rectangle of the up and down buttons + + + + + The id of the button that was pressed + + + + + Timer to to fire button presses at regular intervals while + a button is pressed + + + + + Initializes a new instance of the NumberCellEditor class with default settings + + + + + Prepares the CellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Simulates the up button being pressed + + + + + Simulates the down button being pressed + + + + + Updates the editors text value to the current value + + + + + Checks the current value and updates the editors text value + + + + + Converts the editors current value to a number + + + + + Ensures that the specified value is between the editors Maximun and + Minimum values + + The value to be checked + A value is between the editors Maximun and Minimum values + + + + Starts the Timer + + + + + Stops the Timer + + + + + Gets the TextBox used to edit the Cells contents + + + + + Gets or sets the editors current value + + + + + Gets or sets the value to increment or decrement when the up or down + buttons are clicked + + + + + Gets or sets the maximum value for the editor + + + + + Gets or sets the minimum value for the editor + + + + + Gets or sets the string that specifies how the editors contents + are formatted + + + + + Gets or sets whether the editors text is being updated + + + + + Gets or sets whether the arrow keys should be passed to the editor + + + + + Gets or sets whether the user has changed the editors value + + + + + Handler for the editors TextBox.MouseWheel event + + The object that raised the event + A MouseEventArgs that contains the event data + + + + Handler for the editors TextBox.KeyDown event + + The object that raised the event + A KeyEventArgs that contains the event data + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors buttons MouseDown event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors buttons MouseUp event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors Timer event + + The object that raised the event + An EventArgs that contains the event data + + + + A class for editing Cells that contain strings + + + + + Initializes a new instance of the TextCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Gets the TextBox used to edit the Cells contents + + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Represents the method that will handle the CellButtonClicked event of a Table + + + + + Provides data for the CellButtonClicked event of a Table + + + + + Initializes a new instance of the CellButtonEventArgs class with + the specified Cell source, row index and column index + + The Cell that raised the event + The Column index of the Cell + The Row index of the Cell + + + + Represents the method that will handle the CellCheckChanged event of a Table + + + + + Provides data for the CellCheckChanged event of a Table + + + + + Initializes a new instance of the CellButtonEventArgs class with + the specified Cell source, row index and column index + + The Cell that Raised the event + The Column index of the Cell + The Row index of the Cell + + + + Represents the methods that will handle the BeginEdit, StopEdit and + CancelEdit events of a Table + + + + + Provides data for the BeginEdit, StopEdit and CancelEdit events of a Table + + + + + The CellEditor used to edit the Cell + + + + + The Table the Cell belongs to + + + + + The Cells bounding Rectangle + + + + + Specifies whether the event should be cancelled + + + + + Indicates whether the event was handled + + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index and row index + + The Cell that Raised the event + The CellEditor used to edit the Cell + The Table that the Cell belongs to + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index and row index + + The Cell that Raised the event + The CellEditor used to edit the Cell + The Table that the Cell belongs to + The Column index of the Cell + The Row index of the Cell + + + + + Gets the CellEditor used to edit the Cell + + + + + Gets the Table the Cell belongs to + + + + + Gets the Cells bounding Rectangle + + + + + Gets or sets whether the event should be cancelled + + + + + Gets or sets a value indicating whether the event was handled + + + + + Represents the methods that will handle the PropertyChanged event of a Cell + + + + + Provides data for a Cell's PropertyChanged event + + + + + The type of event + + + + + The old value of the property + + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source and event type + + The Cell that Raised the event + The type of event + The old value of the property + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index, row index and event type + + The Cell that Raised the event + The Column index of the Cell + The Row index of the Cell + The type of event + The old value of the property + + + + Gets or sets the type of event + + + + + Gets the old value of the property + + + + + Base class for classes containing Cell event data + + + + + The Cell that Raised the event + + + + + The Column index of the Cell + + + + + The Row index of the Cell + + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source and event type + + The Cell that Raised the event + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index and row index + + The Cell that Raised the event + The Column index of the Cell + The Row index of the Cell + + + + Returns the Cell that Raised the event + + + + + Gets the Column index of the Cell + + + + + + + + + + + Gets the Row index of the Cell + + + + + + + + + + + Gets the position of the Cell + + + + + Specifies the type of event generated when the value of a + Cell's property changes + + + + + Occurs when the Cell's property change type is unknown + + + + + Occurs when the value displayed by a Cell has changed + + + + + Occurs when the value of a Cell's Font property changes + + + + + Occurs when the value of a Cell's BackColor property changes + + + + + Occurs when the value of a Cell's ForeColor property changes + + + + + Occurs when the value of a Cell's CellStyle property changes + + + + + Occurs when the value of a Cell's Padding property changes + + + + + Occurs when the value of a Cell's Editable property changes + + + + + Occurs when the value of a Cell's Enabled property changes + + + + + Occurs when the value of a Cell's ToolTipText property changes + + + + + Occurs when the value of a Cell's CheckState property changes + + + + + Occurs when the value of a Cell's ThreeState property changes + + + + + Occurs when the value of a Cell's Image property changes + + + + + Occurs when the value of a Cell's ImageSizeMode property changes + + + + + Represents the method that will handle the CellGotFocus and CellLostFocus + events of a Table + + + + + Provides data for the CellGotFocus and CellLostFocus events of a Table + + + + + The Table the Cell belongs to + + + + + The Cells bounding rectangle + + + + + Initializes a new instance of the CellFocusEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + + + + Gets the Table the Cell belongs to + + + + + Gets the Cell's bounding rectangle + + + + + Represents the method that will handle the CellKeyDown and CellKeyUp + events of a Table + + + + + Provides data for the CellKeyDown and CellKeyUp events of a Table + + + + + The Cell that Raised the event + + + + + The Table the Cell belongs to + + + + + The Row index of the Cell + + + + + The Column index of the Cell + + + + + The Cells bounding rectangle + + + + + Initializes a new instance of the CellKeyEventArgs class with + the specified source Cell, table, row index, column index, cell + bounds and KeyEventArgs + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + + + + + Initializes a new instance of the CellKeyEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + + The Cell's bounding rectangle + + + + + Gets the Cell that Raised the event + + + + + Gets the Table the Cell belongs to + + + + + Gets the Row index of the Cell + + + + + Gets the Column index of the Cell + + + + + Gets the Cells bounding rectangle + + + + + Gets the position of the Cell + + + + + Represents the method that will handle the CellMouseEnter, CellMouseLeave, + CellMouseDown, CellMouseUp, CellMouseMove and CellMouseHover events of a Table + + + + + Provides data for the CellMouseEnter, CellMouseLeave, CellMouseDown, + CellMouseUp and CellMouseMove events of a Table + + + + + The Cell that raised the event + + + + + The Table the Cell belongs to + + + + + The Row index of the Cell + + + + + The Column index of the Cell + + + + + The Cells bounding rectangle + + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + + The Cell's bounding rectangle + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index, cell + bounds and MouseEventArgs + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + The MouseEventArgs that contains data about the + mouse event + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + + The Cell's bounding rectangle + + + + + Gets the Cell that Raised the event + + + + + Gets the Table the Cell belongs to + + + + + Gets the Row index of the Cell + + + + + Gets the Column index of the Cell + + + + + Gets the Cells bounding rectangle + + + + + Gets the position of the Cell + + + + + Represents the methods that will handle the PropertyChanged event of a Column, + or a Table's BeginSort and EndSort events + + + + + Provides data for a Column's PropertyChanged event, or a Table's + BeginSort and EndSort events + + + + + The Column that Raised the event + + + + + The index of the Column in the ColumnModel + + + + + The old value of the property that changed + + + + + The type of event + + + + + Initializes a new instance of the ColumnEventArgs class with + the specified Column source, column index and event type + + The Column that Raised the event + The type of event + The old value of the changed property + + + + Initializes a new instance of the ColumnEventArgs class with + the specified Column source, column index and event type + + The Column that Raised the event + The index of the Column + The type of event + The old value of the changed property + + + + Gets the Column that Raised the event + + + + + + + + + + + Gets the index of the Column + + + + + + + + + + + Gets the type of event + + + + + Gets the old value of the Columns changed property + + + + + Specifies the type of event generated when the value of a + Column's property changes + + + + + 变化的类型未知 + + + + + 名称变化 + + + + + 对齐格式变化 + + + + + 列头对齐格式变化 + + + + + 宽度变化 + + + + + 是否可见变化 + + + + + 图像变化 + + + + + 列Format属性变化,格式变化 + + + + + 状态变化 + + + + + 列Renderer属性变化 + + + + + Editor属性变化 + + + + + 列Comparer属性变化 + + + + + 列Enabled变化 + + + + + 是否可编辑变化 + + + + + 列Selectable属性变化 + + + + + 列Sortable属性变化,是否可排序变化 + + + + + 排序属性变化 + + + + + 提示文本变化 + + + + + 排序 + + + + + 列子名变化 + + + + + Represents the methods that will handle the ColumnInserted, ColumnRemoved + and HeaderHeightChanged event of a ColumnModel + + + + + Provides data for a ColumnModel's ColumnAdded, ColumnRemoved, + and HeaderHeightChanged events + + + + + The ColumnModel that Raised the event + + + + + The affected Column + + + + + The start index of the affected Column(s) + + + + + The end index of the affected Column(s) + + + + + Initializes a new instance of the ColumnModelEventArgs class with + the specified ColumnModel source, start index, end index and affected Column + + The ColumnModel that originated the event + The affected Column + The start index of the affected Column(s) + The end index of the affected Column(s) + + + + Gets the ColumnModel that Raised the event + + + + + Gets the affected Column + + + + + Gets the start index of the affected Column(s) + + + + + Gets the end index of the affected Column(s) + + + + + Represents the method that will handle the HeaderMouseEnter, HeaderMouseLeave, + HeaderMouseDown, HeaderMouseUp, HeaderMouseMove, HeaderClick and HeaderDoubleClick + events of a Table + + + + + Provides data for the HeaderMouseEnter, HeaderMouseLeave, HeaderMouseDown, + HeaderMouseUp, HeaderMouseMove, HeaderClick and HeaderDoubleClick events of a Table + + + + + The Column that raised the event + + + + + The Table the Column belongs to + + + + + The index of the Column + + + + + The column header's bounding rectangle + + + + + Initializes a new instance of the HeaderMouseEventArgs class with + the specified source Column, Table, column index and column header bounds + + The Column that Raised the event + The Table the Column belongs to + The index of the Column + The column header's bounding rectangle + + + + Initializes a new instance of the HeaderMouseEventArgs class with + the specified source Column, Table, column index, column header bounds + and MouseEventArgs + + The Column that Raised the event + The Table the Column belongs to + The index of the Column + The column header's bounding rectangle + The MouseEventArgs that contains data about the + mouse event + + + + Gets the Column that Raised the event + + + + + Gets the Table the Cell belongs to + + + + + Gets the index of the Column + + + + + Gets the column header's bounding rectangle + + + + + Represents the method that will handle the PaintCell events of a Table + + + + + Provides data for the PaintCell event + + + + + The Cell to be painted + + + + + The Table the Cell belongs to + + + + + The Row index of the Cell + + + + + The Column index of the Cell + + + + + Specifies whether the Cell is selected + + + + + Specifies whether the Cell has focus + + + + + Specifies whether the Cell's Column is sorted + + + + + Specifies whether the Cell is editable + + + + + Specifies whether the Cell is enabled + + + + + The rectangle in which to paint the Cell + + + + + Indicates whether the user has done the paining for us + + + + + Initializes a new instance of the PaintCellEventArgs class with + the specified graphics and clipping rectangle + + The Graphics used to paint the Cell + The Rectangle that represents the rectangle + in which to paint + + + + Initializes a new instance of the PaintCellEventArgs class with + the specified graphics, table, row index, column index, selected value, + focused value, mouse value and clipping rectangle + + The Graphics used to paint the Cell + The Cell to be painted + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + Specifies whether the Cell is selected + Specifies whether the Cell has focus + Specifies whether the Cell's Column is sorted + Specifies whether the Cell is able to be edited + Specifies whether the Cell is enabled + The rectangle in which to paint the Cell + + + + Gets the Cell to be painted + + + + + + + + + + + Gets the Table the Cell belongs to + + + + + + + + + + + Gets the Row index of the Cell + + + + + + + + + + + Gets the Column index of the Cell + + + + + + + + + + + Gets whether the Cell is selected + + + + + + + + + + + Gets whether the Cell has focus + + + + + + + + + + + Gets whether the Cell's Column is sorted + + + + + + + + + + + Gets whether the Cell is able to be edited + + + + + + + + + + + Gets whether the Cell is enabled + + + + + + + + + + + Gets the Cells bounding rectangle + + + + + + + + + + + Gets the position of the Cell + + + + + Gets or sets a value indicating whether the BeforePaintCell + event was handled + + + + + Represents the method that will handle the PaintHeader events of a Table + + + + + Provides data for the PaintHeader event + + + + + The Column to be painted + + + + + The Table the Column's ColumnModel belongs to + + + + + The index of the Column in the Table's ColumnModel + + + + + The style of the Column header + + + + + The rectangle in which to paint + + + + + Indicates whether the user has done the paining for us + + + + + Initializes a new instance of the PaintHeaderEventArgs class with + the specified graphics and clipping rectangle + + The Graphics used to paint the Column header + The Rectangle that represents the rectangle + in which to paint + + + + Initializes a new instance of the PaintHeaderEventArgs class with + the specified graphics, column, table, column index, header style + and clipping rectangle + + The Graphics used to paint the Column header + The Column to be painted + The Table the Column's ColumnModel belongs to + The index of the Column in the Table's ColumnModel + The style of the Column's header + The Rectangle that represents the rectangle + in which to paint + + + + Gets the Column to be painted + + + + + + + + + + + Gets the Table the Column's ColumnModel belongs to + + + + + + + + + + + Gets the index of the Column in the Table's ColumnModel + + + + + + + + + + + Gets the style of the Column's header + + + + + + + + + + + Gets the column header's bounding rectangle + + + + + + + + + + + Gets or sets a value indicating whether the BeforePaintHeader + event was handled + + + + + Represents the methods that will handle the PropertyChanged, CellAdded and + CellRemoved events of a Row + + + + + Provides data for a Row's PropertyChanged, CellAdded + and CellRemoved events + + + + + The Row that Raised the event + + + + + The index of the Row + + + + + The affected Cell + + + + + The start index of the affected Cell(s) + + + + + The end index of the affected Cell(s) + + + + + The type of event + + + + + Initializes a new instance of the RowEventArgs class with + the specified Row source, row index, start index, end index + and affected Cell + + The Row that originated the event + The type of event + + + + Initializes a new instance of the RowEventArgs class with + the specified Row source, row index, start index, end index + and affected Cell + + The Row that originated the event + The affected Cell + The start index of the affected Cell(s) + The end index of the affected Cell(s) + + + + Initializes a new instance of the RowEventArgs class with + the specified Row source, row index, start index, end index + and affected Cell + + The Row that originated the event + The index of the Row + The affected Cell + The start index of the affected Cell(s) + The end index of the affected Cell(s) + The type of event + + + + Gets the Row that Raised the event + + + + + Gets the index of the Row + + + + + + + + + + + Gets the affected Cell + + + + + Gets the start index of the affected Cell(s) + + + + + Gets the end index of the affected Cell(s) + + + + + Gets the type of event + + + + + Specifies the type of event generated when the value of a + Row's property changes + + + + + Occurs when the Row's property change type is unknown + + + + + Occurs when the value of a Row's BackColor property changes + + + + + Occurs when the value of a Row's ForeColor property changes + + + + + Occurs when the value of a Row's Font property changes + + + + + Occurs when the value of a Row's RowStyle property changes + + + + + Occurs when the value of a Row's Alignment property changes + + + + + Occurs when the value of a Row's Enabled property changes + + + + + Occurs when the value of a Row's Editable property changes + + + + + Represents the methods that will handle the SelectionChanged event of a TableModel + + + + + Provides data for a TableModel's SelectionChanged event + + + + + The TableModel that Raised the event + + + + + The previously selected Row indicies + + + + + The newly selected Row indicies + + + + + The Rectangle that bounds the previously selected Rows + + + + + The Rectangle that bounds the newly selected Rows + + + + + Initializes a new instance of the SelectionEventArgs class with + the specified TableModel source, old selected indicies and new + selected indicies + + The TableModel that originated the event + An array of the previously selected Rows + An array of the newly selected Rows + + + + Gets the TableModel that Raised the event + + + + + Gets the previously selected Row indicies + + + + + Gets the newly selected Row indicies + + + + + Gets the Rectangle that bounds the previously selected Rows + + + + + Gets the Rectangle that bounds the newly selected Rows + + + + + Represents the methods that will handle the RowAdded and RowRemoved + events of a TableModel + + + + + Provides data for a TableModel's RowAdded and RowRemoved events + + + + + The TableModel that Raised the event + + + + + The affected Row + + + + + The start index of the affected Row(s) + + + + + The end index of the affected Row(s) + + + + + Initializes a new instance of the TableModelEventArgs class with + the specified TableModel source, start index, end index and affected Column + + The TableModel that originated the event + + + + Initializes a new instance of the TableModelEventArgs class with + the specified TableModel source, start index, end index and affected Column + + The TableModel that originated the event + The start index of the affected Row(s) + The end index of the affected Row(s) + + + + Initializes a new instance of the TableModelEventArgs class with + the specified TableModel source, start index, end index and affected Column + + The TableModel that originated the event + The affected Row + The start index of the affected Row(s) + The end index of the affected Row(s) + + + + Gets the TableModel that Raised the event + + + + + Gets the affected Row + + + + + Gets the start index of the affected Row(s) + + + + + Gets the end index of the affected Row(s) + + + + + Represents a Column whose Cells are displayed as a Button + + + + + Specifies the alignment of the Image displayed on the button + + + + + Creates a new ButtonColumn with default values + + + + + Creates a new ButtonColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ButtonColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ButtonColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ButtonColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ButtonColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ButtonColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ButtonColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the horizontal alignment of the Column's Cell contents + + + + + Gets or sets the alignment of the Image displayed on the buttons + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + Gets or sets a value indicating whether the Column's Cells can be selected + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Represents a Cell that is displayed in a Table + + + + + Occurs when the value of a Cells property changes + + + + + The text displayed in the Cell + + + + + An object that contains data to be displayed in the Cell + + + + + An object that contains data about the Cell + + + + + Stores information used by CellRenderers to record the current + state of the Cell + + + + + The Row that the Cell belongs to + + + + + The index of the Cell + + + + + Contains the current state of the the Cell + + + + + The Cells CellStyle settings + + + + + The Cells CellCheckStyle settings + + + + + The Cells CellImageStyle settings + + + + + The text displayed in the Cells tooltip + + + + + Specifies whether the Cell has been disposed + + + + + Initializes a new instance of the Cell class with default settings + + + + + Initializes a new instance of the Cell class with the specified text + + The text displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified object + + The object displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and object + + The text displayed in the Cell + The object displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and check value + + The text displayed in the Cell + Specifies whether the Cell is Checked + + + + Initializes a new instance of the Cell class with the specified text + and Image value + + The text displayed in the Cell + The Image displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + fore Color, back Color and Font + + The text displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and CellStyle + + The text displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified object, + fore Color, back Color and Font + + The object displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and CellStyle + + The object displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified text, + object, fore Color, back Color and Font + + The text displayed in the Cell + The object displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + object and CellStyle + + The text displayed in the Cell + The object displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified text, + check value, fore Color, back Color and Font + + The text displayed in the Cell + Specifies whether the Cell is Checked + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + check value and CellStyle + + The text displayed in the Cell + Specifies whether the Cell is Checked + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified text, + Image, fore Color, back Color and Font + + The text displayed in the Cell + The Image displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + Image and CellStyle + + The text displayed in the Cell + The Image displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initialise default values + + + + + Releases all resources used by the Cell + + + + + Returns the state represented by the specified state flag + + A flag that represents the state to return + The state represented by the specified state flag + + + + Sets the state represented by the specified state flag to the specified value + + A flag that represents the state to be set + The new value of the state + + + + 获取或设置单元格内容 + + + + + 获取或设置单元格显示的非文本数据 + + + + + 获取或设置与单元格关联的用户定义数据 + + + + + 获取或设置单元格风格 + + + + + 获取或设置是否选中单元格 + + + + + 设置是否选中单元格 + + 是否选中单元格 + + + + 获取或设置单元格背景色 + + + + + 指定是否应在设计时序列化BackColor属性 + + true if the BackColor property should be serialized, + false otherwise + + + + 获取或设置单元格字体颜色 + + + + + Specifies whether the ForeColor property should be serialized at + design time + + true if the ForeColor property should be serialized, + false otherwise + + + + 获取或设置单元格字体 + + + + + Specifies whether the Font property should be serialized at + design time + + true if the Font property should be serialized, + false otherwise + + + + 获取或设置单元格边框与其内容之间的空间量 + + + + + Specifies whether the Padding property should be serialized at + design time + + true if the Padding property should be serialized, + false otherwise + + + + 获取或设置选中还是取消选中单元格 + + + + + 获取或设置指定单元格的选中状态 + + + + + 获取或设置一个值,该值指示单元格复选框是否允许三种检查状态而不是两种 + + + + + 获取或设置单元格中显示的图标 + + + + + 获取或设置单元格图像在单元格内的大小调整方式 + + + + + 获取或设置一个值,该值指示是否可以编辑单元格内容 + + + + + Specifies whether the Editable property should be serialized at + design time + + true if the Editable property should be serialized, + false otherwise + + + + 获取或设置一个值,该值指示单元格是否可以响应用户交互 + + + + + Specifies whether the Enabled property should be serialized at + design time + + true if the Enabled property should be serialized, + false otherwise + + + + 获取或设置单元格工具提示中显示的文本 + + + + + Gets or sets the information used by CellRenderers to record the current + state of the Cell + + + + + 获取单元格所属的行 + + + + + 获取或设置单元格所属的行 + + + + + 获取其行内单元格的序号 + + + + + 获取或设置其行内单元格的序号 + + + + + Gets whether the Cell is able to raise events + + + + + Raises the PropertyChanged event + + A CellEventArgs that contains the event data + + + + Stores CheckBox related properties for a Cell + + + + + The CheckState of the Cells check box + + + + + Specifies whether the Cells check box supports an indeterminate state + + + + + Initializes a new instance of the CellCheckStyle class with default settings + + + + + Gets or sets whether the Cell is in the checked state + + + + + Gets or sets the state of the Cells check box + + + + + Gets or sets a value indicating whether the Cells check box + will allow three check states rather than two + + + + + Represents a collection of Cell objects + + + + + The Row that owns the CellCollection + + + + + Initializes a new instance of the CellCollection class + that belongs to the specified Row + + A Row representing the row that owns + the Cell collection + + + + Adds the specified Cell to the end of the collection + + The Cell to add + + + + Adds an array of Cell objects to the collection + + An array of Cell objects to add + to the collection + + + + Removes the specified Cell from the model + + The Cell to remove + + + + Removes an array of Cell objects from the collection + + An array of Cell objects to remove + from the collection + + + + Removes the Cell at the specified index from the collection + + The index of the Cell to remove + + + + Removes all Cells from the collection + + + + + Inserts a Cell into the collection at the specified index + + The zero-based index at which the Cell + should be inserted + The Cell to insert + + + + Inserts an array of Cells into the collection at the specified index + + The zero-based index at which the cells should be inserted + An array of Cells to be inserted into the collection + + + + Returns the index of the specified Cell in the model + + The Cell to look for + The index of the specified Cell in the model + + + + 获取指定序号处的单元格 + + + + + 获取指定列处的单元格 + + + + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Stores Image related properties for a Cell + + + + + The Image displayed in the Cell + + + + + Determines how Images are sized in the Cell + + + + + Initializes a new instance of the CellImageStyle class with default settings + + + + + Gets or sets the image that is displayed in the Cell + + + + + Gets or sets how the Cells image is sized within the Cell + + + + + Specifies the amount of space between the border and any contained + items along each edge of an object + + + + + Represents a Padding structure with its properties + left uninitialized + + + + + The width of the left padding + + + + + The width of the right padding + + + + + The width of the top padding + + + + + The width of the bottom padding + + + + + Initializes a new instance of the Padding class + + The width of the left padding value + The height of top padding value + The width of the right padding value + The height of bottom padding value + + + + Tests whether obj is a CellPadding structure with the same values as + this Padding structure + + The Object to test + This method returns true if obj is a CellPadding structure + and its Left, Top, Right, and Bottom properties are equal to + the corresponding properties of this CellPadding structure; + otherwise, false + + + + Returns the hash code for this CellPadding structure + + An integer that represents the hashcode for this + padding + + + + Gets or sets the width of the left padding value + + + + + Gets or sets the width of the right padding value + + + + + Gets or sets the height of the top padding value + + + + + Gets or sets the height of the bottom padding value + + + + + Tests whether all numeric properties of this CellPadding have + values of zero + + + + + Tests whether two CellPadding structures have equal Left, Top, + Right, and Bottom properties + + The CellPadding structure that is to the left + of the equality operator + The CellPadding structure that is to the right + of the equality operator + This operator returns true if the two CellPadding structures + have equal Left, Top, Right, and Bottom properties + + + + Tests whether two CellPadding structures differ in their Left, Top, + Right, and Bottom properties + + The CellPadding structure that is to the left + of the equality operator + The CellPadding structure that is to the right + of the equality operator + This operator returns true if any of the Left, Top, Right, + and Bottom properties of the two CellPadding structures are unequal; + otherwise false + + + + A custom TypeConverter used to help convert CellPadding objects from + one Type to another + + + + + Returns whether this converter can convert an object of the + given type to the type of this converter, using the specified context + + An ITypeDescriptorContext that provides + a format context + A Type that represents the type you + want to convert from + true if this converter can perform the conversion; + otherwise, false + + + + Returns whether this converter can convert the object to the + specified type, using the specified context + + An ITypeDescriptorContext that provides a + format context + A Type that represents the type you + want to convert to + true if this converter can perform the conversion; + otherwise, false + + + + Converts the given object to the type of this converter, using + the specified context and culture information + + An ITypeDescriptorContext that provides a + format context + The CultureInfo to use as the current culture + The Object to convert + An Object that represents the converted value + + + + Converts the given value object to the specified type, using + the specified context and culture information + + An ITypeDescriptorContext that provides + a format context + A CultureInfo object. If a null reference + is passed, the current culture is assumed + The Object to convert + The Type to convert the value + parameter to + An Object that represents the converted value + + + + Creates an instance of the Type that this TypeConverter is associated + with, using the specified context, given a set of property values for + the object + + An ITypeDescriptorContext that provides a format + context + An IDictionary of new property values + An Object representing the given IDictionary, or a null + reference if the object cannot be created + + + + Returns whether changing a value on this object requires a call to + CreateInstance to create a new value, using the specified context + + An ITypeDescriptorContext that provides a + format context + true if changing a property on this object requires a call + to CreateInstance to create a new value; otherwise, false + + + + Returns a collection of properties for the type of array specified + by the value parameter, using the specified context and attributes + + An ITypeDescriptorContext that provides a format + context + An Object that specifies the type of array for + which to get properties + An array of type Attribute that is used as + a filter + A PropertyDescriptorCollection with the properties that are + exposed for this data type, or a null reference if there are no + properties + + + + Returns whether this object supports properties, using the specified context + + An ITypeDescriptorContext that provides a format context + true if GetProperties should be called to find the properties of this + object; otherwise, false + + + + Represents the position of a Cell in a Table + + + + + Repsesents a null CellPos + + + + + The Row index of this CellPos + + + + + The Column index of this CellPos + + + + + Initializes a new instance of the CellPos class with the specified + row index and column index + + The Row index of the CellPos + The Column index of the CellPos + + + + Translates this CellPos by the specified amount + + The amount to offset the row index + The amount to offset the column index + + + + Tests whether obj is a CellPos structure with the same values as + this CellPos structure + + The Object to test + This method returns true if obj is a CellPos structure + and its Row and Column properties are equal to the corresponding + properties of this CellPos structure; otherwise, false + + + + Returns the hash code for this CellPos structure + + An integer that represents the hashcode for this + CellPos + + + + Converts the attributes of this CellPos to a human-readable string + + A string that contains the row and column indexes of this + CellPos structure + + + + Gets or sets the Row index of this CellPos + + + + + Gets or sets the Column index of this CellPos + + + + + Tests whether any numeric properties of this CellPos have + values of -1 + + + + + Tests whether two CellPos structures have equal Row and Column + properties + + The CellPos structure that is to the left + of the equality operator + The CellPos structure that is to the right + of the equality operator + This operator returns true if the two CellPos structures + have equal Row and Column properties + + + + Tests whether two CellPos structures differ in their Row and + Column properties + + The CellPos structure that is to the left + of the equality operator + The CellPos structure that is to the right + of the equality operator + This operator returns true if any of the Row and Column + properties of the two CellPos structures are unequal; otherwise + false + + + + Stores visual appearance related properties for a Cell + + + + + The background color of the Cell + + + + + The foreground color of the Cell + + + + + The font used to draw the text in the Cell + + + + + The amount of space between the Cells border and its contents + + + + + Initializes a new instance of the CellStyle class with default settings + + + + + Gets or sets the Font used by the Cell + + + + + Gets or sets the background color for the Cell + + + + + Gets or sets the foreground color for the Cell + + + + + Gets or sets the amount of space between the Cells Border and its contents + + + + + Represents a Column whose Cells are displayed as a CheckBox + + + + + The size of the checkbox + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + The style of the checkboxes + + + + + Creates a new CheckBoxColumn with default values + + + + + Creates a new CheckBoxColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new CheckBoxColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new CheckBoxColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new CheckBoxColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new CheckBoxColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new CheckBoxColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the CheckBoxColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the size of the checkboxes + + + + + Specifies whether the CheckSize property should be serialized at + design time + + true if the CheckSize property should be serialized, + false otherwise + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Determines the visual appearance of CheckBoxes in a CheckBoxColumn + + + + + Indicates that CheckBoxes will look like CheckBoxes + + + + + Indicates that CheckBoxes will look like RadioButtons + + + + + Represents a Column whose Cells are displayed as a Color + + + + + Specifies whether the Cells should draw their Color value + + + + + Specifies whether the Cells should draw their Color name + + + + + Creates a new ColorColumn with default values + + + + + Creates a new ColorColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ColorColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ColorColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ColorColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ColorColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ColorColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ColorColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets whether the Column's Cells should draw their Color value + + + + + Gets or sets whether the Column's Cells should draw their Color name + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Summary description for Column. + + + + + Occurs when one of the Column's properties changes + + + + + The amount of space on each side of the Column that can + be used as a resizing handle + + + + + The default width of a Column + + + + + The maximum width of a Column + + + + + The minimum width of a Column + + + + + Contains the current state of the the Column + + + + + The text displayed in the Column's header + + + + + A string that specifies how a Column's Cell contents are formatted + + + + + The alignment of the text displayed in the Column's Cells + + + + + The width of the Column + + + + + The Image displayed on the Column's header + + + + + Specifies whether the Image displayed on the Column's header should + be draw on the right hand side of the Column + + + + + The current state of the Column + + + + + The text displayed when a ToolTip is shown for the Column's header + + + + + The ColumnModel that the Column belongs to + + + + + The x-coordinate of the column's left edge in pixels + + + + + The current SortOrder of the Column + + + + + The CellRenderer used to draw the Column's Cells + + + + + The CellEditor used to edit the Column's Cells + + + + + The Type of the IComparer used to compare the Column's Cells + + + + + Creates a new Column with default values + + + + + Creates a new Column with the specified header text + + The text displayed in the column's header + + + + Creates a new Column with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new Column with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new Column with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new Column with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new Column with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initialise default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Returns the state represented by the specified state flag + + A flag that represents the state to return + The state represented by the specified state flag + + + + Sets the state represented by the specified state flag to the specified value + + A flag that represents the state to be set + The new value of the state + + + + 列名 + + + + + 备注 + + + + + 获取或设置列标题显示文本 + + + + + Gets or sets the string that specifies how a Column's Cell contents + are formatted + + + + + Gets or sets the horizontal alignment of the Column's Cell contents + + + + + 获取或设置列宽 + + + + + 指定设计时宽度属性是否应该被序列化 + + true表示被序列化, + false 则不 + + + + 获取或设置列头的图标 + + + + + 获取或设置列头图标是否显示在文本右边 + + + + + 获取列状态 + + + + + Gets or sets the state of the Column + + + + + Gets or sets the whether the Column is displayed + + + + + Gets or sets whether the Column is able to be sorted + + + + + Gets or sets the user specified ICellRenderer that is used to draw the + Column's Cells + + + + + Gets or sets the user specified ICellEditor that is used to edit the + Column's Cells + + + + + Gets or sets the user specified Comparer type that is used to edit the + Column's Cells + + + + + Gets the Type of the default Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Gets the current SortOrder of the Column + + + + + Gets or sets the current SortOrder of the Column + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + Specifies whether the Editable property should be serialized at + design time + + true if the Editable property should be serialized, + false otherwise + + + + Gets or sets a value indicating whether the Column's Cells can respond to + user interaction + + + + + Specifies whether the Enabled property should be serialized at + design time + + true if the Enabled property should be serialized, + false otherwise + + + + Gets or sets a value indicating whether the Column's Cells can be selected + + + + + Gets or sets the ToolTip text associated with the Column + + + + + Gets the x-coordinate of the column's left edge in pixels + + + + + Gets the x-coordinate of the column's left edge in pixels + + + + + Gets the x-coordinate of the column's right edge in pixels + + + + + Gets or sets the ColumnModel the Column belongs to + + + + + Gets the ColumnModel the Column belongs to. This member is not + intended to be used directly from your code + + + + + 获取该列在集合中的位置 + + + + + Gets whether the Column is able to raise events + + + + + Raises the PropertyChanged event + + A ColumnEventArgs that contains the event data + + + + Specifies alignment of a Columns content + + + + + The Columns content is aligned to the left + + + + + The Columns content is aligned to the center + + + + + The Columns content is aligned to the right + + + + + Represents a collection of Column objects + + + + + The ColumnModel that owns the CollumnCollection + + + + + A local cache of the combined width of all columns + + + + + A local cache of the combined width of all visible columns + + + + + A local cache of the number of visible columns + + + + + A local cache of the last visible column in the collection + + + + + Initializes a new instance of the ColumnModel.ColumnCollection class + that belongs to the specified ColumnModel + + A ColumnModel representing the columnModel that owns + the Column collection + + + + 将指定的列添加到集合 + + The Column to add + + + + 将一个列对象数组添加到集合中 + + An array of Column objects to add + to the collection + + + + 删除指定的列 + + The Column to remove + + + + Removes an array of Column objects from the collection + + An array of Column objects to remove + from the collection + + + + Removes the Column at the specified index from the collection + + The index of the Column to remove + + + + Removes all Columns from the collection + + + + + Returns the index of the specified Column in the model + + The Column to look for + The index of the specified Column in the model + + + + Recalculates the total combined width of all columns + + + + + Gets the Column at the specified index + + + + + Gets the ColumnModel that owns this ColumnCollection + + + + + Returns the total width of all the Columns in the model + + + + + Returns the total width of all the visible Columns in the model + + + + + Returns the number of visible Columns in the model + + + + + Returns the index of the last visible Column in the model + + + + + Raises the ColumnAdded event + + A ColumnModelEventArgs that contains the event data + + + + Raises the ColumnRemoved event + + A ColumnModelEventArgs that contains the event data + + + + Summary description for ColumnModel. + + + + + Occurs when a Column has been added to the ColumnModel + + + + + Occurs when a Column is removed from the ColumnModel + + + + + Occurs when the value of the HeaderHeight property changes + + + + + The default height of a column header + + + + + The minimum height of a column header + + + + + The maximum height of a column header + + + + + The collection of Column's contained in the ColumnModel + + + + + The list of all default CellRenderers used by the Columns in the ColumnModel + + + + + The list of all default CellEditors used by the Columns in the ColumnModel + + + + + The Table that the ColumnModel belongs to + + + + + The height of the column headers + + + + + Initializes a new instance of the ColumnModel class with default settings + + + + + Initializes a new instance of the ColumnModel class with an array of strings + representing TextColumns + + An array of strings that represent the Columns of + the ColumnModel + + + + Initializes a new instance of the Row class with an array of Column objects + + An array of Cell objects that represent the Columns + of the ColumnModel + + + + Initialise default settings + + + + + Returns the index of the Column that lies on the specified position + + The x-coordinate to check + The index of the Column or -1 if no Column is found + + + + Returns the Column that lies on the specified position + + The x-coordinate to check + The Column that lies on the specified position, + or null if not found + + + + Returns a rectangle that countains the header of the column + at the specified index in the ColumnModel + + The index of the column + that countains the header of the specified column + + + + Returns a rectangle that countains the header of the specified column + + The column + A rectangle that countains the header of the specified column + + + + Releases the unmanaged resources used by the ColumnModel and optionally + releases the managed resources + + + + + Returns the ICellEditor that is associated with the specified name + + The name thst is associated with an ICellEditor + The ICellEditor that is associated with the specified name, + or null if the name or ICellEditor do not exist + + + + Gets the ICellEditor for the Column at the specified index in the + ColumnModel + + The index of the Column in the ColumnModel for + which an ICellEditor will be retrieved + The ICellEditor for the Column at the specified index, or + null if the editor does not exist + + + + Associates the specified ICellRenderer with the specified name + + The name to be associated with the specified ICellEditor + The ICellEditor to be added to the ColumnModel + + + + Gets whether the ColumnModel contains an ICellEditor with the + specified name + + The name associated with the ICellEditor + true if the ColumnModel contains an ICellEditor with the + specified name, false otherwise + + + + Gets the number of ICellEditors contained in the ColumnModel + + + + + Returns the ICellRenderer that is associated with the specified name + + The name thst is associated with an ICellEditor + The ICellRenderer that is associated with the specified name, + or null if the name or ICellRenderer do not exist + + + + Gets the ICellRenderer for the Column at the specified index in the + ColumnModel + + The index of the Column in the ColumnModel for + which an ICellRenderer will be retrieved + The ICellRenderer for the Column at the specified index, or + null if the renderer does not exist + + + + Associates the specified ICellRenderer with the specified name + + The name to be associated with the specified ICellRenderer + The ICellRenderer to be added to the ColumnModel + + + + Gets whether the ColumnModel contains an ICellRenderer with the + specified name + + The name associated with the ICellRenderer + true if the ColumnModel contains an ICellRenderer with the + specified name, false otherwise + + + + Gets the number of ICellRenderers contained in the ColumnModel + + + + + Returns the index of the first visible Column that is to the + left of the Column at the specified index in the ColumnModel + + The index of the Column for which the first + visible Column that is to the left of the specified Column is to + be found + the index of the first visible Column that is to the + left of the Column at the specified index in the ColumnModel, or + -1 if the Column at the specified index is the first visible column, + or there are no Columns in the Column model + + + + Returns the index of the first visible Column that is to the + right of the Column at the specified index in the ColumnModel + + The index of the Column for which the first + visible Column that is to the right of the specified Column is to + be found + the index of the first visible Column that is to the + right of the Column at the specified index in the ColumnModel, or + -1 if the Column at the specified index is the last visible column, + or there are no Columns in the Column model + + + + A ColumnCollection representing the collection of + Columns contained within the ColumnModel + + + + + 获取或设置列头高 + + + + + Specifies whether the HeaderHeight property should be serialized at + design time + + true if the HeaderHeight property should be serialized, + false otherwise + + + + 获取可见列的Rect + + + + + 获取所有列的宽度总和 + + + + + 获取可见列的宽度总和 + + + + + 获取最后一个可见列序号 + + + + + 获取可见列数量 + + + + + 获取ColumnModel组件所属的Table组件 + + + + + Gets or sets the Table the ColumnModel belongs to + + + + + Gets whether the ColumnModel is able to raise events + + + + + 获取ColumnModel组件是否可用(根据所属Table是否可用来判断) + + + + + Raises the ColumnAdded event + + A ColumnModelEventArgs that contains the event data + + + + Raises the ColumnRemoved event + + A ColumnModelEventArgs that contains the event data + + + + Raises the HeaderHeightChanged event + + An EventArgs that contains the event data + + + + Raises the ColumnPropertyChanged event + + A ColumnEventArgs that contains the event data + + + + Specifies the state of a Column + + + + + Column is in its normal state + + + + + Mouse is over the Column + + + + + Column is being pressed + + + + + Represents a Column whose Cells are displayed as a ComboBox + + + + + Creates a new ComboBoxColumn with default values + + + + + Creates a new ComboBoxColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ComboBoxColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ComboBoxColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ComboBoxColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ComboBoxColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ComboBoxColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Represents a Column whose Cells are displayed as a DateTime + + + + + Default long date format + + + + + Default short date format + + + + + Default time format + + + + + The format of the date and time displayed in the Cells + + + + + The custom date/time format string + + + + + Creates a new DateTimeColumn with default values + + + + + Creates a new DateTimeColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new DateTimeColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new DateTimeColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new DateTimeColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new DateTimeColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new DateTimeColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the DateTimeColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the format of the date and time displayed in the Column's Cells + + + + + Gets or sets the custom date/time format string + + + + + Specifies whether the CustomDateTimeFormat property should be serialized at + design time + + true if the CustomDateTimeFormat property should be serialized, + false otherwise + + + + Gets or sets the string that specifies how the Column's Cell contents + are formatted + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Provides a user interface that can edit collections of Cells + at design time + + + + + The CellCollection being edited + + + + + Initializes a new instance of the CellCollectionEditor class + using the specified collection type + + The type of the collection for this editor to edit + + + + Edits the value of the specified object using the specified + service provider and context + + An ITypeDescriptorContext that can be + used to gain additional context information + A service provider object through which + editing services can be obtained + The object to edit the value of + The new value of the object. If the value of the + object has not changed, this should return the same object + it was passed + + + + Creates a new instance of the specified collection item type + + The type of item to create + A new instance of the specified object + + + + Destroys the specified instance of the object + + The object to destroy + + + + A custom TypeConverter used to help convert Cells from + one Type to another + + + + + Returns whether this converter can convert the object to the + specified type, using the specified context + + An ITypeDescriptorContext that provides a + format context + A Type that represents the type + you want to convert to + true if this converter can perform the conversion; o + therwise, false + + + + Converts the given value object to the specified type, using + the specified context and culture information + + An ITypeDescriptorContext that provides + a format context + A CultureInfo object. If a null reference + is passed, the current culture is assumed + The Object to convert + The Type to convert the value + parameter to + An Object that represents the converted value + + + + Provides a user interface that can edit collections of Columns + at design time + + + + + The ColumnCollection being edited + + + + + Preview table + + + + + ColumnModel for the preview table + + + + + TableModel for the preview table + + + + + + + + + + Initializes a new instance of the ColumnCollectionEditor class + using the specified collection type + + The type of the collection for this editor to edit + + + + Edits the value of the specified object using the specified + service provider and context + + An ITypeDescriptorContext that can be + used to gain additional context information + A service provider object through which + editing services can be obtained + The object to edit the value of + The new value of the object. If the value of the + object has not changed, this should return the same object + it was passed + + + + Gets the data types that this collection editor can contain + + An array of data types that this collection can contain + + + + Creates a new instance of the specified collection item type + + The type of item to create + A new instance of the specified object + + + + Destroys the specified instance of the object + + The object to destroy + + + + Handler for the PropertyGrid's SelectedObjectsChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for a Column's PropertyChanged event + + The object that raised the event + A ColumnEventArgs that contains the event data + + + + A CollectionEditor that displays the help and command areas of its PropertyGrid + + + + + Initializes a new instance of the HelpfulCollectionEditor class using + the specified collection type + + The type of the collection for this editor to edit + + + + Creates a new form to display and edit the current collection + + An instance of CollectionEditor.CollectionForm to provide as the + user interface for editing the collection + + + + Provides a user interface that can edit collections of Rows + at design time + + + + + The RowCollection being edited + + + + + Initializes a new instance of the RowCollectionEditor class + using the specified collection type + + The type of the collection for this editor to edit + + + + Edits the value of the specified object using the specified + service provider and context + + An ITypeDescriptorContext that can be + used to gain additional context information + A service provider object through which + editing services can be obtained + The object to edit the value of + The new value of the object. If the value of the + object has not changed, this should return the same object + it was passed + + + + Creates a new instance of the specified collection item type + + The type of item to create + A new instance of the specified object + + + + Destroys the specified instance of the object + + The object to destroy + + + + + + + + + + + + + + + + + A custom TypeConverter used to help convert Rows from + one Type to another + + + + + Returns whether this converter can convert the object to the + specified type, using the specified context + + An ITypeDescriptorContext that provides a + format context + A Type that represents the type + you want to convert to + true if this converter can perform the conversion; o + therwise, false + + + + Converts the given value object to the specified type, using + the specified context and culture information + + An ITypeDescriptorContext that provides + a format context + A CultureInfo object. If a null reference + is passed, the current culture is assumed + The Object to convert + The Type to convert the value + parameter to + An Object that represents the converted value + + + + Represents a Column whose Cells are displayed with a drop down + button for editing + + + + + Specifies whether the Cells should draw a drop down button + + + + + Creates a new DropDownColumn with default values + + + + + Creates a new DropDownColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new DropDownColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new DropDownColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new DropDownColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new DropDownColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new DropDownColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the DropDownColumn with default values + + + + + Gets or sets whether the Column's Cells should draw a drop down button + + + + + Specifies how a Table draws grid lines between its rows and columns + + + + + No grid lines are drawn + + + + + Grid lines are only drawn between columns + + + + + Grid lines are only drawn between rows + + + + + Grid lines are drawn between rows and columns + + + + + Specifies the style of the lines drawn when a Table draws its grid lines + + + + + Specifies a solid line + + + + + Specifies a line consisting of dashes + + + + + Specifies a line consisting of dots + + + + + Specifies a line consisting of a repeating pattern of dash-dot + + + + + Specifies a line consisting of a repeating pattern of dash-dot-dot + + + + + A specialized ContextMenu for Column Headers + + + + + The ColumnModel that owns the menu + + + + + Specifies whether the menu is enabled + + + + + More columns menuitem + + + + + Seperator menuitem + + + + + Initializes a new instance of the HeaderContextMenu class with + no menu items specified + + + + + Displays the shortcut menu at the specified position + + A Control object that specifies the control + with which this shortcut menu is associated + A Point object that specifies the coordinates at + which to display the menu. These coordinates are specified relative + to the client coordinates of the control specified in the control + parameter + + + + + + + + + Raises the Popup event + + An EventArgs that contains the event data + + + + + + + + + + + + + + + + + + Summary description for ShowColumnsDialog. + + + + + Required designer variable. + + + + + + + + + + Clean up any resources being used. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a Column whose Cells are displayed as an Image + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + Creates a new ImageColumn with default values + + + + + Creates a new ImageColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ImageColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ImageColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ImageColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ImageColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ImageColumn with the specified header text, image, width + and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ImageColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets whether any text contained in the Column's Cells should be drawn + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + Specifies how Images are sized within a Cell + + + + + The Image will be displayed normally + + + + + The Image will be stretched/shrunken to fit the Cell + + + + + The Image will be scaled to fit the Cell + + + + + Represents a Column whose Cells are displayed as a numbers + + + + + The value to increment or decrement a Cell when its up or down buttons are clicked + + + + + The maximum value for a Cell + + + + + The minimum value for a Cell + + + + + The alignment of the up and down buttons in the Column + + + + + Specifies whether the up and down buttons should be drawn + + + + + Creates a new NumberColumn with default values + + + + + Creates a new NumberColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new NumberColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new NumberColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new TextColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new TextColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new TextColumn with the specified header text, image, width + and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the NumberColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the maximum value for Column's Cells + + + + + Specifies whether the Maximum property should be serialized at + design time + + true if the Maximum property should be serialized, + false otherwise + + + + Gets or sets the minimum value for Column's Cells + + + + + Specifies whether the Minimum property should be serialized at + design time + + true if the Minimum property should be serialized, + false otherwise + + + + Gets or sets the value to increment or decrement a Cell when its up or down + buttons are clicked + + + + + Specifies whether the Increment property should be serialized at + design time + + true if the Increment property should be serialized, + false otherwise + + + + Gets or sets whether the Column's Cells should draw up and down buttons + + + + + Gets or sets the alignment of the up and down buttons in the Column + + + + + Gets or sets the string that specifies how a Column's Cell contents + are formatted + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Represents a Column whose Cells are displayed as a ProgressBar + + + + + Specifies whether the ProgressBar's value as a string + should be displayed + + + + + Creates a new ProgressBarColumn with default values + + + + + Creates a new ProgressBarColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ProgressBarColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ProgressBarColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ProgressBarColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ProgressBarColumn with the specified header text, image + and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ProgressBarColumn with the specified header text, image, + width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ProgressBarColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets whether a Cell's percantage value should be drawn as a string + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + SRepresents a row of Cells displayed in a Table + + + + + Occurs when a Cell is added to the Row + + + + + Occurs when a Cell is removed from the Row + + + + + Occurs when the value of a Row's property changes + + + + + The collection of Cells's contained in the Row + + + + + An object that contains data about the Row + + + + + The TableModel that the Row belongs to + + + + + The index of the Row + + + + + the current state of the Row + + + + + The Row's RowStyle + + + + + The number of Cells in the Row that are selected + + + + + Specifies whether the Row has been disposed + + + + + Initializes a new instance of the Row class with default settings + + + + + Initializes a new instance of the Row class with an array of strings + representing Cells + + An array of strings that represent the Cells of + the Row + + + + Initializes a new instance of the Row class with an array of Cell objects + + An array of Cell objects that represent the Cells of the Row + + + + Initializes a new instance of the Row class with an array of strings + representing Cells and the foreground color, background color, and font + of the Row + + An array of strings that represent the Cells of the Row + The foreground Color of the Row + The background Color of the Row + The Font used to draw the text in the Row's Cells + + + + Initializes a new instance of the Row class with an array of Cell objects and + the foreground color, background color, and font of the Row + + An array of Cell objects that represent the Cells of the Row + The foreground Color of the Row + The background Color of the Row + The Font used to draw the text in the Row's Cells + + + + Initialise default values + + + + + Releases all resources used by the Row + + + + + Returns the state represented by the specified state flag + + A flag that represents the state to return + The state represented by the specified state flag + + + + Sets the state represented by the specified state flag to the specified value + + A flag that represents the state to be set + The new value of the state + + + + A CellCollection representing the collection of + Cells contained within the Row + + + + + Gets or sets the object that contains data about the Row + + + + + Gets or sets the RowStyle used by the Row + + + + + 获取或设置行背景色 + + + + + Specifies whether the BackColor property should be serialized at + design time + + true if the BackColor property should be serialized, + false otherwise + + + + 获取或设置行字体颜色 + + + + + Specifies whether the ForeColor property should be serialized at + design time + + true if the ForeColor property should be serialized, + false otherwise + + + + 获取或设置行字体对齐方式 + + + + + 获取或设置行字体 + + + + + Specifies whether the Font property should be serialized at + design time + + true if the Font property should be serialized, + false otherwise + + + + 获取或设置该行的列内容是否可编辑 + + + + + Specifies whether the Editable property should be serialized at + design time + + true if the Editable property should be serialized, + false otherwise + + + + 指定行的单元格是否可以响应用户交互 + + + + + Specifies whether the Enabled property should be serialized at + design time + + true if the Enabled property should be serialized, + false otherwise + + + + Gets the TableModel the Row belongs to + + + + + Gets or sets the TableModel the Row belongs to + + + + + 获取行序号 + + + + + Gets or sets the index of the Row within its TableModel + + + + + Updates the Cell's Index property so that it matches the Cells + position in the CellCollection + + The index to start updating from + + + + Gets whether the Row is able to raise events + + + + + 获取选中的列数量 + + + + + Gets or sets the number of Cells that are selected within the Row + + + + + 获取是否选定行中的任何单元格 + + + + + 返回是否选择了指定序号的单元格 + + The index of the Cell in the Row's Row.CellCollection + True if the Cell at the specified index is selected, + otherwise false + + + + 清除选定状态 + + + + + 返回包含行中所有选定单元格的单元格数组 + + + + + 返回一个数组,该数组包含行中所有选定单元格的序号 + + + + + Raises the PropertyChanged event + + A RowEventArgs that contains the event data + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Raises the CellPropertyChanged event + + A CellEventArgs that contains the event data + + + + Specifies alignment of a Rows content + + + + + The Rows content is aligned to the top + + + + + The Rows content is aligned to the center + + + + + The Rows content is aligned to the bottom + + + + + Represents a collection of Row objects + + + + + The TableModel that owns the RowCollection + + + + + 初始化属于指定TableModel的RowCollection类的新实例 + + 表示拥有RowCollection的TableModel组件 + + + + 将指定的行添加到集合的末尾 + + 要添加的行 + + + + 将Row对象的数组添加到集合中 + + 要添加到集合中的Row对象的数组 + + + + 删除指定的行 + + 要删除的行 + + + + 从集合中移除Row对象的数组 + + 要从集合中移除的Row对象的数组 + + + + 从集合中移除指定序号处的行 + + 要删除的行序号 + + + + 从集合中移除所有行 + + + + + 在集合中的指定序号处插入行 + + 应插入的行序号(从零开始计算) + 要插入的行 + + + + 在集合中的指定序号处插入行数组 + + 应插入的行序号(从零开始计算) + 要插入到集合中的行数组 + + + + 返回指定行的序号 + + 要查找的行 + 指定行的序号 + + + + 获取指定序号处的行 + + + + + 将指定序号处的行替换为指定的行 + + 要替换的行序号 + 要放置在指定序号处的行 + + + + Raises the RowAdded event + + A TableModelEventArgs that contains the event data + + + + Raises the RowRemoved event + + A TableModelEventArgs that contains the event data + + + + Stores visual appearance related properties for a Row + + + + + The background color of the Row + + + + + The foreground color of the Row + + + + + The font used to draw the text in the Row + + + + + The alignment of the text in the Row + + + + + Initializes a new instance of the RowStyle class with default settings + + + + + 获取或设置用于显示行文本的字体 + + + + + 获取或设置行背景色 + + + + + 获取或设置行字体颜色 + + + + + 获取或设置行文本对齐方式 + + + + + 指定表格绘制选定单元格的方式 + + + + + 选定单元格行中的第一个可见单元格绘制为选定单元格 + + + + + 选定的单元格将绘制为选定的单元格 + + + + + Summary description for Table. + + + + + Occurs when the value of a Cells property changes + + + + + Occurs when a Cell gains focus + + + + + Occurs when a Cell loses focus + + + + + Occurs when a key is pressed when a Cell has focus + + + + + Occurs when a key is released when a Cell has focus + + + + + Occurs when the mouse pointer enters a Cell + + + + + Occurs when the mouse pointer leaves a Cell + + + + + Occurs when a mouse pointer is over a Cell and a mouse button is pressed + + + + + Occurs when a mouse pointer is over a Cell and a mouse button is released + + + + + Occurs when a mouse pointer is moved over a Cell + + + + + Occurs when the mouse pointer hovers over a Cell + + + + + Occurs when a Cell is clicked + + + + + Occurs when a Cell is double-clicked + + + + + Occurs when a Cell's button is clicked + + + + + Occurs when a Cell's Checked value changes + + + + + Occurs when a Column's property changes + + + + + Occurs when the mouse pointer enters a Column Header + + + + + Occurs when the mouse pointer leaves a Column Header + + + + + Occurs when a mouse pointer is over a Column Header and a mouse button is pressed + + + + + Occurs when a mouse pointer is over a Column Header and a mouse button is released + + + + + Occurs when a mouse pointer is moved over a Column Header + + + + + Occurs when the mouse pointer hovers over a Column Header + + + + + Occurs when a Column Header is clicked + + + + + Occurs when a Column Header is double-clicked + + + + + Occurs when the height of the Column Headers changes + + + + + Occurs when the value of the Table's ColumnModel property changes + + + + + Occurs when a Column is added to the ColumnModel + + + + + Occurs when a Column is removed from the ColumnModel + + + + + Occurs when the Table begins editing a Cell + + + + + Occurs when the Table stops editing a Cell + + + + + Occurs when the editing of a Cell is cancelled + + + + + Occurs when a Cell is added to a Row + + + + + Occurs when a Cell is removed from a Row + + + + + Occurs when the value of a Rows property changes + + + + + Occurs when a Column is about to be sorted + + + + + Occurs after a Column has finished sorting + + + + + Occurs before a Cell is painted + + + + + Occurs after a Cell is painted + + + + + Occurs before a Column header is painted + + + + + Occurs after a Column header is painted + + + + + Occurs when the value of the Table's TableModel property changes + + + + + Occurs when a Row is added into the TableModel + + + + + Occurs when a Row is removed from the TableModel + + + + + Occurs when the value of the TableModel Selection property changes + + + + + Occurs when the value of the RowHeight property changes + + + + + Required designer variable. + + + + + The style of the Table's border + + + + + The last known cell position that the mouse was over + + + + + The last known cell position that the mouse's left + button was pressed in + + + + + The position of the Cell that currently has focus + + + + + The Cell that is currently being edited + + + + + The ICellEditor that is currently being used to edit a Cell + + + + + The action that must be performed on a Cell to start editing + + + + + The key that must be pressed for editing to start when + editStartAction is set to EditStartAction.CustomKey + + + + + The amount of time (in milliseconds) that that the + mouse pointer must hover over a Cell or Column Header before + a MouseHover event is raised + + + + + A TRACKMOUSEEVENT used to set the hoverTime + + + + + The ColumnModel of the Table + + + + + Whether the Table supports column resizing + + + + + The index of the column currently being resized + + + + + The x coordinate of the currently resizing column + + + + + The horizontal distance between the resize starting + point and the right edge of the resizing column + + + + + The width that the resizing column will be set to + once column resizing is finished + + + + + The index of the current pressed column + + + + + The index of the current "hot" column + + + + + The index of the last sorted column + + + + + The Color of a sorted Column's background + + + + + Indicates whether grid lines appear between the rows and columns + containing the rows and cells in the Table + + + + + The color of the grid lines + + + + + The line style of the grid lines + + + + + The styles of the column headers + + + + + The Renderer used to paint the column headers + + + + + The font used to draw the text in the column header + + + + + The ContextMenu for the column headers + + + + + The TableModel of the Table + + + + + Indicates whether the Table will allow the user to scroll to any + columns or rows placed outside of its visible boundaries + + + + + The Table's horizontal ScrollBar + + + + + The Table's vertical ScrollBar + + + + + Specifies whether rows and cells can be selected + + + + + Specifies whether multiple rows and cells can be selected + + + + + Specifies whether clicking a row selects all its cells + + + + + Specifies whether the selected rows and cells in the Table remain + highlighted when the Table loses focus + + + + + The background color of selected rows and cells + + + + + The foreground color of selected rows and cells + + + + + The background color of selected rows and cells when the Table + doesn't have focus + + + + + The foreground color of selected rows and cells when the Table + doesn't have focus + + + + + Determines how selected Cells are hilighted + + + + + The state of the table + + + + + Is the Table currently initialising + + + + + The number of times BeginUpdate has been called + + + + + The ToolTip used by the Table to display cell and column tooltips + + + + + The alternating row background color + + + + + The text displayed in the Table when it has no data to display + + + + + Specifies whether the Table is being used as a preview Table + in a ColumnColection editor + + + + + Initializes a new instance of the Table class with default settings + + + + + Computes the location of the specified client point into coordinates + relative to the display rectangle + + The client x coordinate to convert + The client y coordinate to convert + A Point that represents the converted coordinates (x, y), + relative to the display rectangle + + + + Computes the location of the specified client point into coordinates + relative to the display rectangle + + The client coordinate Point to convert + A Point that represents the converted Point, p, + relative to the display rectangle + + + + Converts the location of the specified Rectangle into coordinates + relative to the display rectangle + + The Rectangle to convert whose location is in + client coordinates + A Rectangle that represents the converted Rectangle, rect, + relative to the display rectangle + + + + Computes the location of the specified point relative to the display + rectangle point into client coordinates + + The x coordinate to convert relative to the display rectangle + The y coordinate to convert relative to the display rectangle + A Point that represents the converted coordinates (x, y) relative to + the display rectangle in client coordinates + + + + Computes the location of the specified point relative to the display + rectangle into client coordinates + + The point relative to the display rectangle to convert + A Point that represents the converted Point relative to + the display rectangle, p, in client coordinates + + + + Converts the location of the specified Rectangle relative to the display + rectangle into client coordinates + + The Rectangle to convert whose location is relative to + the display rectangle + A Rectangle that represents the converted Rectangle relative to + the display rectangle, rect, in client coordinates + + + + Returns the Cell at the specified client coordinates + + The client x coordinate of the Cell + The client y coordinate of the Cell + The Cell at the specified client coordinates, or + null if it does not exist + + + + Returns the Cell at the specified client Point + + The point of interest + The Cell at the specified client Point, + or null if not found + + + + Returns a Rectangle that specifies the size and location the cell at + the specified row and column indexes in client coordinates + + The index of the row that contains the cell + The index of the column that contains the cell + A Rectangle that specifies the size and location the cell at + the specified row and column indexes in client coordinates + + + + Returns a Rectangle that specifies the size and location the cell at + the specified cell position in client coordinates + + The position of the cell + A Rectangle that specifies the size and location the cell at + the specified cell position in client coordinates + + + + Returns a Rectangle that specifies the size and location of the + specified cell in client coordinates + + The cell whose bounding rectangle is to be retrieved + A Rectangle that specifies the size and location the specified + cell in client coordinates + + + + Returns whether Cell at the specified row and column indexes + is not null + + The row index of the cell + The column index of the cell + True if the cell at the specified row and column indexes + is not null, otherwise false + + + + Returns whether Cell at the specified cell position is not null + + The position of the cell + True if the cell at the specified cell position is not + null, otherwise false + + + + Returns a CellPos that specifies the next Cell that is visible + and enabled from the specified Cell + + A CellPos that specifies the Cell to start + searching from + Specifies whether to move to the start of the + next Row when the end of the current Row is reached + Specifies whether the search should travel + in a forward direction (top to bottom, left to right) through the Cells + Indicates whether the specified starting + Cell is included in the search + Specifies whether all Cells in + the Row should be included in the search + A CellPos that specifies the next Cell that is visible + and enabled, or CellPos.Empty if there are no Cells that are visible + and enabled + + + + Returns a CellPos that specifies the next Cell that able to be + edited from the specified Cell + + A CellPos that specifies the Cell to start + searching from + Specifies whether to move to the start of the + next Row when the end of the current Row is reached + Specifies whether the search should travel + in a forward direction (top to bottom, left to right) through the Cells + Indicates whether the specified starting + Cell is included in the search + A CellPos that specifies the next Cell that is able to + be edited, or CellPos.Empty if there are no Cells that editable + + + + Returns the index of the Column at the specified client coordinates + + The client x coordinate of the Column + The client y coordinate of the Column + The index of the Column at the specified client coordinates, or + -1 if it does not exist + + + + Returns the index of the Column at the specified client point + + The point of interest + The index of the Column at the specified client point, or + -1 if it does not exist + + + + Returns the bounding rectangle of the specified + column's header in client coordinates + + The index of the column + The bounding rectangle of the specified + column's header + + + + Returns the bounding rectangle of the specified + column's header in client coordinates + + The column + The bounding rectangle of the specified + column's header + + + + Returns the bounding rectangle of the column at the + specified index in client coordinates + + The column + The bounding rectangle of the column at the + specified index + + + + Returns the bounding rectangle of the specified column + in client coordinates + + The column + The bounding rectangle of the specified + column + + + + Returns the index of the Row at the specified client coordinates + + The client x coordinate of the Row + The client y coordinate of the Row + The index of the Row at the specified client coordinates, or + -1 if it does not exist + + + + Returns the index of the Row at the specified client point + + The point of interest + The index of the Row at the specified client point, or + -1 if it does not exist + + + + Returns the bounding rectangle of the row at the + specified index in client coordinates + + The index of the row + The bounding rectangle of the row at the + specified index + + + + Returns the bounding rectangle of the specified row + in client coordinates + + The row + The bounding rectangle of the specified + row + + + + Returns a TableRegions value that represents the table region at + the specified client coordinates + + The client x coordinate + The client y coordinate + A TableRegions value that represents the table region at + the specified client coordinates + + + + Returns a TableRegions value that represents the table region at + the specified client point + + The point of interest + A TableRegions value that represents the table region at + the specified client point + + + + Releases the unmanaged resources used by the Control and optionally + releases the managed resources + + true to release both managed and unmanaged + resources; false to release only unmanaged resources + + + + Removes the ColumnModel and TableModel from the Table + + + + + Records the Cell that is currently being edited and the + ICellEditor used to edit the Cell + + The Cell that is currently being edited + The ICellEditor used to edit the Cell + + + + Records the Cell that is currently being edited and the + ICellEditor used to edit the Cell + + The Cell that is currently being edited + The ICellEditor used to edit the Cell + + + + Starts editing the Cell at the specified row and column indexes + + The row index of the Cell to be edited + The column index of the Cell to be edited + + + + Starts editing the Cell at the specified CellPos + + A CellPos that specifies the Cell to be edited + + + + Stops editing the current Cell and commits any changes + + + + + Cancels editing the current Cell and ignores any changes + + + + + Returns whether the Cell at the specified row and column is able + to be edited by the user + + The row index of the Cell to check + The column index of the Cell to check + True if the Cell at the specified row and column is able + to be edited by the user, false otherwise + + + + Returns whether the Cell at the specified CellPos is able + to be edited by the user + + A CellPos that specifies the Cell to check + True if the Cell at the specified CellPos is able + to be edited by the user, false otherwise + + + + Returns whether the Cell at the specified row and column is able + to respond to user interaction + + The row index of the Cell to check + The column index of the Cell to check + True if the Cell at the specified row and column is able + to respond to user interaction, false otherwise + + + + Returns whether the Cell at the specified CellPos is able + to respond to user interaction + + A CellPos that specifies the Cell to check + True if the Cell at the specified CellPos is able + to respond to user interaction, false otherwise + + + + Invalidates the specified Cell + + The Cell to be invalidated + + + + Invalidates the Cell located at the specified row and column indicies + + The row index of the Cell to be invalidated + The column index of the Cell to be invalidated + + + + Invalidates the Cell located at the specified CellPos + + A CellPos that specifies the Cell to be invalidated + + + + Invalidates the specified Row + + The Row to be invalidated + + + + Invalidates the Row located at the specified row index + + The row index of the Row to be invalidated + + + + Invalidates the Row located at the specified CellPos + + A CellPos that specifies the Row to be invalidated + + + + Determines whether the specified key is reserved for use by the Table + + One of the Keys values + true if the specified key is reserved for use by the Table; + otherwise, false + + + + Determines whether the specified key is a regular input key or a special + key that requires preprocessing + + One of the Keys values + true if the specified key is a regular input key; otherwise, false + + + + Prevents the Table from drawing until the EndUpdate method is called + + + + + Resumes drawing of the Table after drawing is suspended by the + BeginUpdate method + + + + + Signals the object that initialization is starting + + + + + Signals the object that initialization is complete + + + + + Gets whether the Table is currently initializing + + + + + This member supports the .NET Framework infrastructure and is not + intended to be used directly from your code + + + + + Updates the scrollbars to reflect any changes made to the Table + + + + + Scrolls the contents of the Table horizontally to the specified value + + The value to scroll to + + + + Scrolls the contents of the Table vertically to the specified value + + The value to scroll to + + + + Ensures that the Cell at the specified row and column is visible + within the Table, scrolling the contents of the Table if necessary + + The zero-based index of the row to scroll into view + The zero-based index of the column to scroll into view + true if the Table scrolled to the Cell at the specified row + and column, false otherwise + + + + Ensures that the Cell at the specified CellPos is visible within + the Table, scrolling the contents of the Table if necessary + + A CellPos that contains the zero-based index + of the row and column to scroll into view + + + + + Gets the index of the first visible Column currently displayed in the Table + + + + + Gets the index of the last visible Column currently displayed in the Table + + + + + Sorts the last sorted column opposite to its current sort order, + or sorts the currently focused column in ascending order if no + columns have been sorted + + + + + Sorts the last sorted column opposite to its current sort order, + or sorts the currently focused column in ascending order if no + columns have been sorted + + Specifies whether a stable sorting method + should be used to sort the column + + + + Sorts the specified column opposite to its current sort order, + or in ascending order if the column is not sorted + + The index of the column to sort + + + + Sorts the specified column opposite to its current sort order, + or in ascending order if the column is not sorted + + The index of the column to sort + Specifies whether a stable sorting method + should be used to sort the column + + + + Sorts the specified column in the specified sort direction + + The index of the column to sort + The direction the column is to be sorted + + + + Sorts the specified column in the specified sort direction + + The index of the column to sort + The direction the column is to be sorted + Specifies whether a stable sorting method + should be used to sort the column + + + + Sorts the specified column in the specified sort direction + + The index of the column to sort + The column to sort + The direction the column is to be sorted + Specifies whether a stable sorting method + should be used to sort the column + + + + Returns whether a Column exists at the specified index in the + Table's ColumnModel + + The index of the column to check + True if a Column exists at the specified index in the + Table's ColumnModel, false otherwise + + + + 获取或设置Table组件的边框样式 + + + + + 获取Table组件的边框宽度 + + + + + Gets the last known cell position that the mouse was over + + + + + Gets the last known cell position that the mouse's left + button was pressed in + + + + + Gets or sets the position of the Cell that currently has focus + + + + + Gets or sets the amount of time (in milliseconds) that that the + mouse pointer must hover over a Cell or Column Header before + a MouseHover event is raised + + + + + Gets the rectangle that represents the "client area" of the control. + (The rectangle excludes the borders and scrollbars) + + + + + Gets the rectangle that represents the "cell data area" of the control. + (The rectangle excludes the borders, column headers and scrollbars) + + + + + + + + + + 获取或设置包含表中显示的所有列的ColumnModel + + + + + 获取或设置表是否允许用户调整列宽 + + + + + 返回表中的列数 + + + + + 返回当前排序的列的序号 + + + + + 获取或设置当前排序的列的背景颜色 + + + + + Specifies whether the Table's SortedColumnBackColor property + should be serialized at design time + + True if the SortedColumnBackColor property should be + serialized, False otherwise + + + + Gets the rectangle that represents the display area of the Table + + + + + 获取表当前是否正在编辑单元格 + + + + + 获取CellPos,该CellPos指定当前正在编辑的单元格的位置 + + + + + 获取当前用于编辑单元格的ICellEditor + + + + + 获取或设置导致启动编辑的操作 + + + + + 获取或设置用于启动单元格编辑的自定义快捷键 + + + + + 获取或设置网格线在行和列周围的显示方式 + + + + + 获取或设置用于绘制网格的线条的样式 + + + + + 获取或设置网格线的颜色 + + + + + Specifies whether the Table's GridColor property + should be serialized at design time + + True if the GridColor property should be + serialized, False otherwise + + + + + + + + + Specifies whether the Table's BackColor property + should be serialized at design time + + True if the BackColor property should be + serialized, False otherwise + + + + 获取或设置列标题样式 + + + + + 获取列标题的高度 + + + + + 获取一个矩形,该矩形指定表的列标题区域的大小和位置 + + + + + 获取或设置用于在列标题中绘制文本的字体 + + + + + Specifies whether the Table's HeaderFont property + should be serialized at design time + + True if the HeaderFont property should be + serialized, False otherwise + + + + Gets or sets the HeaderRenderer used to draw the Column headers + + + + + 获取用于列标题的菜单控件 + + + + + 获取或设置当用户右键单击列标题时是否能够显示菜单 + + + + + 获取或设置行高 + + + + + 总行高 + + + + + 获取表中所有行的组合高度加上列标题的高度 + + + + + 返回Table组件行数 + + + + + 返回Table组件中可见的行数 + + + + + 获取Table组件中首个可见行的序号 + + + + + 获取Table组件中首个可见行 + + + + + 获取或设置Table组件中奇数行的背景色 + + + + + 在数据超过可见区域时,显示滚动条 + + + + + 获取当前水平滚动条是否可见 + + + + + 获取当前垂直滚动条是否可见 + + + + + 获取或设置列是否允许被选中 + + + + + 获取或设置选中列的风格 + + + + + 获取或设置是否允许多选 + + + + + 获取或设置是否整行选中 + + + + + 当Table组件失去焦点时,选中项是否不再突出显示 + + + + + 选中列的背景色 + + + + + Specifies whether the Table's SelectionBackColor property + should be serialized at design time + + True if the SelectionBackColor property should be + serialized, False otherwise + + + + 选中列的字体颜色 + + + + + Specifies whether the Table's SelectionForeColor property + should be serialized at design time + + True if the SelectionForeColor property should be + serialized, False otherwise + + + + 当Table组件没有获取焦点时,选中列的背景色 + + + + + Specifies whether the Table's UnfocusedSelectionBackColor property + should be serialized at design time + + True if the UnfocusedSelectionBackColor property should be + serialized, False otherwise + + + + 当Table组件没有获取焦点时,选中列的字体颜色 + + + + + Specifies whether the Table's UnfocusedSelectionForeColor property + should be serialized at design time + + True if the UnfocusedSelectionForeColor property should be + serialized, False otherwise + + + + 选中行的集合 + + + + + 选中行的序号集合 + + + + + Gets or sets the TableModel that contains all the Rows + and Cells displayed in the Table + + + + + Gets or sets the text displayed by the Table when it doesn't + contain any items + + + + + Gets or sets the current state of the Table + + + + + Calculates the state of the Table at the specified + client coordinates + + The client x coordinate + The client y coordinate + + + + Gets whether the Table is able to raise events + + + + + Gets or sets whether the Table is being used as a preview Table in + a ColumnCollectionEditor + + + + + 获取内部工具提示组件 + + + + + 获取或设置当前是否为表启用工具提示 + + + + + 获取或设置工具提示的自动延迟 + + + + + 获取或设置当指针在具有指定工具提示文本的控件内保持静止时,工具提示保持可见的时间期限。 + + + + + 获取或设置工具提示显示之前经过的时间。 + + + + + 获取或设置一个值,该值指示是否显示工具提示窗口,甚至是在其父控件不活动的时候。 + + + + + + + + + + Raises the CellPropertyChanged event + + A CellEventArgs that contains the event data + + + + Handler for a Cells PropertyChanged event + + The object that raised the event + A CellEventArgs that contains the event data + + + + Raises the CellButtonClicked event + + A CellButtonEventArgs that contains the event data + + + + Raises the CellCheckChanged event + + A CellCheckChanged that contains the event data + + + + Raises the CellGotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the GotFocus event for the Cell at the specified position + + The position of the Cell that gained focus + + + + Raises the CellLostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event for the Cell at the specified position + + The position of the Cell that lost focus + + + + Raises the CellKeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises a KeyDown event for the Cell at the specified cell position + + The position of the Cell + A KeyEventArgs that contains the event data + + + + Raises the CellKeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises a KeyUp event for the Cell at the specified cell position + + The position of the Cell + A KeyEventArgs that contains the event data + + + + Raises the CellMouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseEnter event for the Cell at the specified cell position + + The position of the Cell + + + + Raises the CellMouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseLeave event for the Cell at the specified cell position + + The position of the Cell + + + + Raises the CellMouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseUp event for the Cell at the specified cell position + + The position of the Cell + A MouseEventArgs that contains the event data + + + + Raises the CellMouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseDown event for the Cell at the specified cell position + + The position of the Cell + A MouseEventArgs that contains the event data + + + + Raises the CellMouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseMove event for the Cell at the specified cell position + + The position of the Cell + A MouseEventArgs that contains the event data + + + + Resets the last known cell position that the mouse was over to empty + + + + + Raises the CellHover event + + A CellEventArgs that contains the event data + + + + Raises the CellClick event + + A CellEventArgs that contains the event data + + + + Raises the CellDoubleClick event + + A CellEventArgs that contains the event data + + + + Raises the ColumnPropertyChanged event + + A ColumnEventArgs that contains the event data + + + + Raises the HeaderMouseEnter event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseEnter event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + + + + Raises the HeaderMouseLeave event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseLeave event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + + + + Raises the HeaderMouseUp event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseUp event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderMouseDown event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseDown event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderMouseMove event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseMove event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + A HeaderMouseEventArgs that contains the event data + + + + Resets the current "hot" column + + + + + Raises the HeaderMouseHover event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderClick event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderDoubleClick event + + A HeaderMouseEventArgs that contains the event data + + + + 计算当前列所有数据中最长字符串的宽度 chenbo add 2012-03-14 + + + + + Raises the ColumnModelChanged event + + An EventArgs that contains the event data + + + + Raises the ColumnAdded event + + A ColumnModelEventArgs that contains the event data + + + + Raises the ColumnRemoved event + + A ColumnModelEventArgs that contains the event data + + + + Raises the HeaderHeightChanged event + + An EventArgs that contains the event data + + + + Raises the BeginEditing event + + A CellEditEventArgs that contains the event data + + + + Raises the EditingStopped event + + A CellEditEventArgs that contains the event data + + + + Raises the EditingCancelled event + + A CellEditEventArgs that contains the event data + + + + Raises the GotFocus event + + An EventArgs that contains the event data + + + + Raises the LostFocus event + + An EventArgs that contains the event data + + + + Raises the KeyDown event + + A KeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A KeyEventArgs that contains the event data + + + + Raises the Layout event + + A LayoutEventArgs that contains the event data + + + + Raises the MouseUp event + + A MouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A MouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A MouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + An EventArgs that contains the event data + + + + Raises the MouseWheel event + + A MouseEventArgs that contains the event data + + + + Raises the MouseHover event + + An EventArgs that contains the event data + + + + Raises the Click event + + An EventArgs that contains the event data + + + + Raises the DoubleClick event + + An EventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintEventArgs that contains the event data + + + + Raises the Paint event + + A PaintEventArgs that contains the event data + + + + Draws a reversible line at the specified screen x-coordinate + that is the height of the PseudoClientRect + + The screen x-coordinate of the reversible line + to be drawn + + + + Paints the Table's border + + A PaintEventArgs that contains the event data + + + + Paints the Cell at the specified row and column indexes + + A PaintEventArgs that contains the event data + The index of the row that contains the cell to be painted + The index of the column that contains the cell to be painted + The bounding Rectangle of the Cell + + + + Raises the BeforePaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the AfterPaintCell event + + A PaintCellEventArgs that contains the event data + + + + Paints the Table's grid + + A PaintEventArgs that contains the event data + + + + Paints the Table's Column headers + + A PaintEventArgs that contains the event data + + + + Raises the BeforePaintHeader event + + A PaintCellEventArgs that contains the event data + + + + Raises the AfterPaintHeader event + + A PaintHeaderEventArgs that contains the event data + + + + Paints the Table's Rows + + A PaintEventArgs that contains the event data + + + + Paints the Row at the specified index + + A PaintEventArgs that contains the event data + The index of the Row to be painted + The bounding Rectangle of the Row to be painted + + + + Paints the message that is displayed when the Table doen't + contain any items + + A PaintEventArgs that contains the event data + + + + Raises the RowPropertyChanged event + + A RowEventArgs that contains the event data + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Occurs when the Table's horizontal scrollbar is scrolled + + The object that Raised the event + A ScrollEventArgs that contains the event data + + + + Occurs when the Table's vertical scrollbar is scrolled + + The object that Raised the event + A ScrollEventArgs that contains the event data + + + + Handler for a ScrollBars GotFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Raises the BeginSort event + + A ColumnEventArgs that contains the event data + + + + Raises the EndSort event + + A ColumnEventArgs that contains the event data + + + + Raises the TableModelChanged event + + An EventArgs that contains the event data + + + + Raises the SelectionChanged event + + A TableModelEventArgs that contains the event data + + + + Raises the RowHeightChanged event + + An EventArgs that contains the event data + + + + Raises the RowAdded event + + A TableModelEventArgs that contains the event data + + + + Raises the RowRemoved event + + A TableModelEventArgs that contains the event data + + + + Represents a collection of Rows and Cells displayed in a Table. + + + + + Occurs when a Row is added to the TableModel + + + + + Occurs when a Row is removed from the TableModel + + + + + Occurs when the value of the TableModel Selection property changes + + + + + Occurs when the value of the RowHeight property changes + + + + + 默认行高 + + + + + 最小行高 + + + + + 最大行高 + + + + + The collection of Rows's contained in the TableModel + + + + + The Table that the TableModel belongs to + + + + + 当前选定的行和列 + + + + + 行高 + + + + + Initializes a new instance of the TableModel class with default settings + + + + + Initializes a new instance of the TableModel class with an array of Row objects + + An array of Row objects that represent the Rows + of the TableModel + + + + Initialise default settings + + + + + Releases the unmanaged resources used by the TableModel and optionally + releases the managed resources + + + + + Returns the index of the Row that lies on the specified position + + The y-coordinate to check + The index of the Row at the specified position or -1 if + no Row is found + + + + Gets the Cell located at the specified row index and column index + + The row index of the Cell + The column index of the Cell + + + + Gets the Cell located at the specified cell position + + The position of the Cell + + + + A TableModel.RowCollection representing the collection of + Rows contained within the TableModel + + + + + A TableModel.Selection representing the collection of selected + Rows and Cells contained within the TableModel + + + + + 获取或设置行高 + + + + + Specifies whether the RowHeight property should be serialized at + design time + + true if the RowHeight property should be serialized, + false otherwise + + + + 总行高,等于列表总行数乘以行高 + + + + + 获取 TableModel 所属的Table组件 + + + + + Gets or sets the Table the TableModel belongs to + + + + + Gets whether the TableModel is able to raise events + + + + + 获取 TableModel组件是否可用(根据所属Table组件进行判断) + + + + + Updates the Row's Index property so that it matches the Rows + position in the RowCollection + + The index to start updating from + + + + Raises the RowAdded event + + A TableModelEventArgs that contains the event data + + + + Raises the RowRemoved event + + A TableModelEventArgs that contains the event data + + + + Raises the SelectionChanged event + + A SelectionEventArgs that contains the event data + + + + Raises the RowHeightChanged event + + An EventArgs that contains the event data + + + + Raises the RowPropertyChanged event + + A RowEventArgs that contains the event data + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Raises the CellPropertyChanged event + + A CellEventArgs that contains the event data + + + + Represents the collection of selected Rows and Cells in a TableModel. + + + + + The TableModel that owns the Selection + + + + + The list of Rows that have selected Cells + + + + + The starting cell of a selection that uses the shift key + + + + + The ending cell of a selection that uses the shift key + + + + + Initializes a new instance of the TableModel.Selection class + that belongs to the specified TableModel + + A TableModel representing the tableModel that owns + the Selection + + + + Replaces the currently selected Cells with the Cell at the specified + row and column indexes + + The row index of the Cell to be selected + The column index of the Cell to be selected + + + + Replaces the currently selected Cells with the Cell at the specified CellPos + + A CellPos thst specifies the row and column indicies of + the Cell to be selected + + + + Replaces the currently selected Cells with the Cells located between the specified + start and end row/column indicies + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + + + + Replaces the currently selected Cells with the Cells located between the specified + start and end CellPos + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + + + + Adds the Cell at the specified row and column indicies to the current selection + + The row index of the Cell to add to the selection + The column index of the Cell to add to the selection + + + + Adds the Cell at the specified row and column indicies to the current selection + + A CellPos that specifies the Cell to add to the selection + + + + Adds the Cells located between the specified start and end row/column indicies + to the current selection + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + + + + Adds the Cells located between the specified start and end CellPos to the + current selection + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + + + + Adds the Cells located between the specified start and end CellPos to the + current selection without raising an event + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + true if any Cells were added, false otherwise + + + + Adds the Cells located between the specified start and end row/column indicies + to the current selection without raising an event + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + true if any Cells were added, false otherwise + + + + Adds the Cells between the last selection start Cell and the Cell at the + specified row/column indicies to the current selection. Any Cells that are + between the last start and end Cells that are not in the new area are + removed from the current selection + + The row index of the shift selected Cell + The column index of the shift selected Cell + + + + Adds the Cells between the last selection start Cell and the Cell at the + specified CellPas to the current selection. Any Cells that are + between the last start and end Cells that are not in the new area are + removed from the current selection + + A CellPos that specifies the shift selected Cell + + + + Ensures that the first index is smaller than the second index, + performing a swap if necessary + + The first index + The second index + + + + Removes all selected Rows and Cells from the selection + + + + + Removes all selected Rows and Cells from the selection without raising an event + + + + + Removes the Cell at the specified row and column indicies from the current selection + + The row index of the Cell to remove from the selection + The column index of the Cell to remove from the selection + + + + Removes the Cell at the specified row and column indicies from the current selection + + A CellPos that specifies the Cell to remove from the selection + + + + Removes the Cells located between the specified start and end row/column indicies + from the current selection + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + + + + Removes the Cells located between the specified start and end CellPos from the + current selection + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + + + + Removes the Cells located between the specified start and end CellPos from the + current selection without raising an event + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + true if any Cells were added, false otherwise + + + + Removes the Cells located between the specified start and end row/column indicies + from the current selection without raising an event + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + true if any Cells were added, false otherwise + + + + Removes the specified Row from the selection + + The Row to be removed from the selection + + + + Returns whether the Cell at the specified row and column indicies is + currently selected + + The row index of the specified Cell + The column index of the specified Cell + true if the Cell at the specified row and column indicies is + selected, false otherwise + + + + Returns whether the Cell at the specified CellPos is currently selected + + A CellPos the represents the row and column indicies + of the Cell to check + true if the Cell at the specified CellPos is currently selected, + false otherwise + + + + Returns whether the Row at the specified index in th TableModel is + currently selected + + The index of the Row to check + true if the Row at the specified index is currently selected, + false otherwise + + + + Gets an array that contains the currently selected Rows + + + + + Gets an array that contains the indexes of the currently selected Rows + + + + + Returns a Rectange that bounds the currently selected Rows + + + + + + + + + + + + + Specifies the part of the Table the user has clicked + + + + + A cell in the Table + + + + + A column header in the Table + + + + + The non-client area of a Table, such as the border + + + + + The click occured outside ot the Table + + + + + Specifies the current state of the Table + + + + + The Table is in its normal state + + + + + The Table is selecting a Column + + + + + The Table is resizing a Column + + + + + The Table is editing a Cell + + + + + The Table is sorting a Column + + + + + The Table is selecting Cells + + + + + Summary description for TextColumn. + + + + + Creates a new TextColumn with default values + + + + + Creates a new TextColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new TextColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new TextColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new TextColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new TextColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new TextColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + A CellRenderer that draws Cell contents as Buttons + + + + + Specifies the alignment of the Image displayed on the button + + + + + Initializes a new instance of the ButtonCellRenderer class with + default settings + + + + + Gets the ButtonCellRenderer specific data used by the Renderer from + the specified Cell + + The Cell to get the ButtonCellRenderer data for + The ButtonCellRenderer data for the specified Cell + + + + Returns a Rectangle that specifies the size and location of the button + + A Rectangle that specifies the size and location of the button + + + + Returns a Rectangle that specifies the size and location of the buttons Image + + The buttons image + The alignment of the image + A Rectangle that specifies the size and location of the buttons Image + + + + Gets or sets the alignment of the Image displayed on the buttons + + + + + Raises the GotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Draws the Image displayed on the button + + The Graphics to draw on + The Image to draw + A Rectangle that specifies the location + of the Image + Specifies whether the Image should be drawn + in an enabled state + + + + Contains information about the current state of a Cell's button + + + + + The current state of the button + + + + + The x coordinate of the last mouse click point + + + + + The y coordinate of the last mouse click point + + + + + Initializes a new instance of the ButtonRendererData class + + + + + Gets or sets the current state of the button + + + + + Gets or sets the Point that the mouse was last clicked in the button + + + + + Base class for Renderers that draw Cells + + + + + A string that specifies how a Cells contents are formatted + + + + + The Brush used to draw disabled text + + + + + The amount of padding for the cell being rendered + + + + + Initializes a new instance of the CellRenderer class with default settings + + + + + Releases the unmanaged resources used by the Renderer and + optionally releases the managed resources + + + + + Gets the renderer specific data used by the Renderer from + the specified Cell + + The Cell to get the renderer data for + The renderer data for the specified Cell + + + + Sets the specified renderer specific data used by the Renderer for + the specified Cell + + The Cell for which the data is to be stored + The renderer specific data to be stored + + + + Overrides Renderer.ClientRectangle + + + + + Gets or sets the string that specifies how a Cells contents are formatted + + + + + Gets the Brush used to draw disabled text + + + + + Gets or sets the amount of padding around the Cell being rendered + + + + + Raises the GotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the Click event + + A CellMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBorder event + + A PaintCellEventArgs that contains the event data + The pen used to draw the border + + + + A CellRenderer that draws Cell contents as CheckBoxes + + + + + The size of the checkbox + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + Initializes a new instance of the CheckBoxCellRenderer class with + default settings + + + + + Gets the Rectangle that specifies the Size and Location of + the check box contained in the current Cell + + A Rectangle that specifies the Size and Location of + the check box contained in the current Cell + + + + Gets the CheckBoxCellRenderer specific data used by the Renderer from + the specified Cell + + The Cell to get the CheckBoxCellRenderer data for + The CheckBoxCellRenderer data for the specified Cell + + + + Corrects any differences between the check state of the specified Cell + and the check state in its rendererData + + The Cell to chech + The CheckBoxRendererData to check + + + + Gets the size of the checkbox + + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Contains information about the current state of a Cell's check box + + + + + The current state of the Cells check box + + + + + Initializes a new instance of the ButtonRendererData class with the + specified CheckBox state + + The current state of the Cells CheckBox + + + + Gets or sets the current state of the Cells checkbox + + + + + A CellRenderer that draws Cell contents as Buttons + + + + + Specifies whether the Cells Color should be drawn + + + + + Specifies whether the Cells Color name should be drawn + + + + + Initializes a new instance of the ColorCellRenderer class with + default settings + + + + + Returns a Rectangle that specifies the size and location of the Color + rectangle + + The alignment of the Cells Row + The alignment of the Cells Column + A Rectangle that specifies the size and location of the Color + rectangle + + + + Gets or sets whether the Cells Color should be drawn + + + + + Gets or sets whether the Cells Color name should be drawn + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + A CellRenderer that draws Cell contents as a ComboBox + + + + + Initializes a new instance of the ComboBoxCellRenderer class with + default settings + + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + A CellRenderer that draws Cell contents as a DateTime + + + + + The format of the date and time displayed in the Cell + + + + + Initializes a new instance of the DateTimeCellRenderer class with + default settings + + + + + Gets or sets the format of the date and time displayed in the Cell + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Draws the DateTime text + + The DateTime value to be drawn + The Graphics to draw on + The Brush to draw the text with + A Rectangle that specifies the bounds of the text + + + + Base class for CellRenderers that Cell contents like ComboBoxes + + + + + The width of the DropDownCellRenderer's dropdown button + + + + + Specifies whether the DropDownCellRenderer dropdown button should be drawn + + + + + Initializes a new instance of the DropDownCellRenderer class with + default settings + + + + + Gets the Rectangle that specifies the Size and Location of + the current Cell's dropdown button + + A Rectangle that specifies the Size and Location of + the current Cell's dropdown button + + + + Gets the DropDownRendererData specific data used by the Renderer from + the specified Cell + + The Cell to get the DropDownRendererData data for + The DropDownRendererData data for the specified Cell + + + + Gets or sets the width of the dropdown button + + + + + Gets or sets whether the DropDownCellRenderer dropdown button should be drawn + + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Paints the Cells background + + A PaintCellEventArgs that contains the event data + + + + Contains information about the current state of a DropDownRenderer's button + + + + + The current state of the button + + + + + The x coordinate of the last mouse click point + + + + + The y coordinate of the last mouse click point + + + + + Initializes a new instance of the DropDownRendererData class + + + + + Gets or sets the current state of the button + + + + + Gets or sets the Point that the mouse was last clicked in the button + + + + + A HeaderRenderer that draws flat Column headers + + + + + Initializes a new instance of the XPHeaderRenderer class + with default settings + + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + A HeaderRenderer that draws gradient Column headers + + + + + The start Color of the gradient + + + + + The ned Color of the gradient + + + + + The Color of the Column header when it is pressed + + + + + Initializes a new instance of the GradientHeaderRenderer class + with default settings + + + + + Gets or sets the start Color of the gradient + + + + + Gets or sets the end Color of the gradient + + + + + Gets or sets the Color of the Column header when it is pressed + + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + Base class for Renderers that draw Column headers + + + + + Initializes a new instance of the HeaderRenderer class with default settings + + + + + Returns a Rectangle that represents the size and location of the Image + displayed on the ColumnHeader + + A Rectangle that represents the size and location of the Image + displayed on the ColumnHeader + + + + Returns a Rectangle that represents the size and location of the sort arrow + + A Rectangle that represents the size and location of the sort arrow + + + + Overrides Renderer.ClientRectangle + + + + + Raises the MouseEnter event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the Click event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the PaintHeader event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + Draws the Image contained in the ColumnHeader + + The Graphics used to paint the Image + The Image to be drawn + A rectangle that specifies the Size and + Location of the Image + Specifies whether the Image should be drawn + in an enabled state + + + + Draws the ColumnHeader's sort arrow + + The Graphics to draw on + A Rectangle that specifies the location + of the sort arrow + The direction of the sort arrow + Specifies whether the sort arrow should be + drawn in an enabled state + + + + Exposes common methods provided by Cell renderers + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the GotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the Click event + + A CellMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A CellMouseEventArgs that contains the event data + + + + Exposes common methods provided by Column header renderers + + + + + Raises the PaintHeader event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the MouseEnter event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the Click event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A HeaderMouseEventArgs that contains the event data + + + + A CellRenderer that draws Cell contents as Images + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + Initializes a new instance of the ImageCellRenderer class with + default settings + + + + + Gets the Rectangle that specifies the Size and Location of + the Image contained in the current Cell + + The Image to be drawn + An ImageSizeMode that specifies how the + specified Image is scaled + The alignment of the current Cell's row + The alignment of the current Cell's Column + A Rectangle that specifies the Size and Location of + the Image contained in the current Cell + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Draws the Image contained in the Cell + + The Graphics used to paint the Image + The Image to be drawn + A rectangle that specifies the Size and + Location of the Image + Specifies whether the image is to be scaled + Specifies whether the Image should be drawn + in an enabled state + + + + Exposes common methods provided by renderers + + + + + Gets a Rectangle that represents the client area of the object + being rendered + + + + + Gets or sets a Rectangle that represents the size and location + of the object being rendered + + + + + Gets or sets the font of the text displayed by the object being + rendered + + + + + Gets or sets the foreground color of the object being rendered + + + + + Gets or sets the background color for the object being rendered + + + + + Gets or sets how the Renderers contents are aligned horizontally + + + + + Gets or sets how the Renderers contents are aligned vertically + + + + + A base class for drawing Cells contents as numbers + + + + + The width of the ComboBox's dropdown button + + + + + Specifies whether the up and down buttons should be drawn + + + + + The alignment of the up and down buttons in the Cell + + + + + The maximum value for the Cell + + + + + The minimum value for the Cell + + + + + Initializes a new instance of the NumberCellRenderer class with + default settings + + + + + Returns a Rectangle that specifies the size and location of the + up and down buttons + + A Rectangle that specifies the size and location of the + up and down buttons + + + + Returns a Rectangle that specifies the size and location of the up button + + A Rectangle that specifies the size and location of the up button + + + + Returns a Rectangle that specifies the size and location of the down button + + A Rectangle that specifies the size and location of the down button + + + + Gets the NumberRendererData specific data used by the Renderer from + the specified Cell + + The Cell to get the NumberRendererData data for + The NumberRendererData data for the specified Cell + + + + Gets whether the specified Table is using a NumericCellEditor to edit the + Cell at the specified CellPos + + The Table to check + A CellPos that represents the Cell to check + true if the specified Table is using a NumericCellEditor to edit the + Cell at the specified CellPos, false otherwise + + + + Gets or sets the width of the dropdown button + + + + + Gets or sets whether the up and down buttons should be drawn + + + + + Gets or sets the alignment of the up and down buttons in the Cell + + + + + Gets or sets the maximum value for the Cell + + + + + Gets or sets the minimum value for the Cell + + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Contains information about the current state of a number Cell's + up and down buttons + + + + + The current state of the up button + + + + + The current state of the down button + + + + + The x coordinate of the last mouse click point + + + + + The y coordinate of the last mouse click point + + + + + Initializes a new instance of the NumberRendererData class + + + + + Gets or sets the current state of the up button + + + + + Gets or sets the current state of the down button + + + + + Gets or sets the Point that the mouse was last clicked in a button + + + + + A CellRenderer that draws Cell contents as a ProgressBar + + + + + Specifies whether the ProgressBar's value as a string + should be displayed + + + + + Initializes a new instance of the ProgressBarCellRenderer class with + default settings + + + + + Gets the rectangle that represents the client area of the Renderer + + + + + Gets or sets whether the ProgressBar's value as a string + should be displayed + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Base class for Renderers + + + + + A StringFormat object that specifies how the Renderers + contents are drawn + + + + + The brush used to draw the Renderers background + + + + + The brush used to draw the Renderers foreground + + + + + A Rectangle that specifies the size and location of the Renderer + + + + + The Font of the text displayed by the Renderer + + + + + The width of a Cells border + + + + + Initializes a new instance of the Renderer class with default settings + + + + + Releases the unmanaged resources used by the Renderer and + optionally releases the managed resources + + + + + Sets the color of the brush used to draw the background + + The color of the brush + + + + Sets the color of the brush used to draw the foreground + + The color of the brush + + + + Gets the rectangle that represents the client area of the Renderer + + + + + Gets or sets the size and location of the Renderer + + + + + Gets or sets the font of the text displayed by the Renderer + + + + + Gets the brush used to draw the Renderers background + + + + + Gets the brush used to draw the Renderers foreground + + + + + Gets or sets the foreground Color of the Renderer + + + + + Gets or sets the background Color of the Renderer + + + + + Gets or sets a StringFormat object that specifies how the Renderers + contents are drawn + + + + + Gets or sets a StringTrimming enumeration that indicates how text that + is drawn by the Renderer is trimmed when it exceeds the edges of the + layout rectangle + + + + + Gets or sets how the Renderers contents are aligned horizontally + + + + + Gets or sets how the Renderers contents are aligned vertically + + + + + Gets whether Visual Styles are enabled for the application + + + + + A CellRenderer that draws Cell contents as strings + + + + + Initializes a new instance of the TextCellRenderer class with + default settings + + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + A HeaderRenderer that draws Windows XP themed Column headers + + + + + Initializes a new instance of the XPHeaderRenderer class + with default settings + + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + An IComparer for sorting Cells that contain CheckBoxes + + + + + Initializes a new instance of the CheckBoxComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + An IComparer for sorting Cells that contain Color information + + + + + Initializes a new instance of the ColorComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Base class for comparers used to sort the Cells contained in a TableModel + + + + + The TableModel that contains the Cells to be sorted + + + + + The index of the Column to be sorted + + + + + Specifies how the Column is to be sorted + + + + + Initializes a new instance of the ComparerBase class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Gets the TableModel that contains the Cells to be sorted + + + + + Gets the index of the Column to be sorted + + + + + Gets how the Column is to be sorted + + + + + An IComparer for sorting Cells that contain DateTime information + + + + + Initializes a new instance of the DateTimeComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + A HeapSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the HeapSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + + + + + + + + An IComparer for sorting Cells that contain Images + + + + + Initializes a new instance of the ImageComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + An InsertionSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the InsertionSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + A MergeSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the MergeSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + + + + + + + + An IComparer for sorting Cells that contain numbers + + + + + Initializes a new instance of the NumberComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + A ShellSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the ShellSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + Base class for the sorters used to sort the Cells contained in a TableModel + + + + + The TableModel that contains the Cells to be sorted + + + + + The index of the Column to be sorted + + + + + The IComparer used to sort the Column's Cells + + + + + Specifies how the Column is to be sorted + + + + + Initializes a new instance of the SorterBase class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Starts sorting the Cells in the TableModel + + + + + Swaps the Rows in the TableModel at the specified indexes + + The index of the first Row to be swapped + The index of the second Row to be swapped + + + + Replaces the Row in the TableModel located at index a with the Row + located at index b + + The index of the Row that will be replaced + The index of the Row that will be moved to index a + + + + Replaces the Row in the TableModel located at index a with the specified Row + + The index of the Row that will be replaced + The Row that will be moved to index a + + + + Gets the TableModel that contains the Cells to be sorted + + + + + Gets the index of the Column to be sorted + + + + + Gets the IComparer used to sort the Column's Cells + + + + + Gets how the Column is to be sorted + + + + + An IComparer for sorting Cells that contain strings + + + + + Initializes a new instance of the TextComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Represents the type of Buttons that can be drawn by the Windows XP theme engine + + + + + A normal Button + + + + + A RadioButton + + + + + A CheckBox button + + + + + Represents the different states of a CheckBox + + + + + The CheckBox is unchecked and in its normal state + + + + + The CheckBox is unchecked and is currently highlighted + + + + + The CheckBox is unchecked and is currently pressed by + the mouse + + + + + The CheckBox is unchecked and is disabled + + + + + The CheckBox is checked and in its normal state + + + + + The CheckBox is checked and is currently highlighted + + + + + The CheckBox is checked and is currently pressed by the + mouse + + + + + The CheckBox is checked and is disabled + + + + + The CheckBox is in an indeterminate state + + + + + The CheckBox is in an indeterminate state and is currently + highlighted + + + + + The CheckBox is in an indeterminate state and is currently + pressed by the mouse + + + + + The CheckBox is in an indeterminate state and is disabled + + + + + Represents the different parts of a Column Header that can be + drawn by the Windows XP theme engine + + + + + A Column Header + + + + + Represents the different states of a Column Header + + + + + The Column Header is in its normal state + + + + + The Column Header is highlighted + + + + + The Column Header is being pressed by the mouse + + + + + Represents the different parts of a ComboBox that can be + drawn by the Windows XP theme engine + + + + + A ComboBox's dropdown arrow button + + + + + Represents the different states of a ComboBox + + + + + The ColumnBox dropdown button is in its normal state + + + + + The ColumnBox dropdown button is highlighted + + + + + The ColumnBox dropdown button is being pressed by the mouse + + + + + The ColumnBox dropdown button is disabled + + + + + Represents the different parts of a ListView that can be + drawn by the Windows XP theme engine + + + + + A ListView's border and background + + + + + Represents the different states of a ListView + + + + + The ListView is in its normal state + + + + + The ListView is highlighted + + + + + The ListView is selected + + + + + The ListView is disabled + + + + + The ListView is selected but does not have focus + + + + + Represents the different parts of a ProgressBar that can be + drawn by the Windows XP theme engine + + + + + The ProgressBar's background and border + + + + + The ProgressBar's contents + + + + + Represents the different states of a Button + + + + + The Button is in its normal state + + + + + The Button is highlighted + + + + + The Button is being pressed by the mouse + + + + + The Button is disabled + + + + + The Button is the default button + + + + + Represents the different states of a RadioButton + + + + + The RadioButton is unchecked and in its normal state + + + + + The RadioButton is unchecked and is currently highlighted + + + + + The RadioButton is unchecked and is currently pressed by + the mouse + + + + + The RadioButton is unchecked and is disabled + + + + + The RadioButton is checked and in its normal state + + + + + The RadioButton is checked and is currently highlighted + + + + + The RadioButton is checked and is currently pressed by the + mouse + + + + + The RadioButton is checked and is disabled + + + + + Represents the different parts of a ScrollBar control that can be + drawn by the Windows XP theme engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the different states of a ScrollBar control's buttons and track + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the type of Buttons that can be drawn by the Windows XP theme engine + + + + + The body of a TabPage + + + + + Represents the different parts of a TextBox that can be + drawn by the Windows XP theme engine + + + + + The TextBox's border and background + + + + + Represents the different states of a TextBox + + + + + The TextBox is in its normal state + + + + + The TextBox is highlighted + + + + + The TextBox is selected + + + + + The TextBox is disabled + + + + + The TextBox has focus + + + + + The TextBox is readonly + + + + + Represents the different types of objects that can be + drawn by the Windows XP theme engine + + + + + Private constructor so that the class can't be instantiated + + + + + Button objects (Button, CheckBox, RadioButton) + + + + + ComboBox objects + + + + + TextBox objects + + + + + ColumnHeader objects + + + + + ListView objects + + + + + ProgressBar objects + + + + + TabControl objects + + + + + UpDown objects + + + + + A class that contains methods for drawing Windows XP themed Control parts + + + + + Initializes a new instance of the ThemeManager class with default settings + + + + + Draws a push button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the button + A PushButtonStates value that specifies the + state to draw the button in + + + + Draws a push button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the button + The Rectangle that represents the clipping area + A PushButtonStates value that specifies the + state to draw the button in + + + + Converts the specified PushButtonStates value to a ButtonState value + + The PushButtonStates value to be converted + A ButtonState value that represents the specified PushButtonStates + value + + + + Draws a check box in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the check box + A CheckBoxStates value that specifies the + state to draw the check box in + + + + Draws a check box in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the check box + The Rectangle that represents the clipping area + A CheckBoxStates value that specifies the + state to draw the check box in + + + + Converts the specified CheckBoxStates value to a ButtonState value + + The CheckBoxStates value to be converted + A ButtonState value that represents the specified CheckBoxStates + value + + + + Returns whether the specified CheckBoxStates value is in an + indeterminate state + + The CheckBoxStates value to be checked + true if the specified CheckBoxStates value is in an + indeterminate state, false otherwise + + + + Draws a column header in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the column header + A ColumnHeaderStates value that specifies the + state to draw the column header in + + + + Draws a column header in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the column header + The Rectangle that represents the clipping area + A ColumnHeaderStates value that specifies the + state to draw the column header in + + + + Draws a combobox button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the combobox button + A ComboBoxStates value that specifies the + state to draw the combobox button in + + + + Draws a combobox button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the button + The Rectangle that represents the clipping area + A ComboBoxStates value that specifies the + state to draw the combobox button in + + + + Converts the specified ComboBoxStates value to a ButtonState value + + The ComboBoxStates value to be converted + A ButtonState value that represents the specified ComboBoxStates + value + + + + Draws a ProgressBar on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + + + + Draws a ProgressBar on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + The Rectangle that represents the clipping area + + + + Draws the ProgressBar's chunks on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + + + + Draws the ProgressBar's chunks on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + The Rectangle that represents the clipping area + + + + Draws a RadioButton in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the RadioButton + A RadioButtonStates value that specifies the + state to draw the RadioButton in + + + + Draws a RadioButton in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the RadioButton + The Rectangle that represents the clipping area + A RadioButtonStates value that specifies the + state to draw the RadioButton in + + + + Converts the specified RadioButtonStates value to a ButtonState value + + The RadioButtonStates value to be converted + A ButtonState value that represents the specified RadioButtonStates + value + + + + Draws a TabPage body on the specified graphics surface, and within the + specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TabPage body + + + + Draws a TabPage body on the specified graphics surface, and within the + specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TabPage body + The Rectangle that represents the clipping area + + + + Draws a TextBox in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TextBox + A TextBoxStates value that specifies the + state to draw the TextBox in + + + + Draws a TextBox in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TextBox + The Rectangle that represents the clipping area + A TextBoxStates value that specifies the + state to draw the TextBox in + + + + Draws an UpDown's up and down buttons in the specified state, on the specified + graphics surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the up button + An UpDownStates value that specifies the + state to draw the up button in + The Rectangle that represents the dimensions + of the down button + An UpDownStates value that specifies the + state to draw the down button in + + + + Draws an UpDown's up and down buttons in the specified state, on the specified + graphics surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the up button + The Rectangle that represents the clipping area + for the up button + An UpDownStates value that specifies the + state to draw the up button in + The Rectangle that represents the dimensions + of the down button + The Rectangle that represents the clipping area + for the down button + An UpDownStates value that specifies the + state to draw the down button in + + + + Converts the specified UpDownStates value to a ButtonState value + + The UpDownStates value to be converted + A ButtonState value that represents the specified UpDownStates + value + + + + Draws the background image defined by the visual style for the specified control part + + The Graphics to draw on + The class of the part to draw + The part to draw + The state of the part to draw + The Rectangle in which the part is drawn + + + + Draws the background image defined by the visual style for the specified control part + + The Graphics to draw on + The class of the part to draw + The part to draw + The state of the part to draw + The Rectangle in which the part is drawn + The Rectangle that represents the clipping area for the part + + + + Gets whether Visual Styles are supported by the system + + + + + Gets whether Visual Styles are enabled for the application + + + + + Returns a Version object that contains information about the verion + of the CommonControls that the application is using + + A Version object that contains information about the verion + of the CommonControls that the application is using + + + + Represents the different parts of an UpDown control that can be + drawn by the Windows XP theme engine + + + + + An UpDown control's up arrow button + + + + + An UpDown control's down arrow button + + + + + An UpDown control's left arrow button + + + + + An UpDown control's right arrow button + + + + + Represents the different states of a UpDown control's button + + + + + The UpDown button is in its normal state + + + + + The UpDown button is highlighted + + + + + The UpDown button is being pressed by the mouse + + + + + The UpDown button disabled + + + + + Represents the Ascii character values. + + + + + Null character (NUL) + + + + + Start of heading character (SOH) + + + + + Start of text character (STX) + + + + + End of text character (ETX) + + + + + End of transmission character (EOT) + + + + + Enquiry character (ENQ) + + + + + Acknowledge character (ACK) + + + + + Bell character (BEL) + + + + + Backspace character (BS) + + + + + Horizontal tab character (HT) + + + + + Line Feed character (LF) + + + + + Vertical tab character (VT) + + + + + Form Feed character (FF) + + + + + Carriage Return character (CR) + + + + + Shift Out character (SO) + + + + + Shift In character (SI) + + + + + Data link escape character (DLE) + + + + + XON character (DC1) + + + + + Device control 2 character (DC2) + + + + + XOFF character (DC3) + + + + + Device control 4 character (DC4) + + + + + Negative acknowledge character (NAK) + + + + + Synchronous idle character (SYN) + + + + + End transmission block character (ETB) + + + + + Cancel line character (CAN) + + + + + End of medium character (EM) + + + + + Substitute character (SUB) + + + + + Escape character (ESC) + + + + + File separator character (FS) + + + + + Group separator character (GS) + + + + + Record separator character (RS) + + + + + Unit separator character (US) + + + + + Space character (SP) + + + + + Exclamation mark character (!) + + + + + Quotation mark character (") + + + + + Cross hatch character (#) + + + + + Dollar sign character ($) + + + + + Percent sign character (%) + + + + + Ampersand character (&) + + + + + Closing single quote or Apostrophe character (') + + + + + Opening parentheses character (() + + + + + Closing parentheses character ()) + + + + + Asterisk character (*) + + + + + Plus character (+) + + + + + Comma character (,) + + + + + Hyphen character (-) + + + + + FullStop character (.) + + + + + Forward slash character (/) + + + + + Zero (0) + + + + + One character (1) + + + + + Two (2) + + + + + Three (3) + + + + + Four (4) + + + + + Five (5) + + + + + Six (6) + + + + + Seven (7) + + + + + Eight (8) + + + + + Nine (9) + + + + + Colon character (:) + + + + + Semicolon character (;) + + + + + Less than character (<) + + + + + Equals character (=) + + + + + Greater than character (>) + + + + + Question mark character (?) + + + + + At-sign character (@) + + + + + Uppercase A + + + + + Uppercase B + + + + + Uppercase C + + + + + Uppercase D + + + + + Uppercase E + + + + + Uppercase F + + + + + Uppercase G + + + + + Uppercase H + + + + + Uppercase I + + + + + Uppercase J + + + + + Uppercase K + + + + + Uppercase L + + + + + Uppercase M + + + + + Uppercase N + + + + + Uppercase O + + + + + Uppercase P + + + + + Uppercase Q + + + + + Uppercase R + + + + + Uppercase S + + + + + Uppercase T + + + + + Uppercase U + + + + + Uppercase V + + + + + Uppercase W + + + + + Uppercase X + + + + + Uppercase Y + + + + + Uppercase Z + + + + + Opening square bracket character ([) + + + + + Backslash character (\) + + + + + Closing square bracket character (]) + + + + + Caret (Circumflex) character (^) + + + + + Underscore character (_) + + + + + Opening single quote character (`) + + + + + Lowercase a + + + + + Lowercase b + + + + + Lowercase c + + + + + Lowercase d + + + + + Lowercase e + + + + + Lowercase f + + + + + Lowercase g + + + + + Lowercase h + + + + + Lowercase i + + + + + Lowercase j + + + + + Lowercase k + + + + + Lowercase l + + + + + Lowercase m + + + + + Lowercase n + + + + + Lowercase o + + + + + Lowercase p + + + + + Lowercase q + + + + + Lowercase r + + + + + Lowercase s + + + + + Lowercase t + + + + + Lowercase u + + + + + Lowercase v + + + + + Lowercase w + + + + + Lowercase x + + + + + Lowercase y + + + + + Lowercase z + + + + + Opening curly brace character ({) + + + + + Vertical line character (|) + + + + + Closing curly brace character (}) + + + + + Tilde character (~) + + + + + Delete character (DEL) + + + + + Receives dynamic-link library (DLL)-specific version information. + It is used with the DllGetVersion function + + + + + Size of the structure, in bytes. This member must be filled + in before calling the function + + + + + Major version of the DLL. If the DLL's version is 4.0.950, + this value will be 4 + + + + + Minor version of the DLL. If the DLL's version is 4.0.950, + this value will be 0 + + + + + Build number of the DLL. If the DLL's version is 4.0.950, + this value will be 950 + + + + + Identifies the platform for which the DLL was built + + + + + Specifies the flags used with the keybd_event function + + + + + If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224) + + + + + If specified, the key is being released. If not specified, the key is being depressed + + + + + A class that contains methods for P/Invoking the Win32 API + + + + + Implemented by many of the Microsoft?Windows?Shell dynamic-link libraries + (DLLs) to allow applications to obtain DLL-specific version information + + Pointer to a DLLVERSIONINFO structure that receives the + version information. The cbSize member must be filled in before calling + the function + Returns NOERROR if successful, or an OLE-defined error value otherwise + + + + Tests if a visual style for the current application is active + + TRUE if a visual style is enabled, and windows with + visual styles applied should call OpenThemeData to start using + theme drawing services, FALSE otherwise + + + + Reports whether the current application's user interface + displays using visual styles + + TRUE if the application has a visual style applied, + FALSE otherwise + + + + Opens the theme data for a window and its associated class + + Handle of the window for which theme data + is required + Pointer to a string that contains + a semicolon-separated list of classes + OpenThemeData tries to match each class, one at a + time, to a class data section in the active theme. If a match + is found, an associated HTHEME handle is returned. If no match + is found NULL is returned + + + + Closes the theme data handle + + Handle to a window's specified theme data. + Use OpenThemeData to create an HTHEME + Returns S_OK if successful, or an error value otherwise + + + + Draws the background image defined by the visual style for the + specified control part + + Handle to a window's specified theme data. + Use OpenThemeData to create an HTHEME + Handle to a device context (HDC) used for + drawing the theme-defined background image + Value of type int that specifies the part + to draw + Value of type int that specifies the state + of the part to draw + Pointer to a RECT structure that contains the + rectangle, in logical coordinates, in which the background image + is drawn + Pointer to a RECT structure that contains + a clipping rectangle. This parameter may be set to NULL + Returns S_OK if successful, or an error value otherwise + + + + The SendMessage function sends the specified message to a + window or windows. It calls the window procedure for the + specified window and does not return until the window + procedure has processed the message + + Handle to the window whose window procedure will + receive the message + Specifies the message to be sent + Specifies additional message-specific information + Specifies additional message-specific information + The return value specifies the result of the message processing; + it depends on the message sent + + + + The TrackMouseEvent function posts messages when the mouse pointer + leaves a window or hovers over a window for a specified amount of time + + A TRACKMOUSEEVENT structure that contains tracking + information + true if the function succeeds, false otherwise + + + + The PostMessage function places (posts) a message in the message queue associated + with the thread that created the specified window and returns without waiting for + the thread to process the message + + Handle to the window whose window procedure is to receive the + message + Specifies the message to be posted + Specifies additional message-specific information + Specifies additional message-specific information + If the function succeeds, the return value is nonzero. If the function + fails, the return value is zero + + + + The MessageBeep function plays a waveform sound. The waveform sound for each + sound type is identified by an entry in the registry + + Sound type, as identified by an entry in the registry + If the function succeeds, the return value is nonzero. If the function + fails, the return value is zero + + + + The NotifyWinEvent function signals the system that a predefined event occurred. + If any client applications have registered a hook function for the event, the + system calls the client's hook function + + Specifies the event that occurred + Handle to the window that contains the object that generated + the event + Identifies the kind of object that generated the event + Identifies whether the event was generated by an object or + by a child element of the object. If this value is CHILDID_SELF, the event was + generated by the object itself. If not, this value is the child ID of the element + that generated the event + + + + The ScrollWindow function scrolls the contents of the specified window's client area + + Handle to the window where the client area is to be scrolled + Specifies the amount, in device units, of horizontal scrolling. + This parameter must be a negative value to scroll the content of the window to the left + Specifies the amount, in device units, of vertical scrolling. + This parameter must be a negative value to scroll the content of the window up + Pointer to the RECT structure specifying the portion of the + client area to be scrolled. If this parameter is NULL, the entire client area is + scrolled + Pointer to the RECT structure containing the coordinates + of the clipping rectangle. Only device bits within the clipping rectangle are affected. + Bits scrolled from the outside of the rectangle to the inside are painted; bits scrolled + from the inside of the rectangle to the outside are not painted + If the function succeeds, the return value is nonzero. If the function fails, + the return value is zero + + + + The keybd_event function synthesizes a keystroke. The system can use such a synthesized + keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt + handler calls the keybd_event function + + Specifies a virtual-key code + This parameter is not used + Specifies various aspects of function operation + + + + + The PeekMessage function dispatches incoming sent messages, checks the thread message + queue for a posted message, and retrieves the message (if any exist). + + Pointer to an MSG structure that receives message information + Handle to the window whose messages are to be examined. The window + must belong to the current thread. If hWnd is NULL, PeekMessage retrieves messages for + any window that belongs to the current thread. If hWnd is INVALID_HANDLE_VALUE, + PeekMessage retrieves messages whose hWnd value is NULL, as posted by the PostThreadMessage + function + Specifies the value of the first message in the range of messages + to be examined. Use WM_KEYFIRST to specify the first keyboard message or WM_MOUSEFIRST + to specify the first mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, + PeekMessage returns all available messages (that is, no range filtering is performed). + Specifies the value of the last message in the range of messages + to be examined. Use WM_KEYLAST to specify the first keyboard message or WM_MOUSELAST + to specify the last mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, + PeekMessage returns all available messages (that is, no range filtering is performed). + Specifies how messages are handled + If a message is available, the return value is nonzero. If no messages are + available, the return value is zero + + + + The TranslateMessage function translates virtual-key messages into character messages. + The character messages are posted to the calling thread's message queue, to be read the + next time the thread calls the GetMessage or PeekMessage function + + Pointer to an MSG structure that contains message information retrieved + from the calling thread's message queue by using the GetMessage or PeekMessage function + If the message is translated (that is, a character message is posted to the + thread's message queue), the return value is nonzero.If the message is WM_KEYDOWN, + WM_KEYUP, WM_SYSKEYDOWN, or WM_SYSKEYUP, the return value is nonzero, regardless of + the translation. If the message is not translated (that is, a character message is not + posted to the thread's message queue), the return value is zero + + + + The DispatchMessage function dispatches a message to a window procedure. It is typically + used to dispatch a message retrieved by the GetMessage funct + + Pointer to an MSG structure that contains the message + The return value specifies the value returned by the window procedure. Although + its meaning depends on the message being dispatched, the return value generally is ignored + + + + Summary description for NativeWindow + + + + + + + + + + Prevents the delegate being collected + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the NativeWindow class + + + + + Assigns a handle to this window + + The handle to assign to this window + + + + Releases the handle associated with this window + + + + + Invokes the default window procedure associated with this window + + A Message that is associated with the current Windows message + + + + Invokes the default window procedure associated with this window. + It is an error to call this method when the Handle property is 0 + + A Message that is associated with the current Windows message + + + + Handler for the WndProcDelegate + + Handle to the window procedure to receive the message + Specifies the message + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + The return value specifies the result of the message processing and depends + on the message sent + + + + The SetWindowLong function changes an attribute of the specified window. The + function also sets the 32-bit (long) value at the specified offset into the + extra window memory + + Handle to the window and, indirectly, the class to which + the window belongs + Specifies the zero-based offset to the value to be set. + Specifies the replacement value + If the function succeeds, the return value is the previous value of + the specified 32-bit integer. If the function fails, the return value is zero + + + + The SetWindowLong function changes an attribute of the specified window. The + function also sets the 32-bit (long) value at the specified offset into the + extra window memory + + Handle to the window and, indirectly, the class to which + the window belongs + Specifies the zero-based offset to the value to be set. + Specifies the replacement value + If the function succeeds, the return value is the previous value of + the specified 32-bit integer. If the function fails, the return value is zero + + + + The CallWindowProc function passes message information to the specified window + procedure + + Pointer to the previous window procedure. If this value + is obtained by calling the GetWindowLong function with the nIndex parameter set to + GWL_WNDPROC or DWL_DLGPROC, it is actually either the address of a window or dialog + box procedure, or a special internal value meaningful only to CallWindowProc + Handle to the window procedure to receive the message + Specifies the message + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + The return value specifies the result of the message processing and depends + on the message sent + + + + Gets the handle for this window + + + + + The POINT structure defines the x- and y- coordinates of a point + + + + + Specifies the x-coordinate of the point + + + + + Specifies the y-coordinate of the point + + + + + Creates a new RECT struct with the specified x and y coordinates + + The x-coordinate of the point + The y-coordinate of the point + + + + Creates a new POINT struct from the specified Point + + The Point to create the POINT from + A POINT struct with the same x and y coordinates as + the specified Point + + + + Returns a Point with the same x and y coordinates as the POINT + + A Point with the same x and y coordinates as the POINT + + + + The RECT structure defines the coordinates of the upper-left + and lower-right corners of a rectangle + + + + + Specifies the x-coordinate of the upper-left corner of the RECT + + + + + Specifies the y-coordinate of the upper-left corner of the RECT + + + + + Specifies the x-coordinate of the lower-right corner of the RECT + + + + + Specifies the y-coordinate of the lower-right corner of the RECT + + + + + Creates a new RECT struct with the specified location and size + + The x-coordinate of the upper-left corner of the RECT + The y-coordinate of the upper-left corner of the RECT + The x-coordinate of the lower-right corner of the RECT + The y-coordinate of the lower-right corner of the RECT + + + + Creates a new RECT struct from the specified Rectangle + + The Rectangle to create the RECT from + A RECT struct with the same location and size as + the specified Rectangle + + + + Creates a new RECT struct with the specified location and size + + The x-coordinate of the upper-left corner of the RECT + The y-coordinate of the upper-left corner of the RECT + The width of the RECT + The height of the RECT + A RECT struct with the specified location and size + + + + Returns a Rectangle with the same location and size as the RECT + + A Rectangle with the same location and size as the RECT + + + + The SIZE structure specifies the width and height of a rectangle + + + + + Specifies the x-coordinate of the point + + + + + Specifies the y-coordinate of the point + + + + + Creates a new SIZE struct with the specified width and height + + The width component of the new SIZE + The height component of the new SIZE + + + + Creates a new SIZE struct from the specified Size + + The Size to create the SIZE from + A SIZE struct with the same width and height values as + the specified Point + + + + Returns a Point with the same width and height values as the SIZE + + A Point with the same width and height values as the SIZE + + + + The TRACKMOUSEEVENT structure is used by the TrackMouseEvent function + to track when the mouse pointer leaves a window or hovers over a window + for a specified amount of time + + + + + Specifies the size of the TRACKMOUSEEVENT structure + + + + + Specifies the services requested + + + + + Specifies a handle to the window to track + + + + + Specifies the hover time-out in milliseconds + + + + + Creates a new TRACKMOUSEEVENT struct with default settings + + + + + Specifies the extended window style of the window being created + + + + + Creates a window that has a double border; the window can, optionally, be + created with a title bar by specifying the WS_CAPTION style in the dwStyle + parameter + + + + + Specifies that a child window created with this style does not send the + WM_PARENTNOTIFY message to its parent window when it is created or destroyed + + + + + Specifies that a window created with this style should be placed above all + non-topmost windows and should stay above them, even when the window is + deactivated. To add or remove this style, use the SetWindowPos function + + + + + Specifies that a window created with this style accepts drag-drop files + + + + + Specifies that a window created with this style should not be painted until + siblings beneath the window (that were created by the same thread) have been + painted. The window appears transparent because the bits of underlying sibling + windows have already been painted. To achieve transparency without these + restrictions, use the SetWindowRgn function + + + + + Creates a multiple-document interface (MDI) child window + + + + + Creates a tool window; that is, a window intended to be used as a floating + toolbar. A tool window has a title bar that is shorter than a normal title + bar, and the window title is drawn using a smaller font. A tool window does + not appear in the taskbar or in the dialog that appears when the user presses + ALT+TAB. If a tool window has a system menu, its icon is not displayed on the + title bar. However, you can display the system menu by right-clicking or by + typing ALT+SPACE + + + + + Specifies that a window has a border with a raised edge + + + + + Specifies that a window has a border with a sunken edge + + + + + Includes a question mark in the title bar of the window. When the user + clicks the question mark, the cursor changes to a question mark with a + pointer. If the user then clicks a child window, the child receives a + WM_HELP message. The child window should pass the message to the parent + window procedure, which should call the WinHelp function using the + HELP_WM_HELP command. The Help application displays a pop-up window that + typically contains help for the child window. WS_EX_CONTEXTHELP cannot be + used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles + + + + + The window has generic "right-aligned" properties. This depends on the window + class. This style has an effect only if the shell language is Hebrew, Arabic, + or another language that supports reading-order alignment; otherwise, the style + is ignored. Using the WS_EX_RIGHT style for static or edit controls has the + same effect as using the SS_RIGHT or ES_RIGHT style, respectively. Using this + style with button controls has the same effect as using BS_RIGHT and BS_RIGHTBUTTON + styles + + + + + Creates a window that has generic left-aligned properties. This is the default + + + + + If the shell language is Hebrew, Arabic, or another language that supports + reading-order alignment, the window text is displayed using right-to-left + reading-order properties. For other languages, the style is ignored + + + + + The window text is displayed using left-to-right reading-order properties. + This is the default + + + + + If the shell language is Hebrew, Arabic, or another language that supports + reading order alignment, the vertical scroll bar (if present) is to the left + of the client area. For other languages, the style is ignored + + + + + Vertical scroll bar (if present) is to the right of the client area. This + is the default + + + + + The window itself contains child windows that should take part in dialog + box navigation. If this style is specified, the dialog manager recurses + into children of this window when performing navigation operations such + as handling the TAB key, an arrow key, or a keyboard mnemonic + + + + + Creates a window with a three-dimensional border style intended to be used + for items that do not accept user input + + + + + Forces a top-level window onto the taskbar when the window is visible + + + + + Windows 2000/XP: Creates a layered window. Note that this cannot be used + for child windows. Also, this cannot be used if the window has a class + style of either CS_OWNDC or CS_CLASSDC + + + + + Windows 2000/XP: A window created with this style does not pass its window + layout to its child windows + + + + + Arabic and Hebrew versions of Windows 98/Me, Windows 2000/XP: Creates a window + whose horizontal origin is on the right edge. Increasing horizontal values + advance to the left + + + + + Windows XP: Paints all descendants of a window in bottom-to-top painting order + using double-buffering. This cannot be used if the window has a class style of + either CS_OWNDC or CS_CLASSDC + + + + + Windows 2000/XP: A top-level window created with this style does not become the + foreground window when the user clicks it. The system does not bring this window + to the foreground when the user minimizes or closes the foreground window. To + activate the window, use the SetActiveWindow or SetForegroundWindow function. + The window does not appear on the taskbar by default. To force the window to + appear on the taskbar, use the WS_EX_APPWINDOW style + + + + + Combines the WS_EX_CLIENTEDGE and WS_EX_WINDOWEDGE styles + + + + + Combines the WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW, and WS_EX_TOPMOST styles + + + + + The WindowMessage enemeration contains Windows messages that the + XPTable may be interested in listening for + + + + + The WM_ACTIVATE message is sent to both the window being activated and the + window being deactivated. If the windows use the same input queue, the message + is sent synchronously, first to the window procedure of the top-level window + being deactivated, then to the window procedure of the top-level window being + activated. If the windows use different input queues, the message is sent + asynchronously, so the window is activated immediately + + + + + The WM_PAINT message is sent when the system or another application makes a request + to paint a portion of an application's window. The message is sent when the + UpdateWindow or RedrawWindow function is called, or by the DispatchMessage + function when the application obtains a WM_PAINT message by using the GetMessage + or PeekMessage function. A window receives this message through its WindowProc + function + + + + + The WM_CLOSE message is sent as a signal that a window or an application + should terminate + + + + + The WM_ACTIVATEAPP message is sent when a window belonging to a different + application than the active window is about to be activated. The message is + sent to the application whose window is being activated and to the application + whose window is being deactivated + + + + + The WM_MOUSEACTIVATE message is sent when the cursor is in an inactive window + and the user presses a mouse button. The parent window receives this message + only if the child window passes it to the DefWindowProc function + + + + + The WM_NCACTIVATE message is sent to a window when its nonclient area needs to + be changed to indicate an active or inactive state + + + + + The WM_NCMOUSEMOVE message is posted to a window when the cursor is moved + within the nonclient area of the window. This message is posted to the window + that contains the cursor. If a window has captured the mouse, this message + is not posted + + + + + The WM_NCLBUTTONDOWN message is posted when the user presses the left mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCLBUTTONUP message is posted when the user releases the left mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCLBUTTONDBLCLK message is posted when the user double-clicks the + left mouse button while the cursor is within the nonclient area of a window. + This message is posted to the window that contains the cursor. If a window + has captured the mouse, this message is not posted + + + + + The WM_NCRBUTTONDOWN message is posted when the user presses the right mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCRBUTTONUP message is posted when the user releases the right mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCRBUTTONDBLCLK message is posted when the user double-clicks the right + mouse button while the cursor is within the nonclient area of a window. This + message is posted to the window that contains the cursor. If a window has + captured the mouse, this message is not posted + + + + + The WM_NCMBUTTONDOWN message is posted when the user presses the middle mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured the + mouse, this message is not posted + + + + + The WM_NCMBUTTONUP message is posted when the user releases the middle mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured the + mouse, this message is not posted + + + + + The WM_NCMBUTTONDBLCLK message is posted when the user double-clicks the middle + mouse button while the cursor is within the nonclient area of a window. This + message is posted to the window that contains the cursor. If a window has + captured the mouse, this message is not posted + + + + + The WM_NCXBUTTONDOWN message is posted when the user presses the first or second X + button while the cursor is in the nonclient area of a window. This message is posted + to the window that contains the cursor. If a window has captured the mouse, this + message is not posted + + + + + The WM_NCXBUTTONUP message is posted when the user releases the first or second + X button while the cursor is in the nonclient area of a window. This message is + posted to the window that contains the cursor. If a window has captured the mouse, + this message is not posted + + + + + The WM_NCXBUTTONDBLCLK message is posted when the user double-clicks the first or + second X button while the cursor is in the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured the mouse, + this message is not posted + + + + + The WM_KEYDOWN message is posted to the window with the keyboard focus when a + nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT + key is not pressed + + + + + The WM_KEYUP message is posted to the window with the keyboard focus when a + nonsystem key is released. A nonsystem key is a key that is pressed when the ALT + key is not pressed, or a keyboard key that is pressed when a window has the + keyboard focus + + + + + The WM_CHAR message is posted to the window with the keyboard focus when a + WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR + message contains the character code of the key that was pressed + + + + + The WM_DEADCHAR message is posted to the window with the keyboard focus when a + WM_KEYUP message is translated by the TranslateMessage function. WM_DEADCHAR + specifies a character code generated by a dead key. A dead key is a key that + generates a character, such as the umlaut (double-dot), that is combined with + another character to form a composite character. For example, the umlaut-O + character (? is generated by typing the dead key for the umlaut character, + and then typing the O key + + + + + The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when + the user presses the F10 key (which activates the menu bar) or holds down the + ALT key and then presses another key. It also occurs when no window currently + has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the + active window. The window that receives the message can distinguish between + these two contexts by checking the context code in the lParam parameter + + + + + The WM_SYSKEYUP message is posted to the window with the keyboard focus when + the user releases a key that was pressed while the ALT key was held down. It + also occurs when no window currently has the keyboard focus; in this case, the + WM_SYSKEYUP message is sent to the active window. The window that receives the + message can distinguish between these two contexts by checking the context code + in the lParam parameter + + + + + The WM_MOUSEMOVE message is posted to a window when the cursor moves. If the mouse + is not captured, the message is posted to the window that contains the cursor. + Otherwise, the message is posted to the window that has captured the mouse + + + + + The WM_LBUTTONDOWN message is posted when the user presses the left mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_LBUTTONUP message is posted when the user releases the left mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_LBUTTONDBLCLK message is posted when the user double-clicks the left mouse + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_RBUTTONDOWN message is posted when the user presses the right mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_RBUTTONUP message is posted when the user releases the right mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_RBUTTONDBLCLK message is posted when the user double-clicks the right mouse + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_MBUTTONDOWN message is posted when the user presses the middle mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_MBUTTONUP message is posted when the user releases the middle mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_MBUTTONDBLCLK message is posted when the user double-clicks the middle mouse + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_XBUTTONDOWN message is posted when the user presses the first or second X + button while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_XBUTTONUP message is posted when the user releases the first or second X + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_XBUTTONDBLCLK message is posted when the user double-clicks the first or + second X button while the cursor is in the client area of a window. If the mouse + is not captured, the message is posted to the window beneath the cursor. Otherwise, + the message is posted to the window that has captured the mouse + + + + + The WM_MOUSEWHEEL message is sent to the focus window when the mouse wheel is + rotated. The DefWindowProc function propagates the message to the window's parent. + There should be no internal forwarding of the message, since DefWindowProc propagates + it up the parent chain until it finds a window that processes it + + + + + Specifies the extended window style of the window being created + + + + + Creates an overlapped window. An overlapped window has a title bar and a + border. Same as the WS_TILED style + + + + + Creates a pop-up window. This style cannot be used with the WS_CHILD style + + + + + Creates a child window. A window with this style cannot have a menu bar. + This style cannot be used with the WS_POPUP style + + + + + Creates a window that is initially minimized. Same as the WS_ICONIC style + + + + + Creates a window that is initially visible. This style can be turned on and + off by using ShowWindow or SetWindowPos + + + + + Creates a window that is initially disabled. A disabled window cannot + receive input from the user. To change this after a window has been created, + use EnableWindow + + + + + Clips child windows relative to each other; that is, when a particular + child window receives a WM_PAINT message, the WS_CLIPSIBLINGS style clips + all other overlapping child windows out of the region of the child window + to be updated. If WS_CLIPSIBLINGS is not specified and child windows overlap, + it is possible, when drawing within the client area of a child window, to + draw within the client area of a neighboring child window + + + + + Excludes the area occupied by child windows when drawing occurs within + the parent window. This style is used when creating the parent window + + + + + Creates a window that is initially maximized + + + + + Creates a window that has a title bar (includes the WS_BORDER style) + + + + + Creates a window that has a thin-line border + + + + + Creates a window that has a border of a style typically used with dialog + boxes. A window with this style cannot have a title bar + + + + + Creates a window that has a vertical scroll bar + + + + + Creates a window that has a horizontal scroll bar + + + + + Creates a window that has a window menu on its title bar. The WS_CAPTION style + must also be specified + + + + + Creates a window that has a sizing border. Same as the WS_SIZEBOX style + + + + + Specifies the first control of a group of controls. The group consists of this + first control and all controls defined after it, up to the next control with + the WS_GROUP style. The first control in each group usually has the WS_TABSTOP + style so that the user can move from group to group. The user can subsequently + change the keyboard focus from one control in the group to the next control in + the group by using the direction keys. You can turn this style on and off to + change dialog box navigation. To change this style after a window has been + created, use SetWindowLong + /// + + + + Specifies a control that can receive the keyboard focus when the user presses + the TAB key. Pressing the TAB key changes the keyboard focus to the next control + with the WS_TABSTOP style. You can turn this style on and off to change dialog + box navigation. To change this style after a window has been created, use + SetWindowLong + + + + + Creates a window that has a minimize button. Cannot be combined with the + WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified + + + + + Creates a window that has a maximize button. Cannot be combined with the + WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified + + + + + Creates an overlapped window. An overlapped window has a title bar and a + border. Same as the WS_OVERLAPPED style + + + + + Creates a window that is initially minimized. Same as the WS_MINIMIZE style + + + + + Creates a window that has a sizing border. Same as the WS_THICKFRAME style + + + + + Creates a pop-up window with WS_BORDER, WS_POPUP, and WS_SYSMENU styles. The + WS_CAPTION and WS_POPUPWINDOW styles must be combined to make the window menu + visible + + + + + Creates an overlapped window with the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, + WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles. Same as the + WS_TILEDWINDOW style + + + + + Creates an overlapped window with the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, + WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles. Same as the + WS_OVERLAPPEDWINDOW style + + + + + Same as the WS_CHILD style + + + + diff --git a/Bin/Debug/CarSongManage/krc2lrc.exe b/Bin/Debug/CarSongManage/krc2lrc.exe new file mode 100644 index 0000000000000000000000000000000000000000..54757fca9b5fa4f8f2ae4e9e738d9f47fc259c39 GIT binary patch literal 73728 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 A0ssI2 literal 0 HcmV?d00001 diff --git a/Bin/Debug/CarSongManage/ryControls.dll b/Bin/Debug/CarSongManage/ryControls.dll new file mode 100644 index 0000000000000000000000000000000000000000..08fda12adcf1997b9b41efc2387dad096e382ca4 GIT binary patch literal 1242112 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 (U-j7NfPCHoQL%|&$jT0 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

  • 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 gN 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 + Martin Lottering : 2007-10-27 + -------------------------------- + This is a usefull control in Filters. Allows you to save space and can replace a Grouped Box of CheckBoxes. + Currently used on the TasksFilter for TaskStatusses, which means the user can select which Statusses to include + in the "Search". + This control does not implement a CheckBoxListBox, instead it adds a wrapper for the normal ComboBox and Items. + See the CheckBoxItems property. + ---------------- + ALSO IMPORTANT: In Data Binding when setting the DataSource. The ValueMember must be a bool type property, because it will + be binded to the Checked property of the displayed CheckBox. Also see the DisplayMemberSingleItem for more information. + ---------------- + Extends the CodeProject PopupComboBox "Simple pop-up control" "http://www.codeproject.com/cs/miscctrl/simplepopup.asp" + by Lukasz Swiatkowski. + + + + + + + + + + The checkbox list control. The public CheckBoxItems property provides a direct reference to its Items. + + + + + In DataBinding operations, this property will be used as the DisplayMember in the CheckBoxComboBoxListBox. + The normal/existing "DisplayMember" property is used by the TextBox of the ComboBox to display + a concatenated Text of the items selected. This concatenation and its formatting however is controlled + by the Binded object, since it owns that property. + + + + + Builds a CSV string of the items selected. + + + + + A direct reference to the Items of CheckBoxComboBoxListControl. + You can use it to Get or Set the Checked status of items manually if you want. + But do not manipulate the List itself directly, e.g. Adding and Removing, + since the list is synchronised when shown with the ComboBox.Items. So for changing + the list contents, use Items instead. + + + + + The DataSource of the combobox. Refreshes the CheckBox wrappers when this is set. + + + + + The ValueMember of the combobox. Refreshes the CheckBox wrappers when this is set. + + + + + In DataBinding operations, this property will be used as the DisplayMember in the CheckBoxComboBoxListBox. + The normal/existing "DisplayMember" property is used by the TextBox of the ComboBox to display + a concatenated Text of the items selected. This concatenation however is controlled by the Binded + object, since it owns that property. + + + + + Made this property Browsable again, since the Base Popup hides it. This class uses it again. + Gets an object representing the collection of the items contained in this + System.Windows.Forms.ComboBox. + + A System.Windows.Forms.ComboBox.ObjectCollection representing the items in + the System.Windows.Forms.ComboBox. + + + + + + + + + + + + + + + + + Will add an invisible item when the style is DropDownList, + to help maintain the correct text in main TextBox. + + + + + + + + + + + + A function to clear/reset the list. + (Ubiklou : http://www.codeproject.com/KB/combobox/extending_combobox.aspx?msg=2526813#xx2526813xx) + + + + + Uncheck all items. + + + + + The properties that will be assigned to the checkboxes as default values. + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + A container control for the ListControl to ensure the ScrollBar on the ListControl does not + Paint over the Size grip. Setting the Padding or Margin on the Popup or host control does + not work as I expected. + + + + + + + + + + Prescribed by the Popup class to ensure Resize operations work correctly. + + + + + + This ListControl that pops up to the User. It contains the CheckBoxComboBoxItems. + The items are docked DockStyle.Top in this control. + + + + + + + + + + + Simply a reference to the CheckBoxComboBox. + + + + + A Typed list of ComboBoxCheckBoxItems. + + + + + + + + + + Prescribed by the Popup control to enable Resize operations. + + + + + + + + + + + + Maintains the controls displayed in the list by keeping them in sync with the actual + items in the combobox. (e.g. removing and adding as well as ordering) + + + + + The CheckBox items displayed in the Popup of the ComboBox. + + + + + + + A reference to the CheckBoxComboBox. + A reference to the item in the ComboBox.Items that this object is extending. + + + + A reference to the CheckBoxComboBox. + + + + + A reference to the Item in ComboBox.Items that this object is extending. + + + + + A reference to the Item in ComboBox.Items that this object is extending. + + + + + When using Data Binding operations via the DataSource property of the ComboBox. This + adds the required Bindings for the CheckBoxes. + + + + + + + + + + + Added this handler because the control doesn't seem + to initialize correctly until shown for the first + time, which also means the summary text value + of the combo is out of sync initially. + + + + + A Typed List of the CheckBox items. + Simply a wrapper for the CheckBoxComboBox.Items. A list of CheckBoxComboBoxItem objects. + This List is automatically synchronised with the Items of the ComboBox and extended to + handle the additional boolean value. That said, do not Add or Remove using this List, + it will be lost or regenerated from the ComboBox.Items. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns the item with the specified displayName or Text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Called when any property changes. + + + + + + + + + + CodeProject.com "Simple pop-up control" "http://www.codeproject.com/cs/miscctrl/simplepopup.asp". + + + + + CodeProject.com "Simple pop-up control" "http://www.codeproject.com/cs/miscctrl/simplepopup.asp". + + + + + CodeProject.com Simple pop-up control http://www.codeproject.com/cs/miscctrl/simplepopup.asp. + Represents a pop-up window. + + + + + Gets the content of the pop-up. + + + + + Gets a value indicating whether the PopupControl.Popup uses the fade effect. + + true if pop-up uses the fade effect; otherwise, false. + To use the fade effect, the FocusOnOpen property also has to be set to true. + + + + Gets or sets a value indicating whether to focus the content after the pop-up has been opened. + + true if the content should be focused after the pop-up has been opened; otherwise, false. + If the FocusOnOpen property is set to false, then pop-up cannot use the fade effect. + + + + Gets or sets a value indicating whether presing the alt key should close the pop-up. + + true if presing the alt key does not close the pop-up; otherwise, false. + + + + Gets or sets a value indicating whether this PopupControl.Popup is resizable. + + true if resizable; otherwise, false. + + + + Gets or sets the size that is the lower limit that can specify. + + An ordered pair of type representing the width and height of a rectangle. + + + + Gets or sets the size that is the upper limit that can specify. + + An ordered pair of type representing the width and height of a rectangle. + + + + Gets parameters of a new window. + + An object of type used when creating a new window. + + + + Initializes a new instance of the PopupControl.Popup class. + + The content of the pop-up. + + Pop-up will be disposed immediately after disposion of the content control. + + is null. + + + + Processes a dialog box key. + + One of the values that represents the key to process. + + true if the key was processed by the control; otherwise, false. + + + + + Updates the pop-up region. + + + + + Shows pop-up window below the specified control. + + The control below which the pop-up will be shown. + + When there is no space below the specified control, the pop-up control is shown above it. + + is null. + + + + Shows pop-up window below the specified area of specified control. + + The control used to compute screen location of specified area. + The area of control below which the pop-up will be shown. + + When there is no space below specified area, the pop-up control is shown above it. + + is null. + + + + Adjusts the size of the owner to accommodate the if the owner is currently displayed, or clears and resets active child controls of the if the is not currently displayed. + + true if the owner is currently displayed; otherwise, false. + + + + Raises the event. + + An that contains the event data. + + + + Raises the event. + + A that contains the event data. + + + + Raises the event. + + An that contains the event data. + + + + + + + + + + + + + + + + + + + + + Processes Windows messages. + + The Windows to process. + + + + Processes the resizing messages. + + The message. + true, if the WndProc method from the base class shouldn't be invoked. + + + + Paints the size grip. + + The instance containing the event data. + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + CodeProject.com "Simple pop-up control" "http://www.codeproject.com/cs/miscctrl/simplepopup.asp". + Represents a Windows combo box control with a custom popup control attached. + + + + + Initializes a new instance of the PopupControl.PopupComboBox class. + + + + + The pop-up wrapper for the dropDownControl. + Made PROTECTED instead of PRIVATE so descendent classes can set its Resizable property. + Note however the pop-up properties must be set after the dropDownControl is assigned, since this + popup wrapper is recreated when the dropDownControl is assigned. + + + + + Gets or sets the drop down control. + + The drop down control. + + + + Shows the drop down. + + + + + Hides the drop down. + + + + + Processes Windows messages. + + The Windows to process. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Maintains an additional "Selected" and "Count" value for each item in a List. + Useful in the CheckBoxComboBox. It holds a reference to the List[Index] Item and + whether it is selected or not. + It also caters for a Count, if needed. + + + + + No property on the object is specified for display purposes, so simple ToString() operation + will be performed. And no Counts will be displayed + + + + + No property on the object is specified for display purposes, so simple ToString() operation + will be performed. + + + + + A Display "Name" property is specified. ToString() will not be performed on items. + This is specifically useful on DataTable implementations, or where PropertyDescriptors are used to read the values. + If a PropertyDescriptor is not found, a Property will be used. + + + + + A Display "Name" property is specified. ToString() will not be performed on items. + This is specifically useful on DataTable implementations, or where PropertyDescriptors are used to read the values. + If a PropertyDescriptor is not found, a Property will be used. + + + + + Is a Count indicator used. + + + + + The original List of values wrapped. A "Selected" and possibly "Count" functionality is added. + + + + + Used to indicate NOT to use ToString(), but read this property instead as a display value. + + + + + When specified, indicates that ToString() should not be performed on the items. + This property will be read instead. + This is specifically useful on DataTable implementations, where PropertyDescriptors are used to read the values. + + + + + Builds a concatenation list of selected items in the list. + + + + + Indicates whether the Item display value (Name) should include a count. + + + + + Reset all counts to zero. + + + + + Creates a ObjectSelectionWrapper item. + Note that the constructor signature of sub classes classes are important. + + + + + + + + + + + + + + Used together with the ListSelectionWrapper in order to wrap data sources for a CheckBoxComboBox. + It helps to ensure you don't add an extra "Selected" property to a class that don't really need or want that information. + + + + + + + + + + + + Used as a count indicator for the item. Not necessarily displayed. + + + + + Is this item selected. + + + + + A reference to the wrapped item. + + + + + The containing list for these selections. + + + + + An indicator of how many items with the specified status is available for the current filter level. + Thaught this would make the app a bit more user-friendly and help not to miss items in Statusses + that are not often used. + + + + + A reference to the item wrapped. + + + + + The item display value. If ShowCount is true, it displays the "Name [Count]". + + + + + The textbox display value. The names concatenated. + + + + + Indicates whether the item is selected. + + + + + + + + + + + + + + + + 控件状态 + + + + + 无 + + + + + 获得焦点 + + + + + 失去焦点 + + + + + 鼠标指针进入控件 + + + + + Toolbar控件 + + + + + + + + + + + + + + + 获取或设置控件显示的图片 + + + + + 重写控件焦点属性 + + + + + 自定义绘制 + + + + + + 焦点进入 + + + + + + 失去焦点 + + + + + + 禁止调整大小 + + + + + + + + + + + + + + + + + + 只响应单击鼠标左键事件 + + + + + + 按比例缩放图片 + + + + + + + 图片缩放 + + 源图片 + 缩放图片的宽度 + 缩放图片的高度 + 缩放的图片 + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + 绘图对像 + + 绘图对像 + 图片 + 绘置的图片大小、坐标 + 绘置的图片边界 + 当前状态 + 状态总数 + + + + 绘图对像 + + 绘图对像 + 图片对像 + 绘置的图片大小、坐标 + 当前状态 + 状态总数 + + + + + + + + + 得到要绘置的图片对像 + + 图像在程序集中的地址 + + + + + 得到要绘置的图片对像 + + 图像在程序集中的路径 + 图像在程序集中的地址 + + + + + 获取资源图标 + + + + + + + 得到图程序集中的图片对像 + + 图像在程序集中的地址 + + + + + 得到图程序集中的图片对像 + + 图像在程序集中的路径 + 图像在程序集中的地址 + + + + + 控件的状态。 + + + + + 正常 + + + + + 鼠标经过 + + + + + 鼠标按下 + + + + + 鼠标的当前位置 + + + + + + + + + + + + + + + + + + + + 美化按钮 + + + + + 普通按钮矩形位置 + + + + + 美化按钮 + + + + + 分割按钮的宽度 + + + + + 是否启用分割按钮 + + + + + 优先使用默认皮肤 + + + + + 按钮基础背景色 + + + + + 按钮字体颜色 + + + + + 图片宽度,默认值为18px,最小12px + + + + + 圆角的位置,默认全部都是圆角 + + + + + 设置圆角半径 + + + + + 背景色是否渐变 + + + + + 图片高度 + + + + + 图片与文字之间的间距 + + + + + 当鼠标按下时图片和文字是否产生偏移 + + + + + 鼠标进入时 + + + + + + 鼠标离开 + + + + + + 鼠标按下 + + + + + + 鼠标弹起 + + + + + + 鼠标当前所在位置 + + + + + 获取图像以及文字的位置 + + + + + + + + + + + + + + + + + + + + + + + + 添加菜单分隔线 + + + + + + 添加菜单 + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 增强版Label(禁用了双击Label会自动复制文本到剪切板的功能) + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 增强富文本控件 + + + + + 开始更新 + + + + + 结束更新 + + + + + RichTextBox + + + + + + + + + + + + + + + + + + + + + + + 在自带菜单弹出前激发 + + + + + 根据标签获得菜单项 + + + + + + + 只允许输入文本(只对设置之后的人工输入有效) + + + + + 按下按键 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 鼠标按下 + + + + + + + + + + + + + + + + + + 当文本框为空时,显示的内容。 + + + + + 添加菜单分隔线 + + + + + + 添加菜单 + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + 消息列表控件 + + + + + 最大高度 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 建立圆角路径的样式。 + + + + + 四个角都不是圆角。 + + + + + 四个角都为圆角。 + + + + + 左边两个角为圆角。 + + + + + 右边两个角为圆角。 + + + + + 上边两个角为圆角。 + + + + + 下边两个角为圆角。 + + + + + 左下角为圆角。 + + + + + 右下角为圆角。 + + + + + 画图相关API + + + + + 建立带有圆角样式的路径。 + + 用来建立路径的矩形。 + 圆角的大小。 + 圆角的样式。 + 是否把矩形长宽减 1,以便画出边框。 + 建立的路径。 + + + + 窗体皮肤 + + + + + 窗体皮肤 + + + + + 标题属性 + + + + + 是否使用父窗口的图标 + + + + + 点击最小化按钮是最小化还是隐藏 + + + + + 最大化按钮 + + + + + 最小化按钮 + + + + + 标题栏关闭按钮是否显示 + + + + + 当窗口位于后台时,是否标注显示。 + + + + + + + + + + 标题栏字体颜色 + + + + + 标题栏不处于活动状态时的字体颜色 + + + + + 标题栏背景颜色 + + + + + 标题栏不处于活动状态时的背景颜色 + + + + + 是否允许拖拉窗体边缘来改变窗体大小 + + + + + + + + + + + 画边框 + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + 热键文本框 + + + + + 热键文本框 + + + + + + + + + + + + + + + + + 在控件大小变化时发生 + + + + + + 此属性无效 + + + + + 载入热键配置 + + + + + + 保存热键 + + + + + + 是否含义热键 + + + + + 读取或设置热键 + + + + + 功能键 + + + + + 热键按键 + + + + + KeyDown事件 + + + + + + KeyDown事件 + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + 图标列表控件 + + + + + 图标列表控件 + + + + + 图标大小 + + + + + 文本显示高度(从底部算起) + + + + + 默认图标 + + + + + 是否显示图标 + + + + + 是否显示网格线 + + + + + 角标图标合集 + + + + + 画项 + + + + + + 选择项的背景开始颜色 + + + + + 选择项的背景结束颜色 + + + + + 选择项的边框颜色 + + + + + 选择项的字体颜色 + + + + + 重绘选中时背景 + + + + + 重绘图标 + + + 区域大小 + + + + + + + + 重绘文本 + + + + + 获取文本对齐 + + + + + 水平滚动条滚动事件 + + + + + 垂直滚动条滚动事件 + + + + + + + + + + + 列表项 + + + + + 图标 + + + + + 角标图片序号,为-1表示无角标 + + + + + + + + + + + + + + + 最大高度 + + + + + 标题 + + + + + 是否显示时间 + + + + + 添加时间 + + + + + + + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + + + + + + 最大高度 + + + + + 标题 + + + + + 是否显示时间 + + + + + 添加时间 + + + + + 内容 + + + + + 网址 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + + + + + + 图标 + + + + + 标题 + + + + + 悬浮提示 + + + + + 标题颜色 + + + + + 设置按钮 + + + + + + + 判断和设置是否选择 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + + + + + + 绘制边框 + + 消息 + + + + 类说明:CContextMenuStrip控件的实现用来代替系统的ContextMenuStrip控件 + + + + + + + + + + + + + + + + 重写OnCreateControl + + + + + 重写OnPaint事件 + + + + + + CreateRoundedRectanglePath + + Rectangle + + + + + + 系统热键数据类。 + + + + + 系统热键数据类 + + + + + 使多行属性失效掉 + + + + + 使只读属性失效掉 + + + + + 获取热键文本 + + + + + 功能键 + + + + + 热键按键 + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + 增强时间控件 + + + + + 增强时间控件 + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 选择文本框 + + + + + 选择文本框 + + + + + 按钮基础背景色 + + + + + 优先使用默认皮肤 + + + + + 选择的id + + + + + 选择的名称 + + + + + 选择的名称 + + + + + 字体 + + + + + 重新设置大小 + + + + + 在选择时激发 + + + + + 点击选择 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 可以改变文本行距(行间距)的Label + + + + + 行间距 + + + + + 可以改变文本行距(行间距)的Label + + + + + + + + + + 字体高度 + + + + + + + + + + 文本 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 计算两个日期的时间间隔,返回的是日期值+ + + 时间值,将显示在返回的值里 + 参照时间 + + + + + + + + + + + + + + + 控件边框颜色 + + + + + 控件背景颜色 + + + + + 圆角弧度大小 + + + + + 圆角风格 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + 在搜索时激发 + + + + + 文本变化时激发 + + + + + 文本变化时激发 + + + + + 双击时激发 + + + + + + + + + + + + + + + 文本为空时的显示效果 + + + + + 文本不选中 + + + + + 有内容时的显示效果 + + + + + 当文本框为空时,显示的内容。 + + + + + 字体 + + + + + 优先使用默认皮肤 + + + + + 背景色是否渐变 + + + + + 按钮基础背景色 + + + + + 按钮圆角部分背景颜色 + + + + + + + + + + 重新设置大小 + + + + + 点击搜索按钮 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + + + + + + 使用公共皮肤 + + + + + 按钮颜色 + + + + + + + + + + + + + + + + + + + + + + + + + + + 皮肤公共类 + + + + + 是否使用默认皮肤 + + + + + 按钮皮肤 + + + + + 按钮皮肤类 + + + + + 背景颜色 + + + + + 字体颜色 + + + + + 是否颜色渐变 + + + + + 类说明:帮助类 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 修改控件或窗体的边框,例如Textbox或是Form窗体 + + 消息 + 控件对象 + 边框像素 + 边框颜色 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 超级图片控件,支持加载工程内部图片、异步加载网络图片 + + + + + 超级图片控件,支持加载工程内部图片、异步加载网络图片 + + + + + 图片所在上级域名 + + + + + 图片资源所在上级文件夹 + + + + + 根据不同前缀,加载不同格式图片。i:表示工程内置图片;s:表示T_ImageDomain域名下的图片,u:表示指定url的图片;f:表示本地图片 + + + + + + 加载本地图片,加载完毕不会占用本地图片 + + + + + + 加载指定url图片 + + url位置 + 是否异步 + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + 多标签控件 + + + + + + + + + + 选项发生变化时激发 + + + + + 标签选择的序号 + + + + + + + + + + 选择的颜色 + + + + + 多标签控件颜色 + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 多标签控件 + + + + + + + + + + 获取对应的标签 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 美化文本框控件 + + + + + 文本变化时激发 + + + + + 文本变化时激发 + + + + + 双击时激发 + + + + + + + + + + 是否只能输入数字 + + + + + 是否多行 + + + + + 是否在显示不下时换行 + + + + + 最大长度 + + + + + + + + + + 背景颜色 + + + + + 右键菜单 + + + + + 字体颜色 + + + + + 选择的开始位置 + + + + + 选择的长度 + + + + + 选择的文本 + + + + + 提示文本 + + + + + 选择全部 + + + + + 密码 + + + + + 是否只读 + + + + + + + + + + + 文本为空时的显示效果 + + + + + 字体 + + + + + 有内容时的显示效果 + + + + + 当文本框为空时,显示的内容。 + + + + + + + + + + 选择文本框中的文本范围 + + 文本框中当前选定文本的第一个字符的位置。 + 要选择的字符数 + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + Define some Windows message constants + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This class adds to the functionality provided in System.Windows.Forms.MenuStrip. + + It allows you to "ClickThrough" to the MenuStrip so that you don't have to click once to + bring the form into focus and once more to take the desired action + + It also implements a SuppressHighlighting property to turn off the highlighting + that occures on mouseover when the form is not active + + + + + Gets or sets whether the control honors item clicks when its containing form does + not have input focus. + + + Default value is false, which is the same behavior provided by the base ToolStrip class. + + + + + Gets or sets whether the control shows highlighting on mouseover + + + Default value is true, which is the same behavior provided by the base MenuStrip class. + + + + + This method overrides the procedure that responds to Windows messages. + + It intercepts the WM_MOUSEMOVE message + and ignores it if SuppressHighlighting is on and the TopLevelControl does not contain the focus. + Otherwise, it calls the base class procedure to handle the message. + + It also intercepts the WM_MOUSEACTIVATE message and replaces an "Activate and Eat" result with + an "Activate" result if ClickThrough is enabled. + + + + + + This class adds to the functionality provided in System.Windows.Forms.ToolStrip. + + It allows you to "ClickThrough" to the MenuStrip so that you don't have to click once to + bring the form into focus and once more to take the desired action + + It also implements a SuppressHighlighting property to turn off the highlighting + that occures on mouseover when the form is not active + + + + + Gets or sets whether the control honors item clicks when its containing form does + not have input focus. + + + Default value is false, which is the same behavior provided by the base ToolStrip class. + + + + + Gets or sets whether the control shows highlighting on mouseover + + + Default value is true, which is the same behavior provided by the base MenuStrip class. + + + + + This method overrides the procedure that responds to Windows messages. + + It intercepts the WM_MOUSEMOVE message + and ignores it if SuppressHighlighting is on and the TopLevelControl does not contain the focus. + Otherwise, it calls the base class procedure to handle the message. + + It also intercepts the WM_MOUSEACTIVATE message and replaces an "Activate and Eat" result with + an "Activate" result if ClickThrough is enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 还原 + + + + + 移动 + + + + + 大小 + + + + + 最小化 + + + + + 最大化 + + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 透明图片控件 + + + + + 是否使用透明,默认为True + + + + + 设置透明度 + + + + + 要绑定的控件 + + + + + 透明图片控件 + + + + + 图片 + + + + + 初始化加载控件 + + 透明度 + 是否显示加载图片 + 图片 + + + + + + + + + + + + + + + 显示加载 + + + + + 隐藏加载 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + 获得当前进程,以便重绘控件 + + + + + + + 是否启用热点效果 + + + + + 边框颜色 + + + + + 热点边框颜色 + + + + + 是否鼠标MouseOver状态 + + + + + 是否启用热点效果 + + + + + 边框颜色 + + + + + 热点时边框颜色 + + + + + + + + + + 鼠标移动到该控件上时 + + + + + + 当鼠标从该控件移开时 + + + + + + 当该控件获得焦点时 + + + + + + 当该控件失去焦点时 + + + + + + 获得操作系统消息 + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 一个强类型的资源类,用于查找本地化的字符串等。 + + + + + 返回此类使用的缓存的 ResourceManager 实例。 + + + + + 重写当前线程的 CurrentUICulture 属性,对 + 使用此强类型资源类的所有资源查找执行重写。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 查找 System.Drawing.Bitmap 类型的本地化资源。 + + + + + 日控件 + + + + + 日控件 + + + + + 当前日期 + + + + + 在发生页码变化前激发 + + + + + 设置休息状态,1为休息,-1为上班,其它为不显示 + + + + + + 日期 + + + + + 农历 + + + + + 阳历日期字体颜色 + + + + + 阳历日期字体 + + + + + 农历日期字体 + + + + + 农历部分字体颜色 + + + + + 是否选中 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 日历控件 + + + + + 单击事件 + + + + + + + 单击某个日期事件 + + + + + 日历控件 + + + + + 设置日期 + + + + + 放假数据表 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + 设置管理类,快速添加设置。 + + + + + 设置管理类,快速添加设置。 + + + + + 设置管理类,快速添加设置。 + + + + + + 存储类型 + + + + + 配置存储路径 + + + + + 设置XML内容 + + + + + 添加控件 + + + + + + + + 设置值 + + + + + + + + 添加控件 + + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 读取配置 + + + + + 保存配置 + + + + + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + 类 名:ColorHSL + 功 能:H 色相 \ S 饱和度(纯度) \ L 亮度 颜色模型 + 日 期:2015-02-08 + 修 改:2015-03-20 + 作 者:ls9512 + + + + + HSL颜色 + + + + + + + + 色相 + + + + + 饱和度(纯度) + + + + + 饱和度 + + + + + 类 名:ColorHSV + 功 能:H 色相 \ S 饱和度(纯度) \ V 明度 颜色模型 + 日 期:2015-01-22 + 修 改:2015-03-20 + 作 者:ls9512 + + + + + 构造方法 + + + + + + + + 色相 + + + + + 饱和度(纯度) + + + + + 明度 + + + + + 类 名:ColorRGB + 功 能:R 红色 \ G 绿色 \ B 蓝色 颜色模型 + 所有颜色模型的基类,RGB是用于输出到屏幕的颜色模式,所以所有模型都将转换成RGB输出 + 日 期:2015-01-22 + 修 改:2015-03-20 + 作 者:ls9512 + + + + + 构造方法 + + + + + + + + + + + + + + 红色 + + + + + 绿色 + + + + + 蓝色 + + + + + 获取实际颜色 + + + + + + 类 名:ColorHelper + 功 能:提供从RGB到HSV/HSL色彩空间的相互转换 + 日 期:2015-02-08 + 修 改:2015-03-20 + 作 者:ls9512 + + + + + RGB转换HSV + + + + + + + HSV转换RGB + + + + + + + RGB转换HSL + + + + + + + HSL转换RGB + + H, S and L input range = 0 -1.0 + + + + + RGB转CMYK + + + + + + + + + + RGB转CMYK + + + + + + + + + + + + CMYK转RGB + + + + + + + + + + Standard-RGB → XYZ,X、Y、Z 使用 D65/2°标准光源. + + + + + + + + + XYZ → Standard-RGB,X、Y、Z 使用 D65/2°标准光源. + + + + + + + + + XYZ → Adobe-RGB,X、Y、Z 使用 D65/2°标准光源.RGB Adobe 1998 + + + + + + + + + Adobe-RGB → XYZ,X、Y、Z 使用 D65/2°标准光源.RGB Adobe 1998 + + + + + + + + + Yxy转RGB + + + + + + + + + RGB转Yxy + + + + + + + + + 超级颜色选择控件 + + + + + + + + + + + + + + + + + + + + + + + + + + 获取网页颜色 + + + + + 超级颜色选择控件 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要修改 + 使用代码编辑器修改此方法的内容。 + + + + + Chrome风格的多标签控件 + + + + + 设置选项卡处于选中状态时第一背景色. + + + + + 设置选项卡处于选中状态时第二背景色. + + + + + 设置选项卡处于非选中状态时第一背景色. + + + + + 设置选项卡处于非选中状态时第二背景色. + + + + + 设置鼠标移动到非选中状态选项卡时第一背景色. + + + + + 设置鼠标移动到非选中状态选项卡时第二背景色. + + + + + 设置选项卡工作区背景色. + + + + + 设置选项卡工作区背景图. + + + + + 是否显示关闭按钮 + + + + + 是否显示新增按钮 + + + + + 是否允许拖拽标签 + + + + + 标签最大宽度 + + + + + 标签右键菜单 + + + + + 鼠标按下标签时激发 + + + + + 鼠标放开标签时激发 + + + + + Chrome风格的多标签控件 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 设置圆角半径 + + + + + Tab文字左边距离 + + + + + + + + + + + + + + 画标签文字 + + + + + + + + + 画标签图标 + + + + + + + 画关闭按钮 + + + + + + + + 获取所有选项卡合起来的宽度 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 添加新标签 + + + + + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + The position is not over a tab. + + + + + The position is over a tab's icon. + + + + + The position is over a tab's text. + + + + + The position is over a tab but not over its icon or its text. For owner-drawn tab controls, this value is specified if the position is anywhere over a tab. + TCHT_ONITEM is a bitwise-OR operation on TCHT_ONITEMICON and TCHT_ONITEMLABEL. + + + + + Specifies values from SetWindowPosZ enumeration. + + + + + Specified HWND_TOP enumeration value. + + + + + Specified HWND_BOTTOM enumeration value. + + + + + Specified HWND_TOPMOST enumeration value. + + + + + Specified HWND_NOTOPMOST enumeration value. + + + + + Invalidates the rectangle or region that you specify in lprcUpdate or hrgnUpdate. + You can set only one of these parameters to a non-NULL value. If both are NULL, RDW_INVALIDATE invalidates the entire window. + + + + Causes the OS to post a WM_PAINT message to the window regardless of whether a portion of the window is invalid. + + + + Causes the window to receive a WM_ERASEBKGND message when the window is repainted. + Specify this value in combination with the RDW_INVALIDATE value; otherwise, RDW_ERASE has no effect. + + + + + Validates the rectangle or region that you specify in lprcUpdate or hrgnUpdate. + You can set only one of these parameters to a non-NULL value. If both are NULL, RDW_VALIDATE validates the entire window. + This value does not affect internal WM_PAINT messages. + + + + Suppresses any pending WM_ERASEBKGND messages. + + + Excludes child windows, if any, from the repainting operation. + + + Includes child windows, if any, in the repainting operation. + + + Causes the affected windows, which you specify by setting the RDW_ALLCHILDREN and RDW_NOCHILDREN values, to receive WM_ERASEBKGND and WM_PAINT messages before the RedrawWindow returns, if necessary. + + + + Causes the affected windows, which you specify by setting the RDW_ALLCHILDREN and RDW_NOCHILDREN values, to receive WM_ERASEBKGND messages before RedrawWindow returns, if necessary. + The affected windows receive WM_PAINT messages at the ordinary time. + + + + + Specifies values from Msgs enumeration. + + + + + Specified WM_NULL enumeration value. + + + + + Specified WM_CREATE enumeration value. + + + + + Specified WM_DESTROY enumeration value. + + + + + Specified WM_MOVE enumeration value. + + + + + Specified WM_SIZE enumeration value. + + + + + Specified WM_ACTIVATE enumeration value. + + + + + Specified WM_SETFOCUS enumeration value. + + + + + Specified WM_KILLFOCUS enumeration value. + + + + + Specified WM_ENABLE enumeration value. + + + + + Specified WM_SETREDRAW enumeration value. + + + + + Specified WM_SETTEXT enumeration value. + + + + + Specified WM_GETTEXT enumeration value. + + + + + Specified WM_GETTEXTLENGTH enumeration value. + + + + + Specified WM_PAINT enumeration value. + + + + + Specified WM_CLOSE enumeration value. + + + + + Specified WM_QUERYENDSESSION enumeration value. + + + + + Specified WM_QUIT enumeration value. + + + + + Specified WM_QUERYOPEN enumeration value. + + + + + Specified WM_ERASEBKGND enumeration value. + + + + + Specified WM_SYSCOLORCHANGE enumeration value. + + + + + Specified WM_ENDSESSION enumeration value. + + + + + Specified WM_SHOWWINDOW enumeration value. + + + + + Specified WM_WININICHANGE enumeration value. + + + + + Specified WM_SETTINGCHANGE enumeration value. + + + + + Specified WM_DEVMODECHANGE enumeration value. + + + + + Specified WM_ACTIVATEAPP enumeration value. + + + + + Specified WM_FONTCHANGE enumeration value. + + + + + Specified WM_TIMECHANGE enumeration value. + + + + + Specified WM_CANCELMODE enumeration value. + + + + + Specified WM_SETCURSOR enumeration value. + + + + + Specified WM_MOUSEACTIVATE enumeration value. + + + + + Specified WM_CHILDACTIVATE enumeration value. + + + + + Specified WM_QUEUESYNC enumeration value. + + + + + Specified WM_GETMINMAXINFO enumeration value. + + + + + Specified WM_PAINTICON enumeration value. + + + + + Specified WM_ICONERASEBKGND enumeration value. + + + + + Specified WM_NEXTDLGCTL enumeration value. + + + + + Specified WM_SPOOLERSTATUS enumeration value. + + + + + Specified WM_DRAWITEM enumeration value. + + + + + Specified WM_MEASUREITEM enumeration value. + + + + + Specified WM_DELETEITEM enumeration value. + + + + + Specified WM_VKEYTOITEM enumeration value. + + + + + Specified WM_CHARTOITEM enumeration value. + + + + + Specified WM_SETFONT enumeration value. + + + + + Specified WM_GETFONT enumeration value. + + + + + Specified WM_SETHOTKEY enumeration value. + + + + + Specified WM_GETHOTKEY enumeration value. + + + + + Specified WM_QUERYDRAGICON enumeration value. + + + + + Specified WM_COMPAREITEM enumeration value. + + + + + Specified WM_GETOBJECT enumeration value. + + + + + Specified WM_COMPACTING enumeration value. + + + + + Specified WM_COMMNOTIFY enumeration value. + + + + + Specified WM_WINDOWPOSCHANGING enumeration value. + + + + + Specified WM_WINDOWPOSCHANGED enumeration value. + + + + + Specified WM_POWER enumeration value. + + + + + Specified WM_COPYDATA enumeration value. + + + + + Specified WM_CANCELJOURNAL enumeration value. + + + + + Specified WM_NOTIFY enumeration value. + + + + + Specified WM_INPUTLANGCHANGEREQUEST enumeration value. + + + + + Specified WM_INPUTLANGCHANGE enumeration value. + + + + + Specified WM_TCARD enumeration value. + + + + + Specified WM_HELP enumeration value. + + + + + Specified WM_USERCHANGED enumeration value. + + + + + Specified WM_NOTIFYFORMAT enumeration value. + + + + + Specified WM_CONTEXTMENU enumeration value. + + + + + Specified WM_STYLECHANGING enumeration value. + + + + + Specified WM_STYLECHANGED enumeration value. + + + + + Specified WM_DISPLAYCHANGE enumeration value. + + + + + Specified WM_GETICON enumeration value. + + + + + Specified WM_SETICON enumeration value. + + + + + Specified WM_NCCREATE enumeration value. + + + + + Specified VK_RMENU enumeration value. + + + + + Specified WM_NCCALCSIZE enumeration value. + + + + + Specified WM_NCHITTEST enumeration value. + + + + + Specified WM_NCPAINT enumeration value. + + + + + Specified WM_NCACTIVATE enumeration value. + + + + + Specified WM_GETDLGCODE enumeration value. + + + + + Specified WM_SYNCPAINT enumeration value. + + + + + Specified WM_NCMOUSEMOVE enumeration value. + + + + + Specified WM_NCLBUTTONDOWN enumeration value. + + + + + Specified WM_NCLBUTTONUP enumeration value. + + + + + Specified WM_NCLBUTTONDBLCLK enumeration value. + + + + + Specified WM_NCRBUTTONDOWN enumeration value. + + + + + Specified WM_NCRBUTTONUP enumeration value. + + + + + Specified WM_NCRBUTTONDBLCLK enumeration value. + + + + + Specified WM_NCMBUTTONDOWN enumeration value. + + + + + Specified WM_NCMBUTTONUP enumeration value. + + + + + Specified WM_NCMBUTTONDBLCLK enumeration value. + + + + + Specified WM_NCXBUTTONDOWN enumeration value. + + + + + Specified WM_NCXBUTTONUP enumeration value. + + + + + Specified WM_KEYDOWN enumeration value. + + + + + Specified WM_KEYUP enumeration value. + + + + + Specified WM_CHAR enumeration value. + + + + + Specified WM_DEADCHAR enumeration value. + + + + + Specified WM_SYSKEYDOWN enumeration value. + + + + + Specified WM_SYSKEYUP enumeration value. + + + + + Specified WM_SYSCHAR enumeration value. + + + + + Specified WM_SYSDEADCHAR enumeration value. + + + + + Specified WM_KEYLAST enumeration value. + + + + + Specified WM_IME_STARTCOMPOSITION enumeration value. + + + + + Specified WM_IME_ENDCOMPOSITION enumeration value. + + + + + Specified WM_IME_COMPOSITION enumeration value. + + + + + Specified WM_IME_KEYLAST enumeration value. + + + + + Specified WM_INITDIALOG enumeration value. + + + + + Specified WM_COMMAND enumeration value. + + + + + Specified WM_SYSCOMMAND enumeration value. + + + + + Specified WM_TIMER enumeration value. + + + + + Specified WM_HSCROLL enumeration value. + + + + + Specified WM_VSCROLL enumeration value. + + + + + Specified WM_INITMENU enumeration value. + + + + + Specified WM_INITMENUPOPUP enumeration value. + + + + + Specified WM_MENUSELECT enumeration value. + + + + + Specified WM_MENUCHAR enumeration value. + + + + + Specified WM_ENTERIDLE enumeration value. + + + + + Specified WM_MENURBUTTONUP enumeration value. + + + + + Specified WM_MENUDRAG enumeration value. + + + + + Specified WM_MENUGETOBJECT enumeration value. + + + + + Specified WM_UNINITMENUPOPUP enumeration value. + + + + + Specified WM_MENUCOMMAND enumeration value. + + + + + Specified WM_CTLCOLORMSGBOX enumeration value. + + + + + Specified WM_CTLCOLOREDIT enumeration value. + + + + + Specified WM_CTLCOLORLISTBOX enumeration value. + + + + + Specified WM_CTLCOLORBTN enumeration value. + + + + + Specified WM_CTLCOLORDLG enumeration value. + + + + + Specified WM_CTLCOLORSCROLLBAR enumeration value. + + + + + Specified WM_CTLCOLORSTATIC enumeration value. + + + + + Specified WM_MOUSEMOVE enumeration value. + + + + + Specified WM_LBUTTONDOWN enumeration value. + + + + + Specified WM_LBUTTONUP enumeration value. + + + + + Specified WM_LBUTTONDBLCLK enumeration value. + + + + + Specified WM_RBUTTONDOWN enumeration value. + + + + + Specified WM_RBUTTONUP enumeration value. + + + + + Specified WM_RBUTTONDBLCLK enumeration value. + + + + + Specified WM_MBUTTONDOWN enumeration value. + + + + + Specified WM_MBUTTONUP enumeration value. + + + + + Specified WM_MBUTTONDBLCLK enumeration value. + + + + + Specified WM_MOUSEWHEEL enumeration value. + + + + + Specified WM_XBUTTONDOWN enumeration value. + + + + + Specified WM_XBUTTONUP enumeration value. + + + + + Specified WM_XBUTTONDBLCLK enumeration value. + + + + + Specified WM_PARENTNOTIFY enumeration value. + + + + + Specified WM_ENTERMENULOOP enumeration value. + + + + + Specified WM_EXITMENULOOP enumeration value. + + + + + Specified WM_NEXTMENU enumeration value. + + + + + Specified WM_SIZING enumeration value. + + + + + Specified WM_CAPTURECHANGED enumeration value. + + + + + Specified WM_MOVING enumeration value. + + + + + Specified WM_DEVICECHANGE enumeration value. + + + + + Specified WM_MDICREATE enumeration value. + + + + + Specified WM_MDIDESTROY enumeration value. + + + + + Specified WM_MDIACTIVATE enumeration value. + + + + + Specified WM_MDIRESTORE enumeration value. + + + + + Specified WM_MDINEXT enumeration value. + + + + + Specified WM_MDIMAXIMIZE enumeration value. + + + + + Specified WM_MDITILE enumeration value. + + + + + Specified WM_MDICASCADE enumeration value. + + + + + Specified WM_MDIICONARRANGE enumeration value. + + + + + Specified WM_MDIGETACTIVE enumeration value. + + + + + Specified WM_MDISETMENU enumeration value. + + + + + Specified WM_ENTERSIZEMOVE enumeration value. + + + + + Specified WM_EXITSIZEMOVE enumeration value. + + + + + Specified WM_DROPFILES enumeration value. + + + + + Specified WM_MDIREFRESHMENU enumeration value. + + + + + Specified WM_IME_SETCONTEXT enumeration value. + + + + + Specified WM_IME_NOTIFY enumeration value. + + + + + Specified WM_IME_CONTROL enumeration value. + + + + + Specified WM_IME_COMPOSITIONFULL enumeration value. + + + + + Specified WM_IME_SELECT enumeration value. + + + + + Specified WM_IME_CHAR enumeration value. + + + + + Specified WM_IME_REQUEST enumeration value. + + + + + Specified WM_IME_KEYDOWN enumeration value. + + + + + Specified WM_IME_KEYUP enumeration value. + + + + + Specified WM_MOUSEHOVER enumeration value. + + + + + Specified WM_UNDO enumeration value. + + + + + Specified WM_RENDERFORMAT enumeration value. + + + + + Specified WM_RENDERALLFORMATS enumeration value. + + + + + Specified WM_DESTROYCLIPBOARD enumeration value. + + + + + Specified WM_DRAWCLIPBOARD enumeration value. + + + + + Specified WM_PAINTCLIPBOARD enumeration value. + + + + + Specified WM_VSCROLLCLIPBOARD enumeration value. + + + + + Specified WM_SIZECLIPBOARD enumeration value. + + + + + Specified WM_ASKCBFORMATNAME enumeration value. + + + + + Specified WM_CHANGECBCHAIN enumeration value. + + + + + Specified WM_HSCROLLCLIPBOARD enumeration value. + + + + + Specified WM_QUERYNEWPALETTE enumeration value. + + + + + Specified WM_PALETTEISCHANGING enumeration value. + + + + + Specified WM_PALETTECHANGED enumeration value. + + + + + Specified WM_HOTKEY enumeration value. + + + + + Specified WM_PRINT enumeration value. + + + + + Specified WM_PRINTCLIENT enumeration value. + + + + + Specified WM_HANDHELDFIRST enumeration value. + + + + + Specified WM_HANDHELDLAST enumeration value. + + + + + Specified WM_AFXFIRST enumeration value. + + + + + Specified WM_AFXLAST enumeration value. + + + + + Specified WM_PENWINFIRST enumeration value. + + + + + Specified WM_PENWINLAST enumeration value. + + + + + Specified WM_APP enumeration value. + + + + + Specified WM_USER enumeration value. + + + + + Specified WM_REFLECT enumeration value. + + + + + Specified WM_THEMECHANGED enumeration value. + + + + + + + + + + 关键词 + + + + + 密码 + + + + + 权限用户id + + + + + + + + + + + + + 返回关键词 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 树形控件,用于分类用 + + + + + 显示在第一位的名称 + + + + + 是否显示菜单 + + + + + 树形控件 + + + + + 判断指定节点是否是目标节点的子节点 + + + + + + + + + 判断当前节点,当前用户是否有权限访问 + + + + + + + + + 权限事件 + + + + + + + + 选择权限用户时发生 + + + + + 数据变化时发生 + + + + + 数据变化前发生 + + + + + 操作事件 + + + + + + + 在添加分组前发生 + + + + + 在修改分组前发生 + + + + + 在删除分组前发生 + + + + + 在设置密码前发生 + + + + + 在设置权限前发生 + + + + + 获取新的关键词分类 + + + + + + 根据id获取节点 + + + + + + + 根据节点获取节点信息 + + + + + + + 设置节点信息 + + + + + + + 设置节点关键词和密码 + + + + + + + + 设置节点密码 + + + + + + + 设置节点关键词 + + + + + + + 设置节点用户 + + + + + + + RecursionTreeControl:表示将XML文件的内容显示在TreeView控件中 + + 将要加载的XML文件中的节点元素 + 将要加载的XML文件中的节点集合 + + + + 把XML文本载入到列表中 + + + + + + 把XML文件载入到列表中 + + + + + + 将列表保存为xml文本 + + + + + + 改变所有子节点的状态 + + + + + + + 反选子节点 + + + + + + 根据关键词来选中列表 + + + + + + 根据关键词来选中列表 + + + + + + 格式化关键字(会去除重复项),以便存入数据库 + + + + + + + 去除掉重复项 + + + + + + + 获取当前选中项以及所有父项的关键词组合 + + + + + + 获取选中的 + + + + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + + + + + + 是否为添加 + + + + + 选择的文本 + + + + + 选择的Tag + + + + + 选择的图片序号 + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + 旧密码 + + + + + 新密码 + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + 颜色标签 + + + + + 行间距 + + + + + 颜色标签 + + + + + 更新 + + + + + 字体高度 + + + + + 控件高 + + + + + 控件文本 + + + + + 获取过滤掉颜色的字 + + + + + + + 改变字体 + + + + + + + + + + + + + + 密码控件 + + + + + + + + + + 密码 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + 分页控件 + + + + + 首页文本 + + + + + 上一页文本 + + + + + 下一页文本 + + + + + 末页文本 + + + + + 跳页文本 + + + + + 页面信息文本 + + + + + 存储SQL参数 + + + + + 最后一页的页码 + + + + + 在发生页码变化时激发 + + + + + 在发生页码变化前激发 + + + + + 设置/返回每页显示的量大小 + + + + + 设置/返回记录总数 + + + + + 设置/返回分页SQL语句,{pagecount}表示页数,{recordcount}表示记录总数,{pagesize}表示页面大小, + {pageindex}表示当前页数,{recordnum}表示当前页记录数,{pageendnum}表示当前页最后一条记录的记录数 + + + + + 设置/返回当{recordnum}小于等于0时的分页SQL语句(比如第一页),如果为空,则默认使用SQLText值。{pagecount}表示页数, + {recordcount}表示记录总数,{pagesize}表示页面大小,{pageindex}表示当前页数,{recordnum}表示当前页记录数,{pageendnum}表示当前页最后一条记录的记录数 + + + + + 获取当前页码 + + + + + + 设置分页语句 + + 数据库类型 + 表名 + 条件判断sql语句,注意不包含where,以及不包含排序语句;,如果不存在条件判断语句,请为空 + 排序语句,必须包含Order By;,如果不存在排序语句,请为空 + + + + + 获取数据库指定条件的记录总数 + + 数据库类型 + 表名 + 条件判断sql语句,注意不包含where,以及不包含排序语句;,如果不存在条件判断语句,请为空 + + + + + 设置分页语句为MySQL分页语句 + + 表名 + 条件判断sql语句,注意不包含where,以及不包含排序语句;,如果不存在条件判断语句,请为空 + 排序语句,必须包含Order By;,如果不存在排序语句,请为空 + + + + + 获取MySQL数据库指定条件的记录总数 + + 表名 + 条件判断sql语句,注意不包含where,以及不包含排序语句;,如果不存在条件判断语句,请为空 + + + + + 设置分页语句为MSSQL分页语句 + + 表名 + 条件判断sql语句,注意不包含where,以及不包含排序语句;,如果不存在条件判断语句,请为空 + 排序语句,必须包含Order By;,如果不存在排序语句,请为空 + + + + + 获取MSSQL数据库指定条件的记录总数 + + 表名 + 条件判断sql语句,注意不包含where,以及不包含排序语句;,如果不存在条件判断语句,请为空 + 排序语句,必须包含Order By;,如果不存在排序语句,请为空 + + + + + 设置分页语句为SQLite分页语句 + + 表名 + 条件判断sql语句,注意不包含where,以及不包含排序语句;,如果不存在条件判断语句,请为空 + 排序语句,必须包含Order By;,如果不存在排序语句,请为空 + + + + + 设置分页语句为SQLite分页语句 + + 表名 + 条件判断sql语句,注意不包含where,可包含order by,如果不存在条件判断语句,请为空 + + + + + 获取SQLite数据库指定条件的记录总数 + + 表名 + 条件判断sql语句,注意不包含where,可包含order by,如果不存在条件判断语句,请为空 + + + + + 返回分页SQL语句 + + + + + 分页控件 + + + + + 设置当前页为指定页 + + + + + + 下一页 + + + + + 上一页 + + + + + 末页 + + + + + 首页 + + + + + 必需的设计器变量。 + + + + + 清理所有正在使用的资源。 + + 如果应释放托管资源,为 true;否则为 false。 + + + + 设计器支持所需的方法 - 不要 + 使用代码编辑器修改此方法的内容。 + + + + + 自动排列控件 + + + + + 最大列数 + + + + + 开始排列的坐标 + + + + + 下一项的位置 + + + + + 下一项的右下角坐标 + + + + + 竖向间隔像素 + + + + + 横向间隔像素 + + + + + 最小保留右边距,只对ReDraw2有效 + + + + + 自动排列控件构造函数 + + + + + + 自动排列控件构造函数 + + + + + + + + 开始排列控件 + + + + + 开始排列控件,当列数超过显示空间时,自动换行 + + + + + 加入的控件列表 + + + + + 初始化添加,自动将容器设置为滚动条自动显示 + + + + + + 添加控件 + + + + + + + 删除控件 + + + + + + 删除控件 + + + + + + 清空所有控件 + + + + + This enum represents the possible browser commands + + + + + Used when no commans are available + + + + + Used in the new navigation events + + + + + The URL to navigate to + + + + + The name of the frame to navigate to + + + + + The flags when opening a new window + + + + + The pointer to ppDisp + + + + + Creates a new instance of WebBrowserExtendedNavigatingEventArgs + + Pointer to the automation object of the browser + The URL to go to + The name of the frame + The new window flags + + + + + + + + + Used in the new navigation events + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 查看源码 + + + + + 复制当前选中区 + + + + + 粘贴当前选中区 + + + + + 剪切当前选中区 + + + + + 全选 + + + + + 清除当前选中区的选中状态。 + + + + + 从当前选中区中删除全部超级链接。 + + + + + 从当前选中区中删除全部书签。 + + + + + 删除当前选中区 + + + + + 重做 + + + + + 撤销 + + + + + 从当前选中区中删除格式化标签。 + + + + + 点击节点 + + + + + + + + 点击节点 + + + + + + + + + 点击元素 + + 节点名 + 属性 + 属性值 + 等待毫秒数 + 第几个符合的元素,从1开始 + + + + 等待多时毫秒 + + + + + + Represents event information for the main form, when the command state of the active browser changes + + + + + Creates a new instance of the class + + A list of commands that are available + + + + Gets a list of commands that are available + + + + + An extended version of the control. + + + + + + + + + + + + 在页面弹出消息对话框时激发 + + + + + + + + + + + + + + + + + + + + + + 打开页面并等待页面加载完毕 + + 要打开的页面地址 + 小于等于0,则表示一直等待,否则表示等待指定秒后,如果依然没有加载完毕,就直接返回 + + + + 等待页面加载完毕 + + 小于等于0,则表示一直等待,否则表示等待指定秒后,如果依然没有加载完毕,就直接返回 + + + + 等待指定毫秒 + + 等待指定毫秒 + + + + 获取网页源代码,可以自动去除乱码 + + + + + + 加载html文本到浏览器中 + + + + + + + 加载html文本到浏览器中 + + + + + + 强制用本窗体打开新链接 + + + + + + + + + + + This method supports the .NET Framework infrastructure and is not intended to be used directly from your code. + Called by the control when the underlying ActiveX control is created. + + + + + + This method supports the .NET Framework infrastructure and is not intended to be used directly from your code. + Called by the control when the underlying ActiveX control is discarded. + + + + + Returns the automation object for the web browser + + + + + This method will be called to give you a chance to create your own event sink + + + + + Detaches the event sink + + + + + 在文档下载开始时激发 + + + + + Raises the event + + Empty + + You could start an animation or a notification that downloading is starting + + + + + 下载完成后触发 + + + Here you could start monitoring for script errors. + + + + + Raises the event + + Empty + + + + 在开始浏览新网页时激发. + + + + + 在打开新的网页窗口时激发 + + + + + Raises the event + + Thrown when BrowserExtendedNavigatingEventArgs is null + + + + Raises the event + + Thrown when BrowserExtendedNavigatingEventArgs is null + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新窗口事件,只限Window XP SP2或以上系统支持 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overridden + + The send to this procedure + + + + A list of all the available window messages + + + + + Raises the event + + + + + 在网页窗口关闭时激发 + + + Do not confuse this with DWebBrowserEvents2.Quit... That's something else. + + + + + Flags used by INewWindowManager::EvaluateNewWindow. + These values are taken into account in the decision of whether to display a pop-up window. + + + + + No information Present + + + + + The page is unloading. This flag is set in response to the onbeforeunload and onunload events. + Some pages load pop-up windows when you leave them rather than when you enter. This flag is used to identify those situations. + + + + + The call to INewWindowManager::EvaluateNewWindow is the result of a user-initiated action + (a mouse click or key press). Use this flag in conjunction with the NWMF_FIRST_USERINITED flag + to determine whether the call is a direct or indirect result of the user-initiated action. + + + + + When NWMF_USERINITED is present, this flag indicates that the call to + INewWindowManager::EvaluateNewWindow is the first query that results from this user-initiated action. + Always use this flag in conjunction with NWMF_USERINITED. + + + + + The override key (ALT) was pressed. The override key is used to bypass the pop-up manager梐llowing + all pop-up windows to display梐nd must be held down at the time that INewWindowManager::EvaluateNewWindow is called. + + + + + The new window attempting to load is the result of a call to the showHelp method. Help is sometimes displayed in a separate window, + and this flag is valuable in those cases. + + + + + The new window is a dialog box that displays HTML content. + + + + + Indicates that the EvaluateNewWindow method is being called through a marshalled Component Object Model (COM) proxy + from another thread. In this situation, the method should make a decision and return immediately without performing + blocking operations such as showing modal user interface (UI). Lengthy operations will cause the calling thread to + appear unresponsive. + + + + + HRESULT constants + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a form that supports custom theme + + + + + 标签新建按钮事件 + + + + + 标签关闭按钮事件 + + + + + 标签创建时事件 + + + + + 在标签栏创建时激发 + + + + + + + 内边距 + + + + + 默认内边距 + + + + + 标题 + + + + + 皮肤/主题 + + + + + 是否可拖动改变窗体大小 + + + + + 窗体边界大小,鼠标移动到该边界将变成指针形状,拖动可改变窗体大小 + + + + + 窗体边框大小 + + + + + 标题栏高度 + + + + + 窗体圆角程度 + + + + + 窗体圆角样式 + + + + + 控制按钮相对于右上角的偏移量 + + + + + 关闭/最大化/最小化按钮之间的距离,可以设置成负值使它们重叠 + + + + + 标题栏图标尺寸 + + + + + 标题栏图标与窗体左边框的距离 + + + + + 标题距离左边的距离 + + + + + 窗体关闭按钮的尺寸 + + + + + 窗体最大化/还原按钮的大小 + + + + + 窗体最小化按钮的大小 + + + + + 是否显示阴影 + + + + + 窗体阴影宽度 + + + + + 使用阴影来缩放 + + + + + 窗体阴影颜色 + + + + + 阴影从里到外是逐渐变浅的,这个值设置深色部分的透明度,ARGB中的A值 + + + + + 阴影从里到外是逐渐变浅的,这个值设置浅色部分的透明度,ARGB中的A值 + + + + + 表示去掉自画的边框及标题栏后,剩下的可用的客户区区域,坐标相对于窗体左上角 + + + + + 表示去掉自画的边框及标题栏后,剩下的可用的客户区大小 + + + + + 表示MDI标签栏的区域,包括bottom-region + + + + + MGdUI皮肤 + + + + + 获取子窗体 + + + + + + 通过sendmessage方式激活子窗体以避免闪烁 + + + + + + 当子窗体关闭时激发 + + + + + + + 子窗体可视化变化 + + + + + + + 获取当前的子窗体列表 + + + + + + 判断所接收到的 wm_nc-calc-size 消息是否指示窗体即将最小化 + + + + + 判断所接收到的 wm_nc-calc-size 消息是否指示窗体即将最大化 + + + + + to make the client area to have 3D view + + + + + 消息 + + + + + + 画UI + + + + + + 在画背景时激发 + + + + + + 重写该方法解决在VS设计器中,每次保存一个新的尺寸,再打开尺寸会变大的问题 + + + + + 创建控件时激发 + + + + + 窗体可见变化时激发 + + + + + + 大小改变时激发 + + + + + + 在位置变化时激发 + + + + + + 窗体激活 + + + + + + 窗体关闭后激发 + + + + + + 加载时 + + + + + + 在子窗体激活时激发 + + + + + + 标签菜单 + + + + + 窗体上移动鼠标时激发 + + + + + + 获取当前点击的标签项 + + + + + 在窗体上按下鼠标时激发 + + + + + + 在窗体上放开鼠标时激发 + + + + + + 在鼠标离开窗体时激发 + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + 该类处理mdi-bar的绘制及鼠标事件管理 + + + + + use left,top,right to location the bar in owner form, + the margin is from Form.ClientRectangle + + + + + 整个标签栏高度,包含标签栏底部区域、标签、标签顶部空隙 + + + + + 标签栏底部区域的高度 + + + + + 是否显示标签栏边框 + + + + + 是否显示标签栏背景 + + + + + 标签栏左内边距 + + + + + 标签栏右内边距 + + + + + 标签高度 + + + + + 激活的标签高度 + + + + + tab顶部与bar顶部的空间,这个值用来计算 BarHeight + + + + + 每个标签的左右边界可以不是垂直的,而是都有一个斜度 + + + + + tab与tab之间的距离,用负值可以使tab有重叠的效果 + + + + + 标签是否显示图标 + + + + + 是否显示标签关闭按钮 + + + + + 标签图标大小 + + + + + 标签图标距离左边的距离 + + + + + 标签文字距离左边的距离 + + + + + 标签关闭按钮的大小 + + + + + 标签关闭按钮距离右边的距离 + + + + + 是否显示新建标签按钮 + + + + + 新建标签按钮的大小 + + + + + 新建标签距离左边的距离 + + + + + 按钮与Bar底部的距离 + + + + + 一个tab允许的最小宽度 + + + + + 一个tab允许的最大显示宽度 + + + + + 标签正常宽度 + + + + + 同步_listTabItems与mdi主窗体实际存在的子form + + + + + 为每个tab分配空间,如果tab数目太多,则有些会被隐藏 + + + + + 重绘整个标签栏 + + + + + + 处理鼠标事件。该方法会触发一些click事件,重刷一些按钮等 + + + + + + + 该类表示一个单独的标签项 + + + + + 该标签所对应的窗体 + + + + + 最终分配到的整个tab的宽度 + + + + + 表示所对应的form是否仍未被关闭 + + + + + 是否因空间不足而被隐藏 + + + + + 返回全部显示该标签文本所需的长度 + + + + + + 返回显示全部文本时该tab所需的宽度,该宽度不超过bar-container + 规定的tabmaxwidth + + + + + + 居左 + + + + + 显示在最后一个标签后面 + + + + + 该类封装设置一个主题所需的信息,可以继承该类实现不同的主题 + + + + + 主题名称,用于标识主题,对主题进行简单描述 + + + + + 窗体边界大小,鼠标移动到该边界将变成指针形状,拖动可改变窗体大小 + + + + + 窗体边框大小 + + + + + 窗体标题栏高度 + + + + + 标题栏图标与窗体左边框的距离 + + + + + 标题栏图标尺寸 + + + + + 标题栏文本左边距 + + + + + 控制按钮(关闭按钮)相对于窗体右上角的偏移量 + + + + + 窗体关闭按钮的尺寸 + + + + + 窗体最大化/还原按钮的大小 + + + + + 窗体最小化按钮的大小 + + + + + 关闭/最大化/最小化按钮之间的距离,可以设置成负值使它们重叠 + + + + + 窗体圆角程度 + + + + + 窗体圆角样式 + + + + + 是否使用默认的圆角样式,该样式为左上角和右上角圆角, + 最好在窗体边框较粗时才使用该样式 + + + + + 是否在标题栏上绘制图标 + + + + + 是否在标题栏上绘制文本 + + + + + 是否显示窗体阴影 + + + + + 窗体阴影大小 + + + + + 拖动窗体阴影是否可以改变窗体大小 + + + + + 阴影的颜色,可以设置成其他颜色而不一定是黑色 + + + + + 阴影从里到外是逐渐变浅的,这个值设置深色部分的透明度,ARGB中的A值 + + + + + 阴影从里到外是逐渐变浅的,这个值设置浅色部分的透明度,ARGB中的A值 + + + + + 是否在客户区边界画线使其看起来有立体感 + + + + + 窗体标题栏文字是否居中显示 + + + + + 窗体边框最外一像素的颜色 + + + + + 窗体边框第二最外像素的颜色 + + + + + 窗体边框其他部分颜色,如果窗体边框大小大于2,则其他像素将用此颜色画出 + + + + + 标题栏颜色是从上到下渐变的,这个值设置上边的颜色值 + + + + + 标题栏颜色是从上到下渐变的,这个值设置下边的颜色值 + + + + + 标题栏文字颜色 + + + + + 窗体背景颜色,该值将覆盖窗体自带的BackColor属性值 + + + + + 窗体关闭按钮的颜色集合 + + + + + 窗体最大化/还原按钮的颜色集合 + + + + + 窗体最小化按钮的颜色集合 + + + + + 默认状态下关闭按钮背景图片 + + + + + 鼠标移过去时关闭按钮背景图片 + + + + + 鼠标按下时关闭按钮背景图片 + + + + + 默认状态下最大化按钮背景图片 + + + + + 鼠标移过去时最大化按钮背景图片 + + + + + 鼠标按下时最大化按钮背景图片 + + + + + 默认状态下恢复按钮背景图片 + + + + + 鼠标移过去时恢复按钮背景图片 + + + + + 鼠标按下时恢复按钮背景图片 + + + + + 默认状态下最小化按钮背景图片 + + + + + 鼠标移过去时最小化按钮背景图片 + + + + + 鼠标按下时最小化按钮背景图片 + + + + + 是否用SendMessage的方式切换子窗体,以避免子窗体切换时产生的闪烁 + + + + + Mdi-Bar与窗体左、上、右边界的距离,只用到这三个值,Bottom值没用到。 + 用这三个值来确定Mdi-Bar的宽度及其在窗体中的位置 + + + + + 内部左边空白,第一个标签将从这个空白距离之后开始 + + + + + 标签栏内部右边空白 + + + + + 标签栏背景颜色 + + + + + 标签栏边框颜色 + + + + + 标签栏背景图片 + + + + + 是否显示标签栏边框 + + + + + 标签栏下边区域的背景颜色 + + + + + 标签栏下边区域的高度 + + + + + 标签高度 + + + + + 被选中的标签高度,可以设置成与TabHeight不一样的值,以突出显示被选中状态 + + + + + 标签之间的距离,设成负值可以使标签有重叠的效果 + + + + + 标签的最大宽度,任何情况下标签都不能超过这个宽度 + + + + + 标签正常宽度,如果标签需要很短的宽度(比如20像素)就可以显示完上面的文字, + 但是Mdi-Bar上有足够的空间时,标签会以正常宽度(比如100像素)显示 + + + + + 标签最小宽度,当标签小于这个宽度时将被隐藏 + + + + + 标签梯度大小,标签可以不以矩形方式显示,而是有一个梯度/斜度。 + + + + + 标签顶部空白,这个值用于参与计算Mdi-Bar高度,计算方式为: + Mdi-Bar Height = BottomRegionHeight + TabHeight + TabTopSpace + + + + + 标签上是否显示子窗体图标 + + + + + 标签上是否显示子窗体关闭图标 + + + + + 选中状态的标签的上部背景色,与下部背景色不同时,标签背景色就有渐变效果 + + + + + 选中状态的标签的下部背景色,与上部背景色不同时,标签背景色就有渐变效果 + + + + + 标签激活时字体颜色 + + + + + 非选中状态的标签的字体颜色 + + + + + 非选中状态的标签的上部背景色 + + + + + 非选中状态的标签的下部背景色 + + + + + 标签外边框颜色 + + + + + 标签内边框颜色,这个颜色一般具有一定的透明度 + + + + + 是否显示标签边框 + + + + + 是否显示默认的新建标签按钮(NewTabBtn) + + + + + NewTabBtn与下边框的距离,这个值用来定位按钮的Y坐标 + + + + + 新建标签按钮与左边框的距离,这个值用来定位按钮的X坐标 + + + + + 新建标签按钮大小 + + + + + 按钮颜色集合 + + + + + 是否一直显示ListAllBtn,即使在没有标签被隐藏的情况下 + + + + + 《显示全部标签》按钮的位置 + + + + + 《显示全部标签》按钮与下边框的距离,这个值用来定位按钮的Y坐标 + + + + + 《显示全部标签》按钮与左边框的距离,这个值用来定位按钮的X坐标 + + + + + 《显示全部标签》按钮的颜色 + + + + + 《显示全部标签》按钮的大小 + + + + + 皮肤主题 + + + + + 设置百分比 + + + + + + + + + 引发 ValueChanged 事件 + + + + + + 引发 ThemeChanged 事件 + + + + + + 指示鼠标位于哪个区域 + + + + + 控件Value值发生变化后引发 + + + + + 控件绘制MainLine前引发, 可以设置Cancel参数来取消默认的绘制 + + + + + 控件绘制Button前引发 + + + + + 引发 ValueChanged 事件 + + + + + 引发 BeforePaintMainLine 事件 + + + + + 引发 BeforePaintButton 事件 + + + + + 将Value值加一个LargeChange量 + + + + + 将Value值减一个LargeChange量 + + + + + 将Value值加一个SmallChange量 + + + + + 将Value值减一个SmallChange量 + + + + + 提供产生各种路径的静态方法,比如圆角路径、关闭按钮上的x路径、+号路径 + + + + + 圆角样式 + + + + + 无 + + + + + 所有 + + + + + 上 + + + + + 下 + + + + + 左 + + + + + 右 + + + + + SimpleObject指的是只有一种状态(不像普通按钮一样有三种状态),并且其上的元素 + 布局比较简单的Object + + + + + + + + + + + + + + + + + + + + DevExpress风格皮肤 + + + + + DevExpress风格皮肤 + + + + + 新风格皮肤 + + + + + 新风格皮肤 + + + + + 基础皮肤 + + + + + VS2013风格皮肤 + + + + + this theme is just for chrome one quarter style + + + + + for diamond ring style only + + + + + Location of cursor hot spot returnet in WM_NCHITTEST. + + + + + On the screen background or on a dividing line between windows + (same as HTNOWHERE, except that the DefWindowProc function produces a system beep to indicate an error). + + + + + In a window currently covered by another window in the same thread + (the message will be sent to underlying windows in the same thread until one of them returns a code that is not HTTRANSPARENT). + + + + + On the screen background or on a dividing line between windows. + + + + In a client area. + + + In a title bar. + + + In a window menu or in a Close button in a child window. + + + In a size box (same as HTSIZE). + + + In a menu. + + + In a horizontal scroll bar. + + + In the vertical scroll bar. + + + In a Minimize button. + + + In a Maximize button. + + + In the left border of a resizable window + (the user can click the mouse to resize the window horizontally). + + + + In the right border of a resizable window + (the user can click the mouse to resize the window horizontally). + + + + In the upper-horizontal border of a window. + + + In the upper-left corner of a window border. + + + In the upper-right corner of a window border. + + + In the lower-horizontal border of a resizable window + (the user can click the mouse to resize the window vertically). + + + In the lower-left corner of a border of a resizable window + (the user can click the mouse to resize the window diagonally). + + + In the lower-right corner of a border of a resizable window + (the user can click the mouse to resize the window diagonally). + + + In the border of a window that does not have a sizing border. + + + In a Close button. + + + In a Help button. + + + + Contains the new coordinates of a window that has been moved or resized, that is, it is the proposed new window coordinates. + + + + + Contains the coordinates of the window before it was moved or resized. + + + + + Contains the coordinates of the window's client area before the window was moved or resized. + + + + + Pointer to a WINDOWPOS structure that contains the size and position values specified in the operation that moved or resized the window. + + + + + + + + + + 是否在这个按钮上按下了鼠标未释放 + + + + + 是否可见 + + + + + + + + + + 画两次可以加深颜色 + + + + + 用于在click事件中传回数据 + + + + + 获取或设置是否将绘制完全限制在指定的区域内 + + + + + + + + + + + + + + + + + 线条图 + + + 作者: Kingthy + 日期: 2007-09-11 + MSN: Kingthy@gmail.com + 转载请注明原作者,当你有更新修改时如果方便的希望能发一份给我.谢谢 + + + + + + + + + + + 画值 + + 画布 + X轴数据 + + + + 走势图 + + + 作者: Kingthy + 日期: 2007-09-11 + MSN: Kingthy@gmail.com + 转载请注明原作者,当你有更新修改时如果方便的希望能发一份给我.谢谢 + + + + + + + + + + 初始化参数 + + + + + 返回或设置X轴间隔 + + + + + 标题 + + + + + 返回图片的宽度 + + + + + 返回或设置图片的高度 + + + + + X轴的间距 + + + + + Y轴的间距 + + + + + 标题的颜色 + + + + + 标题的字体 + + + + + 背景颜色 + + + + + X轴的颜色 + + + + + Y轴的颜色 + + + + + 返回X轴数据的最大值(供给Painter调用) + + + + + 返回图片数据 + + + + + 画布 + + + + + 作图器 + + + + + 释放内容资源 + + + + + 获取X轴中的最大值 + + + + + + + 获取所有X轴列中的最大值 + + + + + + + 初始化图片 + + X轴的数据 + + + + + 画一条走势图 + + + + + + 画多条走势图 + + + + + + 作图器的基础类 + + + 作者: Kingthy + 日期: 2007-09-11 + MSN: Kingthy@gmail.com + 转载请注明原作者,当你有更新修改时如果方便的希望能发一份给我.谢谢 + + + + + + + + + + + 返回此作图器的相关链走势图 + + + + + 获取某值在Y轴上的位置 + + 当前点的值 + 点坐标 + + + + 画XY轴线 + + 画布 + X轴的数据 + + + + 画标题 + + + + + + 画走势线 + + 画布 + X轴数据 + + + + 方块图 + + + 作者: Kingthy + 日期: 2007-09-11 + MSN: Kingthy@gmail.com + 转载请注明原作者,当你有更新修改时如果方便的希望能发一份给我.谢谢 + + + + + + + + + + + 画值 + + 画布 + X轴数据 + + + + 走势图的X轴数据 + + + 作者: Kingthy + 日期: 2007-09-11 + MSN: Kingthy@gmail.com + 转载请注明原作者,当你有更新修改时如果方便的希望能发一份给我.谢谢 + + + + + + + + + + + + + + + + + + 标题 + + + + + 值 + + + + + 标题的颜色 + + + + + 标题的字体 + + + + + 值的颜色 + + + + + 值的字体 + + + + + 绘制颜色 + + + + + 值是否可见 + + + + + 克隆自身 + + + + + + 定义X轴的数据集合 + + + 作者: Kingthy + 日期: 2007-09-11 + MSN: Kingthy@gmail.com + 转载请注明原作者,当你有更新修改时如果方便的希望能发一份给我.谢谢 + + + + + + + + + + + + + + + + 添加一批数据 + + 轴的标题 + + + + 添加一批数据 + + 轴的标题 + 轴的值 + + + + 重置轴的值 + + 轴的值 + + + + 克隆数据 + + + + + + Indicates the behavior of a key when a cell "on the edge" is being edited. + and the normal behavior of that key would exceed the edge. For example, + for a key that normally moves one column to the left, the "edge" would be + the left most column, since the normal action of the key cannot be taken + (since there are no more columns to the left). + + + + + 按键将被忽略 + + + + + 按键将导致单元格编辑环绕到相对边缘的单元格。 + + + + + 按键将Wrap,但该列将更改为相应的相邻列。这只对正常操作为ChangeRow的键有意义。 + + + + + 按键将Wrap,但该行将更改为相应的相邻行。这只对正常操作为ChangeColumn的键有意义. + + + + + 该键将导致当前编辑操作结束。 + + + + + Indicates the normal behaviour of a key when used during a cell edit + operation. + + + + + The key press will be ignored + + + + + The key press will end the current edit and begin an edit + operation on the next editable cell to the left. + + + + + The key press will end the current edit and begin an edit + operation on the next editable cell to the right. + + + + + The key press will end the current edit and begin an edit + operation on the row above. + + + + + The key press will end the current edit and begin an edit + operation on the row below + + + + + The key press will cancel the current edit + + + + + The key press will finish the current edit operation + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Custom verb that can be used for specialized actions. + + + + + Instances of this class handle key presses during a cell edit operation. + + + + + 设置给定键的行为 + + + + + + + + 处理按键操作 + + + + True if the key was completely handled. + + + + Gets or sets the ObjectListView on which the current key is being handled. + This cannot be null. + + + + + Gets the row of the cell that is currently being edited + + + + + Gets the index of the column of the cell that is being edited + + + + + Gets or sets the map that remembers the normal behaviour of keys + + + + + Gets or sets the map that remembers the desired behaviour of keys + on edge cases. + + + + + Setup the default key mapping + + + + + Handle the end edit command + + + + + Handle the cancel edit command + + + + + Placeholder that subclasses can override to handle any custom verbs + + + + + + + + Handle a change row command + + + + + + + Handle a change column command + + + + + + + Start editing the indicated cell if that cell is not already being edited + + The row to edit + The cell within that row to edit + + + + Gets the adjacent item to the given item in the given direction. + If that item is disabled, continue in that direction until an enabled item is found. + + The row whose neighbour is sought + The direction of the adjacentness + An OLVListView adjacent to the given item, or null if there are no more enabled items in that direction. + + + + Gets the adjacent item to the given item in the given direction, wrapping if needed. + + The row whose neighbour is sought + The direction of the adjacentness + An OLVListView adjacent to the given item, or null if there are no more items in that direction. + + + + Gets a collection of columns that are editable in the order they are shown to the user + + + + + These items allow combo boxes to remember a value and its description. + + + + + + + + + + + + + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + This editor shows and auto completes values from the given listview column. + + + + + Create an AutoCompleteCellEditor + + + + + + + This combo box is specialised to allow editing of an enum. + + + + + + + + + + + This editor simply shows and edits integer values. + + + + + + + + + + Gets or sets the value shown by this editor + + + + + This editor simply shows and edits unsigned integer values. + + This class can't be made public because unsigned int is not a + CLS-compliant type. If you want to use, just copy the code to this class + into your project and use it from there. + + + + This editor simply shows and edits boolean values. + + + + + + + + + + This editor simply shows and edits boolean values using a checkbox + + + + + Gets or sets the value shown by this editor + + + + + Gets or sets how the checkbox will be aligned + + + + + This editor simply shows and edits floating point values. + + You can intercept the CellEditStarting event if you want + to change the characteristics of the editor. For example, by increasing + the number of decimal places. + + + + + + + + + Gets or sets the value shown by this editor + + + + + A delegate that creates an editor for the given value + + The model from which that value came + The column for which the editor is being created + A representative value of the type to be edited. This value may not be the exact + value for the column/model combination. It could be simply representative of + the appropriate type of value. + A control which can edit the given value + + + + An editor registry gives a way to decide what cell editor should be used to edit + the value of a cell. Programmers can register non-standard types and the control that + should be used to edit instances of that type. + + + All ObjectListViews share the same editor registry. + + + + + Create an EditorRegistry + + + + + Register that values of 'type' should be edited by instances of 'controlType'. + + The type of value to be edited + The type of the Control that will edit values of 'type' + + ObjectListView.EditorRegistry.Register(typeof(Color), typeof(MySpecialColorEditor)); + + + + + Register the given delegate so that it is called to create editors + for values of the given type + + The type of value to be edited + The delegate that will create a control that can edit values of 'type' + + ObjectListView.EditorRegistry.Register(typeof(Color), CreateColorEditor); + ... + public Control CreateColorEditor(Object model, OLVColumn column, Object value) + { + return new MySpecialColorEditor(); + } + + + + + Register a delegate that will be called to create an editor for values + that have not been handled. + + The delegate that will create a editor for all other types + + + + Register a delegate that will be given a chance to create a control + before any other option is considered. + + The delegate that will create a control + + + + Remove the registered handler for the given type + + Does nothing if the given type doesn't exist + The type whose registration is to be removed + + + + Create and return an editor that is appropriate for the given value. + Return null if no appropriate editor can be found. + + The model involved + The column to be edited + The value to be edited. This value may not be the exact + value for the column/model combination. It could be simply representative of + the appropriate type of value. + A Control that can edit the given type of values + + + + Create and return an editor that will edit values of the given type + + A enum type + + + + A DataListView is a ListView that can be bound to a datasource (which would normally be a DataTable or DataView). + + + This listview keeps itself in sync with its source datatable by listening for change events. + The DataListView will automatically create columns to show all of the data source's columns/properties, if there is not already + a column showing that property. This allows you to define one or two columns in the designer and then have the others generated automatically. + If you don't want any column to be auto generated, set to false. + These generated columns will be only the simplest view of the world, and would look more interesting with a few delegates installed. + This listview will also automatically generate missing aspect getters to fetch the values from the data view. + Changing data sources is possible, but error prone. Before changing data sources, the programmer is responsible for modifying/resetting + the column collection to be valid for the new data source. + Internally, a CurrencyManager controls keeping the data source in-sync with other users of the data source (as per normal .NET + behavior). This means that the model objects in the DataListView are DataRowView objects. If you write your own AspectGetters/Setters, + they will be given DataRowView objects. + + + + + Make a DataListView + + + + + + + + + + + Gets or sets whether or not columns will be automatically generated to show the + columns when the DataSource is set. + + This must be set before the DataSource is set. It has no effect afterwards. + + + + Get or set the DataSource that will be displayed in this list view. + + The DataSource should implement either , , + or . Some common examples are the following types of objects: + + + + + + + + When binding to a list container (i.e. one that implements the + interface, such as ) + you must also set the property in order + to identify which particular list you would like to display. You + may also set the property even when + DataSource refers to a list, since can + also be used to navigate relations between lists. + When a DataSource is set, the control will create OLVColumns to show any + data source columns that are not already shown. + If the DataSource is changed, you will have to remove any previously + created columns, since they will be configured for the previous DataSource. + . + + + + + Gets or sets the name of the list or table in the data source for which the DataListView is displaying data. + + If the data source is not a DataSet or DataViewManager, this property has no effect + + + + Gets or sets the DataSourceAdaptor that does the bulk of the work needed + for data binding. + + + Adaptors cannot be shared between controls. Each DataListView needs its own adapter. + + + + + Add the given collection of model objects to this control. + + A collection of model objects + This is a no-op for data lists, since the data + is controlled by the DataSource. Manipulate the data source + rather than this view of the data source. + + + + Insert the given collection of objects before the given position + + Where to insert the objects + The objects to be inserted + This is a no-op for data lists, since the data + is controlled by the DataSource. Manipulate the data source + rather than this view of the data source. + + + + Remove the given collection of model objects from this control. + + This is a no-op for data lists, since the data + is controlled by the DataSource. Manipulate the data source + rather than this view of the data source. + + + + Change the Unfreeze behaviour + + + + + Handles parent binding context changes + + Unused EventArgs. + + + + A DataTreeListView is a TreeListView that calculates its hierarchy based on + information in the data source. + + + Like a , a DataTreeListView sources all its information + from a combination of and . + can be a DataTable, DataSet, + or anything that implements . + + + To function properly, the DataTreeListView requires: + + the table to have a column which holds a unique for the row. The name of this column must be set in . + the table to have a column which holds id of the hierarchical parent of the row. The name of this column must be set in . + a value which identifies which rows are the roots of the tree (). + + The hierarchy structure is determined finding all the rows where the parent key is equal to . These rows + become the root objects of the hierarchy. + + Like a TreeListView, the hierarchy must not contain cycles. Bad things will happen if the data is cyclic. + + + + + Gets or sets whether or not columns will be automatically generated to show the + columns when the DataSource is set. + + This must be set before the DataSource is set. It has no effect afterwards. + + + + Get or set the DataSource that will be displayed in this list view. + + The DataSource should implement either , , + or . Some common examples are the following types of objects: + + + + + + + + When binding to a list container (i.e. one that implements the + interface, such as ) + you must also set the property in order + to identify which particular list you would like to display. You + may also set the property even when + DataSource refers to a list, since can + also be used to navigate relations between lists. + + + + + Gets or sets the name of the list or table in the data source for which the DataListView is displaying data. + + If the data source is not a DataSet or DataViewManager, this property has no effect + + + + Gets or sets the name of the property/column that uniquely identifies each row. + + + + The value contained by this column must be unique across all rows + in the data source. Odd and unpredictable things will happen if two + rows have the same id. + + Null cannot be a valid key value. + + + + + Gets or sets the name of the property/column that contains the key of + the parent of a row. + + + + The test condition for deciding if one row is the parent of another is functionally + equivilent to this: + + Object.Equals(candidateParentRow[this.KeyAspectName], row[this.ParentKeyAspectName]) + + + Unlike key value, parent keys can be null but a null parent key can only be used + to identify root objects. + + + + + Gets or sets the value that identifies a row as a root object. + When the ParentKey of a row equals the RootKeyValue, that row will + be treated as root of the TreeListView. + + + + The test condition for deciding a root object is functionally + equivilent to this: + + Object.Equals(candidateRow[this.ParentKeyAspectName], this.RootKeyValue) + + + The RootKeyValue can be null. Actually, it can be any value that can + be compared for equality against a basic type. + If this is set to the wrong value (i.e. to a value that no row + has in the parent id column), the list will be empty. + + + + + Gets or sets the value that identifies a row as a root object. + . The RootKeyValue can be of any type, + but the IDE cannot sensibly represent a value of any type, + so this is a typed wrapper around that property. + + + If you want the root value to be something other than a string, + you will have set it yourself. + + + + + Gets or sets whether or not the key columns (id and parent id) should + be shown to the user. + + This must be set before the DataSource is set. It has no effect + afterwards. + + + + Gets or sets the DataSourceAdaptor that does the bulk of the work needed + for data binding. + + + + + An IDragSource controls how drag out from the ObjectListView will behave + + + + + A drag operation is beginning. Return the data object that will be used + for data transfer. Return null to prevent the drag from starting. The data + object will normally include all the selected objects. + + + The returned object is later passed to the GetAllowedEffect() and EndDrag() + methods. + + What ObjectListView is being dragged from. + Which mouse button is down? + What item was directly dragged by the user? There may be more than just this + item selected. + The data object that will be used for data transfer. This will often be a subclass + of DataObject, but does not need to be. + + + + What operations are possible for this drag? This controls the icon shown during the drag + + The data object returned by StartDrag() + A combination of DragDropEffects flags + + + + The drag operation is complete. Do whatever is necessary to complete the action. + + The data object returned by StartDrag() + The value returned from GetAllowedEffects() + + + + A do-nothing implementation of IDragSource that can be safely subclassed. + + + + + See IDragSource documentation + + + + + + + + + See IDragSource documentation + + + + + + + See IDragSource documentation + + + + + + + A reasonable implementation of IDragSource that provides normal + drag source functionality. It creates a data object that supports + inter-application dragging of text and HTML representation of + the dragged rows. It can optionally force a refresh of all dragged + rows when the drag is complete. + + Subclasses can override GetDataObject() to add new + data formats to the data transfer object. + + + + Construct a SimpleDragSource + + + + + Construct a SimpleDragSource that refreshes the dragged rows when + the drag is complete + + + + + + Gets or sets whether the dragged rows should be refreshed when the + drag operation is complete. + + + + + Create a DataObject when the user does a left mouse drag operation. + See IDragSource for further information. + + + + + + + + + Which operations are allowed in the operation? By default, all operations are supported. + + + All opertions are supported + + + + The drag operation is finished. Refreshe the dragged rows if so configured. + + + + + + + Create a data object that will be used to as the data object + for the drag operation. + + + Subclasses can override this method add new formats to the data object. + + The ObjectListView that is the source of the drag + A data object for the drag + + + + Objects that implement this interface can acts as the receiver for drop + operation for an ObjectListView. + + + + + Gets or sets the ObjectListView that is the drop sink + + + + + Draw any feedback that is appropriate to the current drop state. + + + Any drawing is done over the top of the ListView. This operation should disturb + the Graphic as little as possible. Specifically, do not erase the area into which + you draw. + + A Graphic for drawing + The contents bounds of the ListView (not including any header) + + + + The user has released the drop over this control + + + Implementators should set args.Effect to the appropriate DragDropEffects. This value is returned + to the originator of the drag. + + + + + + A drag has entered this control. + + Implementators should set args.Effect to the appropriate DragDropEffects. + + + + + Change the cursor to reflect the current drag operation. + + + + + + The drag has left the bounds of this control + + + + + The drag is moving over this control. + + This is where any drop target should be calculated. + Implementators should set args.Effect to the appropriate DragDropEffects. + + + + + + Should the drag be allowed to continue? + + + + + + This is a do-nothing implementation of IDropSink that is a useful + base class for more sophisticated implementations. + + + + + Gets or sets the ObjectListView that is the drop sink + + + + + Draw any feedback that is appropriate to the current drop state. + + + Any drawing is done over the top of the ListView. This operation should disturb + the Graphic as little as possible. Specifically, do not erase the area into which + you draw. + + A Graphic for drawing + The contents bounds of the ListView (not including any header) + + + + The user has released the drop over this control + + + Implementators should set args.Effect to the appropriate DragDropEffects. This value is returned + to the originator of the drag. + + + + + + A drag has entered this control. + + Implementators should set args.Effect to the appropriate DragDropEffects. + + + + + The drag has left the bounds of this control + + + + + The drag is moving over this control. + + This is where any drop target should be calculated. + Implementators should set args.Effect to the appropriate DragDropEffects. + + + + + + Change the cursor to reflect the current drag operation. + + You only need to override this if you want non-standard cursors. + The standard cursors are supplied automatically. + + + + + Should the drag be allowed to continue? + + + You only need to override this if you want the user to be able + to end the drop in some non-standard way, e.g. dragging to a + certain point even without releasing the mouse, or going outside + the bounds of the application. + + + + + + This is called when the mouse leaves the drop region and after the + drop has completed. + + + + + The enum indicates which target has been found for a drop operation + + + + + No applicable target has been found + + + + + The list itself is the target of the drop + + + + + An item is the target + + + + + Between two items (or above the top item or below the bottom item) + can be the target. This is not actually ever a target, only a value indicate + that it is valid to drop between items + + + + + Above an item is the target + + + + + Below an item is the target + + + + + A subitem is the target of the drop + + + + + On the right of an item is the target (not currently used) + + + + + On the left of an item is the target (not currently used) + + + + + This class represents a simple implementation of a drop sink. + + + Actually, it should be called CleverDropSink -- it's far from simple and can do quite a lot in its own right. + + + + + Make a new drop sink + + + + + Get or set the locations where a drop is allowed to occur (OR-ed together) + + + + + Gets or sets whether this sink allows model objects to be dragged from other lists. Defaults to true. + + + + + Gets or sets whether the ObjectListView should scroll when the user drags + something near to the top or bottom rows. Defaults to true. + + AutoScroll does not scroll horizontally. + + + + Gets the billboard overlay that will be used to display feedback + messages during a drag operation. + + Set this to null to stop the feedback. + + + + Get or set whether a drop can occur between items of the list + + + + + Get or set whether a drop can occur on the listview itself + + + + + Get or set whether a drop can occur on items in the list + + + + + Get or set whether a drop can occur on a subitem in the list + + + + + Gets or sets whether the drop sink should draw feedback onto the given list + during the drag operation. Defaults to true. + + If this is false, you will have to give the user feedback in some + other fashion, like cursor changes + + + + Get or set the index of the item that is the target of the drop + + + + + Get the item that is the target of the drop + + + + + Get or set the location of the target of the drop + + + + + Get or set the index of the subitem that is the target of the drop + + + + + Get or set the color that will be used to provide drop feedback + + + + + Get whether the alt key was down during this drop event + + + + + Get whether any modifier key was down during this drop event + + + + + Get whether the control key was down during this drop event + + + + + Get whether the left mouse button was down during this drop event + + + + + Get whether the right mouse button was down during this drop event + + + + + Get whether the right mouse button was down during this drop event + + + + + Get whether the shift key was down during this drop event + + + + + Get or set the state of the keys during this drop event + + + + + Gets or sets whether the drop sink will automatically use cursors + based on the drop effect. By default, this is true. If this is + set to false, you must set the Cursor yourself. + + + + + Triggered when the sink needs to know if a drop can occur. + + + Handlers should set Effect to indicate what is possible. + Handlers can change any of the DropTarget* setttings to change + the target of the drop. + + + + + Triggered when the drop is made. + + + + + Triggered when the sink needs to know if a drop can occur + AND the source is an ObjectListView + + + Handlers should set Effect to indicate what is possible. + Handlers can change any of the DropTarget* setttings to change + the target of the drop. + + + + + Triggered when the drop is made. + AND the source is an ObjectListView + + + + + Cleanup the drop sink when the mouse has left the control or + the drag has finished. + + + + + Draw any feedback that is appropriate to the current drop state. + + + Any drawing is done over the top of the ListView. This operation should disturb + the Graphic as little as possible. Specifically, do not erase the area into which + you draw. + + A Graphic for drawing + The contents bounds of the ListView (not including any header) + + + + The user has released the drop over this control + + + + + + A drag has entered this control. + + Implementators should set args.Effect to the appropriate DragDropEffects. + + + + + Change the cursor to reflect the current drag operation. + + + + + + The drag is moving over this control. + + + + + + Trigger the Dropped events + + + + + + Trigger CanDrop + + + + + + Trigger Dropped + + + + + + Trigger ModelCanDrop + + + + + + Trigger ModelDropped + + + + + + Handle the timer tick event, which is sent when the listview should + scroll + + + + + When the mouse is at the given point, what should the target of the drop be? + + This method should update the DropTarget* members of the given arg block + + The mouse point, in client co-ordinates + + + + What sort of action is possible when the mouse is at the given point? + + + + + + + + + + Based solely on the state of the modifier keys, what drop operation should + be used? + + The drop operation that matches the state of the keys + + + + Should the listview be made to scroll when the mouse is at the given point? + + + + + + Update the state of our sink to reflect the information that + may have been written into the drop event args. + + + + + + Draw the feedback that shows that the background is the target + + + + + + + Draw the feedback that shows that an item (or a subitem) is the target + + + + + DropTargetItem and DropTargetSubItemIndex tells what is the target + + + + + Draw the feedback that shows the drop will occur before target + + + + + + + Draw the feedback that shows the drop will occur after target + + + + + + + Return a GraphicPath that is round corner rectangle. + + + + + + + + Calculate the target rectangle when the given item (and possible subitem) + is the target of the drop. + + + + + + + + Draw a "between items" line at the given co-ordinates + + + + + + + + + + This drop sink allows items within the same list to be rearranged, + as well as allowing items to be dropped from other lists. + + + + This class can only be used on plain ObjectListViews and FastObjectListViews. + The other flavours have no way to implement the insert operation that is required. + + + This class does not work with grouping. + + + This class works when the OLV is sorted, but it is up to the programmer + to decide what rearranging such lists "means". Example: if the control is sorting + students by academic grade, and the user drags a "Fail" grade student up amonst the "A+" + students, it is the responsibility of the programmer to makes the appropriate changes + to the model and redraw/rebuild the control so that the users action makes sense. + + + Users of this class should listen for the CanDrop event to decide + if models from another OLV can be moved to OLV under this sink. + + + + + + Create a RearrangingDropSink + + + + + Create a RearrangingDropSink + + + + + + Trigger OnModelCanDrop + + + + + + Trigger OnModelDropped + + + + + + Do the work of processing the dropped items + + + + + + When a drop sink needs to know if something can be dropped, or + to notify that a drop has occured, it uses an instance of this class. + + + + + Create a OlvDropEventArgs + + + + + Get the original drag-drop event args + + + + + Get the data object that is being dragged + + + + + Get the drop sink that originated this event + + + + + Get or set the index of the item that is the target of the drop + + + + + Get or set the location of the target of the drop + + + + + Get or set the index of the subitem that is the target of the drop + + + + + Get the item that is the target of the drop + + + + + Get or set the drag effect that should be used for this operation + + + + + Get or set if this event was handled. No further processing will be done for a handled event. + + + + + Get or set the feedback message for this operation + + + If this is not null, it will be displayed as a feedback message + during the drag. + + + + + Get the ObjectListView that is being dropped on + + + + + Get the location of the mouse (in target ListView co-ords) + + + + + Get the drop action indicated solely by the state of the modifier keys + + + + + These events are triggered when the drag source is an ObjectListView. + + + + + Create a ModelDropEventArgs + + + + + Gets the model objects that are being dragged. + + + + + Gets the ObjectListView that is the source of the dragged objects. + + + + + Get the model object that is being dropped upon. + + This is only value for TargetLocation == Item + + + + Refresh all the objects involved in the operation + + + + + A data transfer object that knows how to transform a list of model + objects into a text and HTML representation. + + + + + Create a data object from the selected objects in the given ObjectListView + + The source of the data object + + + + Create a data object which operates on the given model objects + in the given ObjectListView + + The source of the data object + The model objects to be put into the data object + + + + Gets or sets whether hidden columns will also be included in the text + and HTML representation. If this is false, only visible columns will + be included. + + + + + Gets or sets whether column headers will also be included in the text + and HTML representation. + + + + + Gets the ObjectListView that is being used as the source of the data + + + + + Gets the model objects that are to be placed in the data object + + + + + Put a text and HTML representation of our model objects + into the data object. + + + + + Create an exporter for the data contained in this object + + + + + + Make a HTML representation of our model objects + + + + + Convert the fragment of HTML into the Clipboards HTML format. + + The HTML format is found here http://msdn2.microsoft.com/en-us/library/aa767917.aspx + + The HTML to put onto the clipboard. It must be valid HTML! + A string that can be put onto the clipboard and will be recognized as HTML + + + + A FastDataListView virtualizes the display of data from a DataSource. It operates on + DataSets and DataTables in the same way as a DataListView, but does so much more efficiently. + + + + A FastDataListView still has to load all its data from the DataSource. If you have SQL statement + that returns 1 million rows, all 1 million rows will still need to read from the database. + However, once the rows are loaded, the FastDataListView will only build rows as they are displayed. + + + + + + + + + + + + 获取或设置在设置DataSource时是否自动生成列以显示列。 + + 必须在设置DataSource之前设置此设置。之后就没有效果了。 + + + + 获取或设置将在此列表视图中显示的VirtualListDataSource。 + + VirtualListDataSource应实现 , , + 或 . 以下是一些常见的对象类型 + + + + + + + + 绑定到列表容器时 (即,实现 接口, 比如 ) + 您还必须实现 属性,以便标识要显示的特定列表。您也可以设置 属性, + 即使当VirtualListDataSource引用列表时也是如此, 因为 还可以用于导航列表之间的关系. + + + + + Gets or sets the name of the list or table in the data source for which the DataListView is displaying data. + + If the data source is not a DataSet or DataViewManager, this property has no effect + + + + Gets or sets the DataSourceAdaptor that does the bulk of the work needed + for data binding. + + + + + Create the DataSourceAdapter that this control will use. + + A DataSourceAdapter configured for this list + Subclasses should override this to create their + own specialized adapters + + + + Change the Unfreeze behaviour + + + + + A FastObjectListView trades function for speed. + + + On my mid-range laptop, this view builds a list of 10,000 objects in 0.1 seconds, + as opposed to a normal ObjectListView which takes 10-15 seconds. Lists of up to 50,000 items should be + able to be handled with sub-second response times even on low end machines. + + A FastObjectListView is implemented as a virtual list with many of the virtual modes limits (e.g. no sorting) + fixed through coding. There are some functions that simply cannot be provided. Specifically, a FastObjectListView cannot: + + use Tile view + show groups on XP + + + + + + + Make a FastObjectListView + + + + + Gets the collection of objects that survive any filtering that may be in place. + + + + + Get/set the collection of objects that this list will show + + + + The contents of the control will be updated immediately after setting this property. + + This method preserves selection, if possible. Use SetObjects() if + you do not want to preserve the selection. Preserving selection is the slowest part of this + code and performance is O(n) where n is the number of selected rows. + This method is not thread safe. + + + + + Move the given collection of objects to the given index. + + This operation only makes sense on non-grouped ObjectListViews. + + + + + + 删除任何排序并恢复到模型对象的给定顺序 + + To be really honest, Unsort() doesn't work on FastObjectListViews since + the original ordering of model objects is lost when Sort() is called. So this method + effectively just turns off sorting. + + + + 为FastObjectListView提供数据源 + + + This class isn't intended to be used directly, but it is left as a public + class just in case someone wants to subclass it. + + + + + Create a FastObjectListDataSource + + + + + + Get n'th object + + + + + + + How many items are in the data source + + + + + + Get the index of the given model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Remove the given collection of models from this source. + + + + + + + + + + + + Update/replace the nth object with the given object + + + + + + + Apply the given filters to this data source. One or both may be null. + + + + + + + Gets the full list of objects being used for this fast list. + This list is unfiltered. + + + + + Gets the list of objects from ObjectList which survive any installed filters. + + + + + Rebuild the map that remembers which model object is displayed at which line + + + + + Build our filtered list from our full list. + + + + + Concrete implementation of the ICluster interface. + + + + + Create a cluster + + The key for the cluster + + + + Return a string representation of this cluster + + + + + + Gets or sets how many items belong to this cluster + + + + + Gets or sets the label that will be shown to the user to represent + this cluster + + + + + Gets or sets the actual data object that all members of this cluster + have commonly returned. + + + + + Return an indication of the ordering between this object and the given one + + + + + + + This class provides a useful base implemention of a clustering + strategy where the clusters are grouped around the value of a given column. + + + + + This field is the text that will be shown to the user when a cluster + key is null. It is exposed so it can be localized. + + + + + This field is the text that will be shown to the user when a cluster + key is empty (i.e. a string of zero length). It is exposed so it can be localized. + + + + + Gets or sets the format that will be used by default for clusters that only + contain 1 item. The format string must accept two placeholders: + - {0} is the cluster key converted to a string + - {1} is the number of items in the cluster (always 1 in this case) + + + + + Gets or sets the format that will be used by default for clusters that + contain 0 or two or more items. The format string must accept two placeholders: + - {0} is the cluster key converted to a string + - {1} is the number of items in the cluster + + + + + Create a clustering strategy + + + + + Gets or sets the column upon which this strategy is operating + + + + + Gets or sets the format that will be used when the cluster + contains only 1 item. The format string must accept two placeholders: + - {0} is the cluster key converted to a string + - {1} is the number of items in the cluster (always 1 in this case) + + If this is not set, the value from + ClusteringStrategy.DefaultDisplayLabelFormatSingular will be used + + + + Gets or sets the format that will be used when the cluster + contains 0 or two or more items. The format string must accept two placeholders: + - {0} is the cluster key converted to a string + - {1} is the number of items in the cluster + + If this is not set, the value from + ClusteringStrategy.DefaultDisplayLabelFormatPlural will be used + + + + Get the cluster key by which the given model will be partitioned by this strategy + + + + + + + Create a cluster to hold the given cluster key + + + + + + + Gets the display label that the given cluster should use + + + + + + + Create a filter that will include only model objects that + match one or more of the given values. + + + + + + + Create a label that combines the string representation of the cluster + key with a format string that holds an "X [N items in cluster]" type layout. + + + + + + + + This class calculates clusters from the groups that the column uses. + + + + This is the default strategy for all non-date, filterable columns. + + + This class does not strictly mimic the groups created by the given column. + In particular, if the programmer changes the default grouping technique + by listening for grouping events, this class will not mimic that behaviour. + + + + + + Get the cluster key by which the given model will be partitioned by this strategy + + + + + + + Gets the display label that the given cluster should use + + + + + + + This enum is used to indicate various portions of a datetime + + + + + Year + + + + + Month + + + + + Day of the month + + + + + Hour + + + + + Minute + + + + + Second + + + + + This class implements a strategy where the model objects are clustered + according to some portion of the datetime value in the configured column. + + To create a strategy that grouped people who were born in + the same month, you would create a strategy that extracted just + the month, and formatted it to show just the month's name. Like this: + + + someColumn.ClusteringStrategy = new DateTimeClusteringStrategy(DateTimePortion.Month, "MMMM"); + + + + + Create a strategy that clusters by month/year + + + + + Create a strategy that clusters around the given parts + + + + + + + Gets or sets the format string will will be used to create a user-presentable + version of the cluster key. + + The format should use the date/time format strings, as documented + in the Windows SDK. Both standard formats and custom format will work. + "D" - long date pattern + "MMMM, yyyy" - "January, 1999" + + + + Gets or sets the parts of the DateTime that will be extracted when + determining the clustering key for an object. + + + + + Get the cluster key by which the given model will be partitioned by this strategy + + + + + + + Gets the display label that the given cluster should use + + + + + + + Convert the given date into a user presentable string + + + + + + + Instances of this class know how to build a Filter menu. + It is responsible for clustering the values in the target column, + build a menu that shows those clusters, and then constructing + a filter that will enact the users choices. + + + Almost all of the methods in this class are declared as "virtual protected" + so that subclasses can provide alternative behaviours. + + + + + Gets or sets the string that labels the Apply button. + Exposed so it can be localized. + + + + + Gets or sets the string that labels the Clear All menu item. + Exposed so it can be localized. + + + + + Gets or sets the string that labels the Filtering menu as a whole.. + Exposed so it can be localized. + + + + + Gets or sets the string that represents Select All values. + If this is set to null or empty, no Select All option will be included. + Exposed so it can be localized. + + + + + Gets or sets the image that will be placed next to the Clear Filtering menu item + + + + + Gets or sets the image that will be placed next to all "Apply" menu items on the filtering menu + + + + + Gets or sets whether null should be considered as a valid data value. + If this is true (the default), then a cluster will null as a key will be allow. + If this is false, object that return a cluster key of null will ignored. + + + + + Gets or sets the maximum number of objects that the clustering strategy + will consider. This should be large enough to collect all unique clusters, + but small enough to finish in a reasonable time. + + The default value is 10,000. This should be perfectly + acceptable for almost all lists. + + + + Create a Filter menu on the given tool tip for the given column in the given ObjectListView. + + This is the main entry point into this class. + + + + The strip that should be shown to the user + + + + Create a collection of clusters that should be presented to the user + + + + + + + + + Order the given list of clusters in the manner in which they should be presented to the user. + + + + + + + Do the work of making a menu that shows the clusters to the users + + + + + + + + Wrap a protected section around the real HandleItemChecked method, so that if + that method tries to change a "checkedness" of an item, we don't get a recursive + stack error. Effectively, this ensure that HandleItemChecked is only called + in response to a user action. + + + + + + + Handle a user-generated ItemCheck event + + + + + + + Handle any checking/unchecking of the Select All option, and keep + its checkedness in sync with everything else that is checked. + + + + + + + + Clear all the filters that are applied to the given column + + The column from which filters are to be removed + + + + Apply the selected values from the given list as a filter on the given column + + A list in which the checked items should be used as filters + The column for which a filter should be generated + + + + Interface for model-by-model filtering + + + + + Should the given model be included when this filter is installed + + The model object to consider + Returns true if the model will be included by the filter + + + + Interface for whole list filtering + + + + + Return a subset of the given list of model objects as the new + contents of the ObjectListView + + The collection of model objects that the list will possibly display + The filtered collection that holds the model objects that will be displayed. + + + + Base class for model-by-model filters + + + + + Should the given model be included when this filter is installed + + The model object to consider + Returns true if the model will be included by the filter + + + + This filter calls a given Predicate to decide if a model object should be included + + + + + Create a filter based on the given predicate + + The function that will filter objects + + + + Gets or sets the predicate used to filter model objects + + + + + Should the given model object be included? + + + + + + + A CompositeFilter joins several other filters together. + If there are no filters, all model objects are included + + + + + Create an empty filter + + + + + Create a composite filter from the given list of filters + + A list of filters + + + + Gets or sets the filters used by this composite + + + + + Get the sub filters that are text match filters + + + + + Decide whether or not the given model should be included by the filter + + + True if the object is included by the filter + + + + Decide whether or not the given model should be included by the filter + + Filters is guaranteed to be non-empty when this method is called + The model object under consideration + True if the object is included by the filter + + + + A CompositeAllFilter joins several other filters together. + A model object must satisfy all filters to be included. + If there are no filters, all model objects are included + + + + + Create a filter + + + + + + Decide whether or not the given model should be included by the filter + + Filters is guaranteed to be non-empty when this method is called + The model object under consideration + True if the object is included by the filter + + + + A CompositeAllFilter joins several other filters together. + A model object must only satisfy one of the filters to be included. + If there are no filters, all model objects are included + + + + + Create a filter from the given filters + + + + + + Decide whether or not the given model should be included by the filter + + Filters is guaranteed to be non-empty when this method is called + The model object under consideration + True if the object is included by the filter + + + + Instances of this class extract a value from the model object + and compare that value to a list of fixed values. The model + object is included if the extracted value is in the list + + If there is no delegate installed or there are + no values to match, no model objects will be matched + + + + Create a filter that will use the given delegate to extract values + + + + + + Create a filter that will extract values using the given delegate + and compare them to the values in the given list. + + + + + + + Gets or sets the delegate that will be used to extract values + from model objects + + + + + Gets or sets the list of values that the value extracted from + the model object must match in order to be included. + + + + + Should the given model object be included? + + + + + + + Decides if the given property is a match for the values in the PossibleValues collection + + + + + + + Instances of this class match a property of a model objects against + a list of bit flags. The property should be an xor-ed collection + of bits flags. + + Both the property compared and the list of possible values + must be convertible to ulongs. + + + + Create an instance + + + + + + + Gets or sets the collection of values that will be matched. + These must be ulongs (or convertible to ulongs). + + + + + Decides if the given property is a match for the values in the PossibleValues collection + + + + + + + Base class for whole list filters + + + + + Return a subset of the given list of model objects as the new + contents of the ObjectListView + + The collection of model objects that the list will possibly display + The filtered collection that holds the model objects that will be displayed. + + + + Instance of this class implement delegate based whole list filtering + + + + + A delegate that filters on a whole list + + + + + + + Create a ListFilter + + + + + + Gets or sets the delegate that will filter the list + + + + + Do the actual work of filtering + + + + + + + Filter the list so only the last N entries are displayed + + + + + Create a no-op tail filter + + + + + Create a filter that includes on the last N model objects + + + + + + Gets or sets the number of model objects that will be + returned from the tail of the list + + + + + Return the last N subset of the model objects + + + + + + + Instances of this class cluster model objects on the basis of a + property that holds an xor-ed collection of bit flags. + + + + + Create a clustering strategy that operates on the flags of the given enum + + + + + + Create a clustering strategy around the given collections of flags and their display labels. + There must be the same number of elements in both collections. + + The list of flags. + + + + + Gets the value that will be xor-ed to test for the presence of a particular value. + + + + + Gets the labels that will be used when the corresponding Value is XOR present in the data. + + + + + Get the cluster key by which the given model will be partitioned by this strategy + + + + + + + Gets the display label that the given cluster should use + + + + + + + Create a filter that will include only model objects that + match one or more of the given values. + + + + + + + A cluster is a like collection of objects that can be usefully filtered + as whole using the filtering UI provided by the ObjectListView. + + + + + Gets or sets how many items belong to this cluster + + + + + Gets or sets the label that will be shown to the user to represent + this cluster + + + + + Gets or sets the actual data object that all members of this cluster + have commonly returned. + + + + + Implementation of this interface control the selecting of cluster keys + and how those clusters will be presented to the user + + + + + Gets or sets the column upon which this strategy will operate + + + + + Get the cluster key by which the given model will be partitioned by this strategy + + If the returned value is an IEnumerable, the given model is considered + to belong to multiple clusters + + + + + + Create a cluster to hold the given cluster key + + + + + + + Gets the display label that the given cluster should use + + + + + + + Create a filter that will include only model objects that + match one or more of the given values. + + + + + + + Instances of this class include only those rows of the listview + that match one or more given strings. + + This class can match strings by prefix, regex, or simple containment. + There are factory methods for each of these matching strategies. + + + + Create a text filter that will include rows where any cell matches + any of the given regex expressions. + + + + + Any string that is not a valid regex expression will be ignored. + + + + Create a text filter that includes rows where any cell begins with one of the given strings + + + + + + + + Create a text filter that includes rows where any cell contains any of the given strings. + + + + + + + + Create a TextFilter + + + + + + Create a TextFilter that finds the given string + + + + + + + Create a TextFilter that finds the given string using the given comparison + + + + + + + + Gets or sets which columns will be used for the comparisons? If this is null, all columns will be used + + + + + Gets or sets additional columns which will be used in the comparison. These will be used + in addition to either the Columns property or to all columns taken from the control. + + + + + Gets or sets the collection of strings that will be used for + contains matching. Setting this replaces all previous texts + of any kind. + + + + + Gets whether or not this filter has any search criteria + + + + + Gets or set the ObjectListView upon which this filter will work + + + You cannot really rebase a filter after it is created, so do not change this value. + It is included so that it can be set in an object initializer. + + + + + Gets or sets the collection of strings that will be used for + prefix matching. Setting this replaces all previous texts + of any kind. + + + + + Gets or sets the options that will be used when compiling the regular expression. + + + This is only used when doing Regex matching (obviously). + If this is not set specifically, the appropriate options are chosen to match the + StringComparison setting (culture invariant, case sensitive). + + + + + Gets or sets the collection of strings that will be used for + regex pattern matching. Setting this replaces all previous texts + of any kind. + + + + + Gets or sets how the filter will match text + + + + + Loop over the columns that are being considering by the filter + + + + + + Do the actual work of filtering + + + + + + + Find all the ways in which this filter matches the given string. + + This is used by the renderer to decide which bits of + the string should be highlighted + + A list of character ranges indicating the matched substrings + + + + Is the given column one of the columns being used by this filter? + + + + + + + Base class for the various types of string matching that TextMatchFilter provides + + + + + Gets how the filter will match text + + + + + Gets the text filter to which this component belongs + + + + + Gets or sets the text that will be matched + + + + + Find all the ways in which this filter matches the given string. + + + + This is used by the renderer to decide which bits of + the string should be highlighted. + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + A list of character ranges indicating the matched substrings + + + + Does the given text match the filter + + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + Return true if the given cellText matches our strategy + + + + This component provides text contains matching strategy. + + + + + Create a text contains strategy + + + + + + + Does the given text match the filter + + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + Return true if the given cellText matches our strategy + + + + Find all the ways in which this filter matches the given string. + + + + This is used by the renderer to decide which bits of + the string should be highlighted. + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + A list of character ranges indicating the matched substrings + + + + This component provides text begins with matching strategy. + + + + + Create a text begins strategy + + + + + + + Does the given text match the filter + + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + Return true if the given cellText matches our strategy + + + + Find all the ways in which this filter matches the given string. + + + + This is used by the renderer to decide which bits of + the string should be highlighted. + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + A list of character ranges indicating the matched substrings + + + + This component provides regex matching strategy. + + + + + Creates a regex strategy + + + + + + + Gets or sets the options that will be used when compiling the regular expression. + + + + + Gets or sets a compilex regular expression, based on our current Text and RegexOptions. + + + If Text fails to compile as a regular expression, this will return a Regex object + that will match all strings. + + + + + Gets whether or not our current regular expression is a valid regex + + + + + Does the given text match the filter + + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + Return true if the given cellText matches our strategy + + + + Find all the ways in which this filter matches the given string. + + + + This is used by the renderer to decide which bits of + the string should be highlighted. + + this.Text will not be null or empty when this is called. + + The text of the cell we want to search + A list of character ranges indicating the matched substrings + + + + This attribute is used to mark a property of a model + class that should be noticed by Generator class. + + + All the attributes of this class match their equivilent properties on OLVColumn. + + + + + Create a new OLVColumnAttribute + + + + + Create a new OLVColumnAttribute with the given title + + The title of the column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An array of IComparables that mark the cutoff points for values when + grouping on this column. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Properties marked with [OLVChildren] will be used as the children source in a TreeListView. + + + + + Properties marked with [OLVIgnore] will not have columns generated for them. + + + + + ColumnComparer is the workhorse for all comparison between two values of a particular column. + If the column has a specific comparer, use that to compare the values. Otherwise, do + a case insensitive string compare of the string representations of the values. + + This class inherits from both IComparer and its generic counterpart + so that it can be used on untyped and typed collections. + This is used by normal (non-virtual) ObjectListViews. Virtual lists use + ModelObjectComparer + + + + + Gets or sets the method that will be used to compare two strings. + The default is to compare on the current culture, case-insensitive + + + + + Create a ColumnComparer that will order the rows in a list view according + to the values in a given column + + The column whose values will be compared + The ordering for column values + + + + Create a ColumnComparer that will order the rows in a list view according + to the values in a given column, and by a secondary column if the primary + column is equal. + + The column whose values will be compared + The ordering for column values + The column whose values will be compared for secondary sorting + The ordering for secondary column values + + + + Compare two rows + + row1 + row2 + An ordering indication: -1, 0, 1 + + + + Compare two rows + + row1 + row2 + An ordering indication: -1, 0, 1 + + + + Compare the actual values to be used for sorting + + The aspect extracted from the first row + The aspect extracted from the second row + An ordering indication: -1, 0, 1 + + + + This comparer sort list view groups. OLVGroups have a "SortValue" property, + which is used if present. Otherwise, the titles of the groups will be compared. + + + + + Create a group comparer + + The ordering for column values + + + + Compare the two groups. OLVGroups have a "SortValue" property, + which is used if present. Otherwise, the titles of the groups will be compared. + + group1 + group2 + An ordering indication: -1, 0, 1 + + + + This comparer can be used to sort a collection of model objects by a given column + + + This is used by virtual ObjectListViews. Non-virtual lists use + ColumnComparer + + + + + Gets or sets the method that will be used to compare two strings. + The default is to compare on the current culture, case-insensitive + + + + + Create a model object comparer + + + + + + + Create a model object comparer with a secondary sorting column + + + + + + + + + Compare the two model objects + + + + + + + + Compare the actual values + + + + + + + + A helper class that translates DataSource events for an ObjectListView + + + + + Make a DataSourceAdapter + + + + + Finalize this object + + + + + Release all the resources used by this instance + + + + + Release all the resources used by this instance + + + + + Gets or sets whether or not columns will be automatically generated to show the + columns when the DataSource is set. + + This must be set before the DataSource is set. It has no effect afterwards. + + + + Get or set the DataSource that will be displayed in this list view. + + + + + Gets or sets the name of the list or table in the data source for which the DataListView is displaying data. + + If the data source is not a DataSet or DataViewManager, this property has no effect + + + + Gets the ObjectListView upon which this adaptor will operate + + + + + Gets or sets the currency manager which is handling our binding context + + + + + + + + + + + + + + + + + + + + + + + + + + + Our data source has changed. Figure out how to handle the new source + + + + + Our data source has changed. Figure out how to handle the new source + + + + + The data source for this control has changed. Reconfigure the control for the new source + + + + + Take the contents of the currently bound list and put them into the control + + + + + Create columns for the listview based on what properties are available in the data source + + + This method will create columns if there is not already a column displaying that property. + + + + + Decide if a new column should be added to the control to display + the given property + + + + + + + Configure the given column to show the given property. + The title and aspect name of the column are already filled in. + + + + + + + Generate aspect getters and putters for any columns that are missing them (and for which we have + enough information to actually generate a getter) + + + + + CurrencyManager ListChanged event handler. + Deals with fine-grained changes to list items. + + + It's actually difficult to deal with these changes in a fine-grained manner. + If our listview is grouped, then any change may make a new group appear or + an old group disappear. It is rarely enough to simply update the affected row. + + + + + + + Handle PropertyDescriptor* events + + + + + + Handle ItemMoved event + + + + + + Handle the ItemDeleted event + + + + + + Handle an ItemAdded event. + + + + + + Handle the Reset event + + + + + + Handle ItemChanged event. This is triggered when a single item + has changed, so just refresh that one item. + + + Even in this simple case, we should probably rebuild the list. + For example, the change could put the item into its own new group. + + + + The CurrencyManager calls this if the data source looks + different. We just reload everything. + + + + + CHECK: Do we need this if we are handle ListChanged metadata events? + + + + + Called by the CurrencyManager when the currently selected item + changes. We update the ListView selection so that we stay in sync + with any other controls bound to the same source. + + + + + + + Change the control's position (which is it's currently selected row) + to the nth row in the dataset + + The index of the row to be selected + + + + Handle the selection changing in our ListView. + We need to tell our currency manager about the new position. + + + + + + + Handle the frozenness of our ListView changing. + + + + + + + Handle a change to the BindingContext of our ListView. + + + + + + + These delegates are used to extract an aspect from a row object + + + + + These delegates are used to put a changed value back into a model object + + + + + These delegates can be used to convert an aspect value to a display string, + instead of using the default ToString() + + + + + These delegates are used to get the tooltip for a cell + + + + + These delegates are used to the state of the checkbox for a row object. + + + For reasons known only to someone in Microsoft, we can only set + a boolean on the ListViewItem to indicate it's "checked-ness", but when + we receive update events, we have to use a tristate CheckState. So we can + be told about an indeterminate state, but we can't set it ourselves. + + As of version 2.0, we can now return indeterminate state. + + + + + These delegates are used to get the state of the checkbox for a row object. + + + + + + + These delegates are used to put a changed check state back into a model object + + + + + These delegates are used to put a changed check state back into a model object + + + + + + + + These delegates are used to get the renderer for a particular cell + + + + + The callbacks for RightColumnClick events + + + + + This delegate will be used to own draw header column. + + + + + This delegate is called when a group has been created but not yet made + into a real ListViewGroup. The user can take this opportunity to fill + in lots of other details about the group. + + + + + These delegates are used to retrieve the object that is the key of the group to which the given row belongs. + + + + + These delegates are used to convert a group key into a title for the group + + + + + These delegates are used to get the tooltip for a column header + + + + + These delegates are used to fetch the image selector that should be used + to choose an image for this column. + + + + + These delegates are used to draw a cell + + + + + These delegates are used to fetch a row object for virtual lists + + + + + These delegates are used to format a listviewitem before it is added to the control. + + + + + These delegates can be used to return the array of texts that should be searched for text filtering + + + + + These delegates are used to sort the listview in some custom fashion + + + + + These delegates are used to order two strings. + x cannot be null. y can be null. + + + + + An ObjectListView is a much easier to use, and much more powerful, version of the ListView. + + + + An ObjectListView automatically populates a ListView control with information taken + from a given collection of objects. It can do this because each column is configured + to know which bit of the model object (the "aspect") it should be displaying. Columns similarly + understand how to sort the list based on their aspect, and how to construct groups + using their aspect. + + + Aspects are extracted by giving the name of a method to be called or a + property to be fetched. These names can be simple names or they can be dotted + to chain property access e.g. "Owner.Address.Postcode". + Aspects can also be extracted by installing a delegate. + + + An ObjectListView can show a "this list is empty" message when there is nothing to show in the list, + so that the user knows the control is supposed to be empty. + + + Right clicking on a column header should present a menu which can contain: + commands (sort, group, ungroup); filtering; and column selection. Whether these + parts of the menu appear is controlled by ShowCommandMenuOnRightClick, + ShowFilterMenuOnRightClick and SelectColumnsOnRightClick respectively. + + + The groups created by an ObjectListView can be configured to include other formatting + information, including a group icon, subtitle and task button. Using some undocumented + interfaces, these groups can even on virtual lists. + + + ObjectListView supports dragging rows to other places, including other application. + Special support is provide for drops from other ObjectListViews in the same application. + In many cases, an ObjectListView becomes a full drag source by setting to + true. Similarly, to accept drops, it is usually enough to set to true, + and then handle the and events (or the and + events, if you only want to handle drops from other ObjectListViews in your application). + + + For these classes to build correctly, the project must have references to these assemblies: + + + System + System.Data + System.Design + System.Drawing + System.Windows.Forms (obviously) + + + + + + How does a user indicate that they want to edit cells? + + + + + 列表将不支持编辑(同时F2按键无效) + + + + + 单击 单元格 将编辑值. + 选择该行,就像正常选择行一样。用户必须按F2键才能编辑主列。 + + + + + 双击子项或主列将编辑该单元格。 + F2键将编辑主列。 + + + + + 按F2键是编辑单元格的唯一方法。一旦主列被编辑, + 行中的其他单元格可以通过按Tab键进行编辑。 + + + + + 只需单击任意单元格即可编辑值,即使是主列也是如此。 + + + + + 这些值指定向用户显示列选择的方式 + + + + + 不会显示任何列选择 + + + + + 这些列将显示在主菜单中 + + + + + 这些列将显示在子菜单中 + + + + + 将显示一个模式对话框,允许用户选择列 + + + + + Triggered after a ObjectListView has been searched by the user typing into the list + + + + + Triggered after a ObjectListView has been sorted + + + + + Triggered before a ObjectListView is searched by the user typing into the list + + + Set Cancelled to true to prevent the searching from taking place. + Changing StringToFind or StartSearchFrom will change the subsequent search. + + + + + Triggered before a ObjectListView is sorted + + + Set Cancelled to true to prevent the sort from taking place. + Changing ColumnToSort or SortOrder will change the subsequent sort. + + + + + Triggered after a ObjectListView has created groups + + + + + Triggered before a ObjectListView begins to create groups + + + Set Groups to prevent the default group creation process + + + + + Triggered just before a ObjectListView creates groups + + + You can make changes to the groups, which have been created, before those + groups are created within the listview. + + + + + Triggered when a button in a cell is left clicked. + + + + + This event is triggered when the user moves a drag over an ObjectListView that + has a SimpleDropSink installed as the drop handler. + + + Handlers for this event should set the Effect argument and optionally the + InfoMsg property. They can also change any of the DropTarget* setttings to change + the target of the drop. + + + + + Triggered when a cell has finished being edited. + + + + + Triggered when a cell is about to finish being edited. + + If Cancel is already true, the user is cancelling the edit operation. + Set Cancel to true to prevent the value from the cell being written into the model. + You cannot prevent the editing from finishing within this event -- you need + the CellEditValidating event for that. + + + + Triggered when a cell is about to be edited. + + Set Cancel to true to prevent the cell being edited. + You can change the the Control to be something completely different. + + + + Triggered when a cell editor needs to be validated + + + If this event is cancelled, focus will remain on the cell editor. + + + + + Triggered when a cell is left clicked. + + + + + Triggered when the mouse is above a cell. + + + + + Triggered when a cell is right clicked. + + + + + This event is triggered when a cell needs a tool tip. + + + + + This event is triggered when a checkbox is checked/unchecked on a subitem + + + + + Triggered when a column header is right clicked. + + + + + This event is triggered when the user releases a drag over an ObjectListView that + has a SimpleDropSink installed as the drop handler. + + + + + This event is triggered when the control needs to filter its collection of objects. + + + + + This event is triggered when a cell needs to be formatted. + + + + + This event is triggered when the frozeness of the control changes. + + + + + This event is triggered when a row needs to be formatted. + + + + + This event is triggered when a group is about to collapse or expand. + This can be cancelled to prevent the expansion. + + + + + This event is triggered when a group changes state. + + + + + This event is triggered when a header checkbox is changing value + + + + + This event is triggered when a header needs a tool tip. + + + + + Triggered when the "hot" item changes + + + + + Triggered when a hyperlink cell is clicked. + + + + + Triggered when the task text of a group is clicked. + + + + + Is the value in the given cell a hyperlink. + + + + + Some new objects are about to be added to an ObjectListView. + + + + + The contents of the ObjectListView has changed. + + + + + The contents of the ObjectListView is about to change via a SetObjects call + + + Set Cancelled to true to prevent the contents of the list changing. This does not work with virtual lists. + + + + + Some objects are about to be removed from an ObjectListView. + + + + + This event is triggered when the user moves a drag over an ObjectListView that + has a SimpleDropSink installed as the drop handler, and when the source control + for the drag was an ObjectListView. + + + Handlers for this event should set the Effect argument and optionally the + InfoMsg property. They can also change any of the DropTarget* setttings to change + the target of the drop. + + + + + This event is triggered when the user releases a drag over an ObjectListView that + has a SimpleDropSink installed as the drop handler and when the source control + for the drag was an ObjectListView. + + + + + This event is triggered once per user action that changes the selection state + of one or more rows. + + + + + This event is triggered when the contents of the ObjectListView has scrolled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tell the world when a cell is about to be edited. + + + + + Tell the world when a cell is about to finish being edited. + + + + + Tell the world when a cell is about to finish being edited. + + + + + Tell the world when a cell has finished being edited. + + + + + 创建一个 ObjectListView + + + + + Dispose of any resources this instance has been using + + + + + + 获取鼠标左键是否在此时按下。 + + + + + 获取该程序是否在Vista或更高版本上运行 + + + + + 获取该程序是否在Win7或更高版本上运行 + + + + + Gets or sets how what smoothing mode will be applied to graphic operations. + + + + + Gets or sets how should text be renderered. + + + + + 获取或设置当组Key为Null时将用于标题组的字符串。将其公开以使其可以本地化。 + + + + + Convert the given enumerable into an ArrayList as efficiently as possible + + The source collection + If true, this method will always create a new + collection. + An ArrayList with the same contents as the given collection. + + When we move to .NET 3.5, we can use LINQ and not need this method. + + + + + Return the count of items in the given enumerable + + + + When we move to .NET 3.5, we can use LINQ and not need this method. + + + + Return whether or not the given enumerable is empty. A string is regarded as + an empty collection. + + + True if the given collection is null or empty + + When we move to .NET 3.5, we can use LINQ and not need this method. + + + + + Gets or sets whether all ObjectListViews will silently ignore missing aspect errors. + + + + By default, if an ObjectListView is asked to display an aspect + (i.e. a field/property/method) + that does not exist from a model, it displays an error message in that cell, since that + condition is normally a programming error. There are some use cases where + this is not an error -- in those cases, set this to true and ObjectListView will + simply display an empty cell. + + Be warned: if you set this to true, it can be very difficult to track down + typing mistakes or name changes in AspectNames. + + + + + Gets or sets whether the control will draw a rectangle in each cell showing the cell padding. + + + + This can help with debugging display problems from cell padding. + + As with all cell padding, this setting only takes effect when the control is owner drawn. + + + + + Gets the style that will be used by default to format disabled rows + + + + + Gets the style that will be used by default to format hot rows + + + + + Gets or sets an model filter that is combined with any column filtering that the end-user specifies. + + This is different from the ModelFilter property, since setting that will replace + any column filtering, whereas setting this will combine this filter with the column filtering + + + + Get or set all the columns that this control knows about. + Only those columns where IsVisible is true will be seen by the user. + + + + If you want to add new columns programmatically, add them to + AllColumns and then call RebuildColumns(). Normally, you do not have to + deal with this property directly. Just use the IDE. + + If you do add or remove columns from the AllColumns collection, + you have to call RebuildColumns() to make those changes take effect. + + + + + 获取或设置每隔一行的背景色 + + + + + 获取已设置的交替行背景色或默认颜色 + + + + + 此属性强制ObjectListView始终按给定列对项进行分组。 + + + + + 如果AlwaysGroupByColumn不为空,则此属性将用于确定如何对这些组进行排序。 + 如果此属性的值为SortOrder.None,则排序顺序将根据用户上次单击的标题切换。 + + + + + Give access to the image list that is actually being used by the control + + + Normally, it is preferable to use SmallImageList. Only use this property + if you know exactly what you are doing. + + + + + 获取或设置编辑单元格的方式 + + Columns can also be marked as editable. + + + + 编辑单元格时,是否应该使用整个单元格(减去复选框或图像使用的任何空间)? + 默认值为 true. + + + This is always treated as true when the control is NOT owner drawn. + + When this is false and the control is owner drawn, + ObjectListView will try to calculate the width of the cell's + actual contents, and then size the editing control to be just the right width. If this is true, + the whole width of the cell will be used, regardless of the cell's contents. + + Each column can have a different value for property. This value from the control is only + used when a column is not specified one way or another. + Regardless of this setting, developers can specify the exact size of the editing control + by listening for the CellEditStarting event. + + + + + Gets or sets the engine that will handle key presses during a cell edit operation. + Settings this to null will reset it to default value. + + + + + 获取当前用于编辑单元格的控件。 + + This will obviously be null if no cell is being edited. + + + + 获取或设置编辑控件左边缘或右边缘的单元格时Tab键的行为。 + 如果为False(默认值),则按Tab键将换行到同一行的另一侧。 + 如果为True,编辑最右边的单元格时按Tab键将前进到下一行, + 编辑最左边的单元格时按Shift-Tab组合键将更改为上一行。 + + + + + 获取或设置编辑单元格时Enter键的行为。 + 如果为False(默认值),则按Enter键将简单地完成编辑操作。 + 如果为True,则Enter将完成编辑操作,并在当前单元格下方的单元格上启动新的编辑操作,在位于底部单元格时换行到下一行的顶部。 + + + + + 获取显示单元格提示的工具提示控件 + + + + + 获取或设置该项的每个单元格周围将留空的像素数。单元格内容在考虑填充后对齐。 + + + Each value of the given rectangle will be treated as an inset from + the corresponding side. The width of the rectangle is the padding for the + right cell edge. The height of the rectangle is the padding for the bottom + cell edge. + + + So, this.olv1.CellPadding = new Rectangle(1, 2, 3, 4); will leave one pixel + of space to the left of the cell, 2 pixels at the top, 3 pixels of space + on the right edge, and 4 pixels of space at the bottom of each cell. + + + This setting only takes effect when the control is owner drawn. + + This setting only affects the contents of the cell. The background is + not affected. + If you set this to a foolish value, your control will appear to be empty. + + + + + 获取或设置默认情况下单元格垂直对齐的方式。 + + This setting only takes effect when the control is owner drawn. It will only be noticable + when RowHeight has been set such that there is some vertical space in each row. + + + + Should this list show checkboxes? + + + + + 返回选中行的模型对象;如果未选中行或选中多行,则返回NULL + + + + + Get or set the collection of model objects that are checked. + When setting this property, any row whose model object isn't + in the given collection will be unchecked. Setting to null is + equivilent to unchecking all. + + + + This property returns a simple collection. Changes made to the returned + collection do NOT affect the list. This is different to the behaviour of + CheckedIndicies collection. + + + .NET's CheckedItems property is not helpful. It is just a short-hand for + iterating through the list looking for items that are checked. + + + The performance of the get method is O(n), where n is the number of items + in the control. The performance of the set method is + O(n + m) where m is the number of objects being checked. Be careful on long lists. + + + + + + 获取或设置可枚举对象中的选中对象。 + + + Useful for checking all objects in the list. + + + this.olv1.CheckedObjectsEnumerable = this.olv1.Objects; + + + + + Gets Columns for this list. We hide the original so we can associate + a specialised editor with it. + + + + + 获取/设置当列表切换到TileView(平铺视图)时应使用的列的列表。 + + + + + 按向用户显示的顺序返回可见列 + + + + + 获取显示列表的控件区域,减去任何标题控件 + + + + + 获取或设置当用户按Ctrl+C组合键时是否应将选定行复制到剪贴板 + + + + + 获取或设置按Ctrl+C键复制到剪贴板功能是否应使用安装的DragSource创建放置到剪贴板上的数据对象。 + + This is normally what is desired, unless a custom DragSource is installed + that does some very specialized drag-drop behaviour. + + + + Gets the list of decorations that will be drawn the ListView + + + + Do not modify the contents of this list directly. Use the AddDecoration() and RemoveDecoration() methods. + + + A decoration scrolls with the list contents. An overlay is fixed in place. + + + + + + 所有者绘制时,此渲染器将绘制未指定特定渲染器的列 + + 如果尝试将其设置为NULL,则它将恢复为HighlightTextRenende + + + + 获取用于绘制给定单元格的渲染器。 + + The row model for the row + The column to be drawn + The renderer used for drawing a cell. Must not return null. + + + + 获取或设置将应用于禁用项的样式。 + + If this is not set explicitly, will be used. + + + + 获取或设置已禁用的模型对象的列表。无法选择或激活已禁用的对象。 + + + + + 判断此给定模型对象是否已禁用 + + + + + + + 禁用给定的模型对象。禁用的对象无法选择或激活。 + + Must not be null + + + + 禁用所有给定的模型对象 + + + + + + 启用给定的模型对象,以便可以再次选择并激活它。 + + Must not be null + + + + 启用所有给定的模型对象 + + + + + + 忽略所有禁用的对象。这不会触发重绘或重建 + + + + + Gets or sets the object that controls how drags start from this control + + + + + Gets or sets the object that controls how drops are accepted and processed + by this ListView. + + + + If the given sink is an instance of SimpleDropSink, then events from the drop sink + will be automatically forwarded to the ObjectListView (which means that handlers + for those event can be configured within the IDE). + + If this is set to null, the control will not accept drops. + + + + + This registry decides what control should be used to edit what cells, based + on the type of the value in the cell. + + + All instances of ObjectListView share the same editor registry. + + + + 获取或设置在此列表视图中没有项时应显示的文本。 + + If the EmptyListMsgOverlay has been changed to something other than a TextOverlay, + this property does nothing + + + + 获取或设置绘制列表空消息时应使用的字体 + + If the EmptyListMsgOverlay has been changed to something other than a TextOverlay, + this property does nothing + + + + 返回“列表为空”消息的字体或合理的默认值 + + + + + Gets or sets the overlay responsible for drawing the List Empty msg. + + + + + 获取在筛选中幸存下来的对象的集合。 + + + + This collection is the result of filtering the current list of objects. + It is not a snapshot of the filtered list that was last used to build the control. + + + Normal warnings apply when using this with virtual lists. It will work, but it + may take a while. + + + + + + 获取或设置将用于生成筛选器菜单的策略对象 + + 如果为NULL,则不会生成筛选器菜单。 + + + + 获取或设置具有键盘焦点的行 + + + + Setting an object to be focused does *not* select it. If you want to select and focus a row, + use . + + + This property is not generally used and is only useful in specialized situations. + + + + + + 隐藏Groups集合,使其在“属性”网格中不可见。 + + + + + 获取或设置分组使用的ImageList + + 如果未设置此选项,则分组标题将不会显示任何图像。 + + + + 获取在组为空或包含多个项目时应如何设置组标签的格式 + + + 给定的格式字符串必须有两个占位符: + + {0} - 原来的组标题 + {1} - 组中的项目数 + + + "[{0} [{1} 项]" + + + + 返回this.GroupWithItemCountFormat或合理的默认值 + + + + + 获取在组仅包含单个项目时应如何设置组标签的格式 + + + 给定的格式字符串必须有两个占位符: + + {0} - 原来的组标题 + {1} - 组中的项目数 (总是1) + + + "[{0} [{1} 项]" + + + + 获取GroupWithItemCountSingularFormat或合理的默认值 + + + + + 获取或设置此ObjectListView中的组是否应可折叠。 + + + 此特性只支持Vista或之后的系统. + + + + + 获取当前列表是否存在当列表为空时显示的文本 + + + + + 获取是否有要绘制的叠加层 + + + + + 获取ListView的列头控件 + + + + + 获取或设置列标题文本的绘制字体 + + 单个列可以通过其HeaderFormatStyle属性重写此设置。 + + + + 获取或设置将用于绘制列表视图的列标题的样式 + + + + 仅当HeaderUsesThemes为false时才使用此选项。 + + + 单个列可以通过其HeaderFormatStyle属性重写此设置。 + + + + + + 获取或设置标题的最大高度。-1表示没有最大值。 + + + + + 获取或设置标题的最小高度。-1表示没有最小值。 + + + + + 获取或设置是否严格按照操作系统的主题绘制标题。 + + + + 如果设置为true,则列头将完全由系统呈现,不需要ObjectListViews的任何特殊处理。 + 页眉中将没有图像、没有过滤器指示符、没有文字换行、没有页眉样式、没有复选框。 + + 如果将其设置为False,ObjectListView将以其认为最好的方式呈现标题。 + 如果不需要特殊功能,则ObjectListView会将渲染委托给操作系统。 + 否则,ObjectListView将根据配置设置绘制标题。 + + + 没有主题的效果会因操作系统不同而不同。至少,分类指示器不会是标准的。 + + + + + + 获取或设置列头标题中的文本是否自动换行。 + + + 将在单词之间应用换行符。过长的单词仍将被省略。 + + 与所有使列头看起来不同的设置一样,HeaderUsesThemes必须设置为false,否则操作系统将负责绘制列头,并且不允许自动换行文本。 + + + + + + 获取显示列标题提示的工具提示 + + + + + 获取鼠标当前所在行的索引。 + + + + + 获取鼠标当前所在列的索引 + + + + + 获取鼠标当前所在的项/子项的一部分 + + + + + Gets an extended indication of the part of item/subitem/group that the mouse is currently over + + + + + 获取鼠标所在的组。 + + + + + 处于“热”状态的项的索引,即在光标下方。-1表示没有项目。 + + + + + 获取和设置对游标下的行应用哪种格式 + + + + 这仅在UseHotItem为true时生效。 + + 如果样式具有叠加层,则必须对其进行设置。*之前* 将其分配给此属性。之后添加它将被忽略。 + + + + + 获取已安装的热点项样式或合理的默认值。 + + + + + 获取和设置应将哪种格式应用于超链接 + + + + + 获取和设置所选行的背景应该使用什么颜色 + + + + + 返回应用于选定行的背景颜色或合理的默认值 + + + + + 获取和设置所选行的字体应该使用什么颜色 + + + + + 返回应用于选定行的字体颜色或合理的默认值 + + + + + 使用 SelectedBackColor 代替 + + + + + 使用 SelectedBackColorOrDefault 代替 + + + + + 使用 SelectedForeColor 代替 + + + + + 使用 SelectedForeColorOrDefault 代替 + + + + + 使用 UnfocusedSelectedBackColor 代替 + + + + + 使用 UnfocusedSelectedBackColorOrDefault 代替 + + + + + 使用 UnfocusedSelectedForeColor 代替 + + + + + 使用 UnfocusedSelectedForeColorOrDefault 代替 + + + + + 获取或设置是否应将隐藏列包括在复制或拖动到其他应用程序的行的文本表示形式中。 + 如果为False(默认值),则仅包括可见列。 + + + + + 获取或设置复制行时,列标题是否在文本中。 + 如果为False(默认值),在文本中将不会显示列标题。 + + + + + 如果当前正在进行单元格编辑操作,则返回TRUE + + + + + 如果在开发环境中使用ObjectListView,则返回true。 + + + + + 获取当前列表是否正在筛选其内容 + + + + + 当用户在列表中键入内容时,是否应该搜索当前排序列中的值以查找匹配项? + 如果为False,则无论排序列是什么,都将始终使用主列。 + + When this is true, the behavior is like that of ITunes. + + + + 获取或设置此控件是否将使用SimpleDropSink接收拖动 + + + + 此设置将替换任何以前的DropSink。 + + + 将其设置为true后,SimpleDropSink仍需要配置为说明它何时可以接受拖动, + 以及在拖动某些内容时应该执行什么操作。需要执行这些操作使此属性几乎毫无用处 :( + + + + + + 获取或设置此控件是否将使用SimpleDragSource来启动拖动 + + 此设置将替换之前的任何DragSource + + + + 隐藏Items集合,使其在“属性”网格中不可见。 + + + + + 当列表中的项目处于非详细视图中时,此渲染器会绘制项目。在详细信息视图中,负责个体列的呈现器。 + + + + + 获取或设置最后一次排序的列 + + 这是PrimarySortColumn的别名 + + + + 获取或设置最后一次排序的方向 + + 这是 PrimarySortOrder的别名 + + + + 获取或设置应用于整个对象列表的筛选器。 + + + 列表将立即更新以反映此筛选器。 + + + + + 获取或设置应用于列表中每个模型对象的筛选器 + + + 您可能需要考虑使用 而不是此属性, + 因为AdditionalFilter在运行时与列筛选相结合。 + 设置此属性只是替换用户可能已给出的任何列筛选器。 + + The list is updated immediately to reflect this filter. + + + + + + Gets the hit test info last time the mouse was moved. + + Useful for hot item processing. + + + + 获取或设置列表显示的组列表。 + + + 此属性与.NET Groups属性的工作方式不同,应将其视为只读属性。 + 对列表所做的更改不会反映在ListView本身中。 + 在此列表中添加或删除组是没有意义的,这样的修改不会起到任何作用。 + 要执行此类操作,必须侦听BeforeCreatingGroups或AboutToCreateGroups事件, + 并更改这些事件中的组列表。 + + + + + 获取或设置折叠的OLVGroups的集合。 + + + + + Gets or sets whether the user wants to owner draw the header control + themselves. If this is false (the default), ObjectListView will use + custom drawing to render the header, if needed. + + + If you listen for the DrawColumnHeader event, you need to set this to true, + otherwise your event handler will not be called. + + + + + 获取/设置此列表将显示的对象集合 + + + + 设置此属性后,控件的内容将立即更新。 + + 如果可能,此方法将保留所选内容。使用 if + 如果您不想保留所选内容,请执行以下操作。 + 保留选择是该代码中最慢的部分,性能为O(N),其中n是选定的行数。 + 此方法不是线程安全的。 + 该属性确实适用于虚拟列表:设置是没有问题的,但如果您尝试获取它, + 并且列表有1000万个对象,则可能需要一些时间才能返回。 + 此集合未经过筛选。使用 只访问那些在任何已安装的筛选器中幸存下来的对象。 + + + + + 获取当前控件所有对象组成的列表 + + + + + 获取创建群集时将考虑的对象集合。 + (用于生成类似Excel的列筛选器) + + + + + 获取或设置将在ListView顶部绘制的图像 + + + + + 获取或设置将在ListView顶部绘制的文本 + + + + + 获取或设置所有覆盖图的透明度。0表示完全透明,255表示完全不透明。 + + + 这已经过时了,请在每个覆盖上使用Transparency。 + + + + + 获取将在ListView顶部绘制的覆盖列表 + + + You can add new overlays and remove overlays that you have added, but + don't mess with the overlays that you didn't create. + + + + + Gets or sets whether the ObjectListView will be owner drawn. Defaults to true. + + + + When this is true, all of ObjectListView's neat features are available. + + We have to reimplement this property, even though we just call the base + property, in order to change the [DefaultValue] to true. + + + + + + 获取或设置主复选框是否在列表重新生成和筛选操作中保持其值。 + + + + 此属性仅在未显式设置CheckStateGetter/Putter时才有用。 + 如果您使用CheckStateGetter/Putter,那么这些方法已经持久化了行的检查性。 + + 此默认值为true。如果为False,则在重新生成或筛选列表时,复选框将丢失其值。 + 如果在虚拟列表中将其设置为false,则必须安装CheckStateGetter/Putters。 + + + + + 获取或设置记住模型对象的复选框状态的字典 + + 当PersistentCheckBoxs值为TRUE时,此选项用于虚拟列表. + + + + 获取或设置最后一次排序的列 + + + + + 获取或设置最后一次排序的方向 + + + + + 获取或设置不可编辑复选框是否绘制为禁用。默认是false。 + + + 这仅在所有者描述模式(owner drawn mode)下有效。 + + + + + 以像素为单位指定控件中每行的高度。 + + 列表视图中的行高通常由字体大小和小图像列表大小决定。 + 此设置允许覆盖该计算(原因是:您仍然不能将行高设置为小于控件中使用的字体的行高)。 + 将其设置为-1表示使用正常计算方法。 + 此功能是体验功能!如果您使用此功能,您的程序可能会发生意想不到的事情。 + + + + + 获取每行有多少像素高 + + + + + 获取此控件的每页上显示多少行 + + + + + 获取/设置将用于解析排序时相等的比较的列(第二排序列)。 + + 此设置没有用户界面。它必须以编程方式设置。 + + + + 获取或设置当使用Second darySortColumn时,它将以什么顺序比较结果 + + + + + 获取或设置当用户按Ctrl+A组合键时是否应选择所有行 + + + + + 获取或设置当用户右键单击列标题时,是否应该显示一个菜单,允许用户选择视图中将显示哪些列 + + 这只是SelectColumnsOnRightClickBehaviour的兼容性包装属性. + + + + 获取或设置当右键单击标题时用户如何能够选择列 + + + + + 当列选择菜单打开时,是否应在选择项目后保持打开状态?保持打开状态允许用户一次打开或关闭多个列。 + + SelectColumnsOnRightClickBehaviour设置为InlineMenu时才有效。当行为设置为SubMenu菜单时,该选项不起作用。 + + + + 获取或设置选定列 + + + + 如果TintSortColumn为true,则排序列将自动成为选定列。 + + + 色调的颜色由SelectedColumnTint控制。 + + + + + + Gets or sets the decoration that will be drawn on all selected rows + + + + + 获取或设置应该使用什么颜色来给选定的列着色 + + + 色调颜色必须是Alpha可混合的,因此如果给定的颜色是纯色(即Alpha=255),则会将其更改为具有合理的Alpha值。 + + + + + 获取或设置当前选定行的索引。 + 获取索引时,如果没有选择任何行,或者选择了多个行,则返回-1。 + + + + + 获取或设置当前选定的ListViewItem。如果未选择任何行,或者选择了多个行,则返回NULL。 + + + + + 如果只选择了一行,则从当前选定的行获取模型对象。 + 如果未选择任何行,或选择了多个行,则返回NULL。 + 设置时,这将选择显示给定模型对象的行,并将焦点放在该行上,取消选择所有其他行。 + + + + + 从当前选定的行中获取模型对象。 + 如果未选中任何行,则返回的列表为空。 + 设置此值时,请选择显示给定模型对象的行,取消选择所有其他行。 + + + + + 获取或设置当用户右键单击列标题时,是否应该显示一个菜单,允许他们选择要在列表视图上执行的常见任务 + + + + + 获取或设置当右键单击标题控件时,此ObjectListView是否像筛选菜单一样显示表格 + + + + + 获取或设置是否应按组显示其项目 + + + + + 列表视图是否应该在列标题中显示位图以显示排序方向 + + + The only reason for not wanting to have sort indicators is that, on pre-XP versions of + Windows, having sort indicators required the ListView to have a small image list, and + as soon as you give a ListView a SmallImageList, the text of column 0 is bumped 16 + pixels to the right, even if you never used an image. + + + + + 列表视图是否应该显示子项上的图像 + + + 虚拟列表必须是所有者绘制的,才能在子项上显示图像 + + + + + 此属性控制分组标签是否显示该分组项目数量 + + + 后缀的格式由GroupWithItemCountFormat/GroupWithItemCountSingularFormat属性控制 + + + + + 获取或设置控件是在所有视图中显示列标题(True),还是仅在详细信息视图中显示列标题(False) + + + + 此属性工作不正常。JPP 2010/04/06。 + 如果它是在创建控件之前设置的,则可以正常工作。 + 但是,如果在创建控件后将其关闭,则控件将丢失其复选框(奇怪!) + + + 要在创建控件后更改此设置,事情会很复杂。 + 如果它是关闭的,而我们想要打开它,我们必须更改视图,标题就会出现。 + 如果它当前处于打开状态,而我们想要将其关闭,则必须更改视图并重新创建控制柄。 + 重新创建句柄是一个问题,因为它会使我们的复选框样式消失。 + + + 该属性不能工作在 Win XP 系统. + + + + + 重写SmallImageList属性,以便我们可以正确地隐藏其操作。 + + 如果使用RowHeight属性指定行高,则必须在设置/更改RowHeight之前完全初始化SmallImageList。 + 如果在设置行高之后将新图像添加到图像列表,则必须再次将图像列表分配给控件。像这样简单的事情会奏效的: + listView1.SmallImageList = listView1.SmallImageList; + + + + + 返回小图像列表中图像的大小或合理的默认值 + + + + + 当列表视图分组时,项是否应该按主列排序?如果为False,则项目将按分组时的同一列进行排序。 + + + + + 当列表视图分组时,一个组的末尾和下一个组的开头之间应该有多少像素 + + + + + 排序列是否应该显示轻微的色调? + + + + + 获取或设置是否使用三态复选框? + + + 如果为True,用户可以选择第三种状态(通常是不确定的)。 + 否则,用户在选中和取消选中之间交替单击。 + 当此设置为False时,CheckStateGetter仍可以返回不确定。 + + + + + 获取或设置列表顶部项目的索引 + + + + 此属性仅在列表视图处于详细信息视图中且不显示组时才起作用。 + + + 显示组时不起作用的原因是,当启用组时,无论滚动位置如何, + Windows msg LVM_GETTOPINDEX总是返回0。 + + + + + + 获取或设置将鼠标移到标题上是否会触发CellOver事件。 + 默认为true。 + + + 将鼠标移动到标题上之前不会触发CellOver事件,因为Header被视为单独的控件。 + 如果此行为更改导致您的应用程序出现问题,请将其设置为False。 + 如果您想知道鼠标何时在标题上移动,请将此属性设置为true(默认值)。 + + + + + 通过拖动分隔线调整列的大小时,是否应在每次鼠标移动时调整填充空格的列的大小? + 如果为False,则释放鼠标时将更新填充栏。 + + + + 如果空间填充列位于正在调整大小的列的左侧,这看起来会很奇怪:该列的右边缘将被拖动,但由于空间填充列正在收缩,其左边缘将会移动。 + + 这是合乎逻辑的行为--只是看起来不对。 + + + 考虑到上述行为,如果空间填充列不是最右边的列,最好关闭该属性。 + + + + + 当控件没有焦点时,应该使用什么颜色作为选定行的背景 + + + + + 当控件没有焦点或合理的默认值时,返回应用于选定行的背景的颜色 + + + + + 当控件没有焦点时,应该使用什么颜色作为选定行的字体颜色。 + + + + + 当控件没有焦点或合理的默认值时,返回应用于选定行的字体颜色 + + + + + 获取或设置列表是否每隔一行提供不同的背景色?默认值为false。 + + 交替行的颜色由AlternateRowBackColor提供。 + 在.NET中,列表视图在非整行选择模式下有一个“功能”,在这种模式下,所选行不会使用正确的背景色绘制。 + + + + 是否应该为控件中的每个单元格调用FormatCell事件? + + + 在许多情况下,不执行单元格级格式设置。 + 如果除非需要,ObjectListView不会为每个单元格触发Format Cell事件,则它的运行速度会稍快一些。 + 因此,默认情况下,它不会为每个单元格引发事件。 + + ObjectListView*确实*在每次重新生成行时引发FormatRow事件。各行可以决定是否对行中的每个单元格引发FormatCell事件。 + + + 无论此设置如何,只有当ObjectListView处于详细视图中时才会引发FormatCell事件。 + + + + + 所选行是否应使用非标准前景色和背景色绘制? + + V2.9不再需要此属性 + + + + 获取或设置此ObjectListView是否将使用与Vista资源管理器相同的热项和选择机制。 + + + + 此属性有许多缺陷: + + 这仅适用于Vista及更高版本 + 它不能很好地与AlternateRowBackColors配合使用。 + 它不能很好地与HotItemStyles配合使用。 + 如果FullRowSelect为false,这看起来有点傻。 + 当列表是所有者绘制的时,它根本不起作用(因为所有的绘制都是由渲染器完成的)。 + 因此,它不能与TreeListView一起工作,因为它们“必须”是所有者绘制的。你仍然可以设置它,但它不会生效。 + + 但如果你一定要看起来像Vista/Win7,这是你的权限。如果这项设置搞砸了其他事情,请不要抱怨。 + + + 当此属性设置为True时,ObjectListView将不是所有者描述的。 + 这将禁用ObjectListView的许多漂亮的基于绘图的功能。 + + + + + + 获取或设置列表是否应启用筛选 + + + + + 获取或设置列表是否应将指示符放入列的标题中,以表明它正在筛选该列 + + 如果将其设置为true,HeaderUsesThemes将自动设置为false,因为我们只能在不使用主题标题时绘制筛选器指示器。 + + + + 鼠标下方的控件(复选框或按钮)是否应该被绘制为“Hot” + + + 如果为False,则当鼠标悬停在控件上时,控件的绘制方式不会有所不同。 + + 如果为False,且UseHotItem和UseHyperLinks为False,则ObjectListView可以跳过鼠标移动的某些处理。这使得鼠标移动处理几乎不使用CPU。 + + + + + + 光标下的项是否应以特殊方式设置格式? + + + + + 获取或设置此列表视图是否应在单元格中显示超链接。 + + + + + 此控件是否应显示覆盖(Overlays) + + 覆盖(Overlays)在默认情况下是启用的,只有在它们在您的开发环境中造成问题时才需要禁用。 + + + + 是否应将此控件配置为在子项上显示复选框? + + 如果将其设置为True,则将为该控件提供一个SmallImageList(如果它还没有一个SmallImageList)。 + 此外,如果它是一个虚拟列表,它将被设置为所有者描述的,因为虚拟列表不能在没有所有者描述的情况下绘制复选框。 + + + + 获取或设置ObjectListView是否将使用类似Vista的半透明选择机制。 + + + + 与UseExplorerTheme不同的是,这个类似Vista的方案可以在XP上运行,并且既适用于所有者描述的列表,也适用于非所有者描述的列表。 + + + 这将替换任何已安装的SelectedRowDecory。 + + + 如果您不喜欢用于选择的颜色,请忽略此属性, + 只需创建您自己的RowBorderDecory并将其分配给SelectedRowDecory, + 就像此属性设置器所做的那样。 + + + + + + 获取或设置ObjectListView是否将使用类似于Vista的半透明热行突出显示机制。 + + + + 设置此项将替换任何已安装的HotItemStyle。 + + + 如果您不喜欢热项目使用的颜色,请忽略此属性, + 只需创建您自己的HotItemStyle,填充所需的值, + 并将其分配给HotItemStyle属性,就像此属性设置器所做的那样。 + + + + + + 获取/设置此列表视图正在使用的视图样式 + + 切换到平铺(Tile)或详细信息(Details)视图会安装适合该视图的列。令人困惑的是,在平铺视图中,每列都显示为一行信息。 + + + + 此委托仅将对象的检查性作为布尔值获取。 + + 如果您永远不想担心不确定状态(这是相当常见的),请使用此选项。 + + 这是CheckStateGetter属性的便捷包装。 + + + + + + This delegate sets the checkedness of an object as a boolean only. It must return + true or false indicating if the object was checked or not. + + Use this if you never want to worry about the + Indeterminate state (which is fairly common). + + This is a convenience wrapper around the CheckStatePutter property. + + + + + + 获取此列表视图是否能够显示组 + + + + + 获取或设置ObjectListView是否可以依赖正在引发的Application.Idle事件。 + + 在某些主机环境中(例如,在VisualStudio和Office中作为扩展运行时),从不引发Application.Idle事件。 + 如果不会引发Idle事件,则将其设置为False,ObjectListView将自行引发这些事件。 + + + + + This delegate fetches the renderer for a particular cell. + + + + If this returns null (or is not installed), the renderer for the column will be used. + If the column renderer is null, then will be used. + + + This is called every time any cell is drawn. It must be efficient! + + + + + + This delegate is called when the list wants to show a tooltip for a particular cell. + The delegate should return the text to display, or null to use the default behavior + (which is to show the full text of truncated cell values). + + + Displaying the full text of truncated cell values only work for FullRowSelect listviews. + This is MS's behavior, not mine. Don't complain to me :) + + + + + 保存是否选中模型的属性(或字段)的名称。 + + + 该属性是可修改的。它必须具有bool(或bool?)返回类型。如果TriStateCheckBooks为真)。 + 设置此属性将替换任何已安装的CheckStateGetter或CheckStatePutter。 + 相反,稍后设置CheckStateGetter或CheckStatePutter属性将优先于此属性的行为。 + + + + + 只要ObjectListView需要知道与给定模型对象关联的行的检查状态,就会调用此委托。 + + + .NET has no support for indeterminate values, but as of v2.0, this class allows + indeterminate values. + + + + + This delegate will be called whenever the user tries to change the check state of a row. + The delegate should return the state that was actually set, which may be different + to the state given. + + + + + 此委托可用于以自定义方式对表进行排序。 + + + + 委托必须在ObjectListView上安装ListViewItemSorter。 + 安装ItemSorter会执行对ListViewItems进行排序的实际工作。 + 有关ItemSorter必须执行的操作的示例,请参见代码中的ColumnCompeller。 + + + 请勿在VirtualObjectListView上安装CustomSorter。改为重写IVirtualListDataSource的SortObjects()方法。 + + + + + + This delegate is called when the list wants to show a tooltip for a particular header. + The delegate should return the text to display, or null to use the default behavior + (which is to not show any tooltip). + + + Installing a HeaderToolTipGetter takes precedence over any text in OLVColumn.ToolTipText. + + + + + This delegate can be used to format a OLVListItem before it is added to the control. + + + The model object for the row can be found through the RowObject property of the OLVListItem object. + All subitems normally have the same style as list item, so setting the forecolor on one + subitem changes the forecolor of all subitems. + To allow subitems to have different attributes, do this: + myListViewItem.UseItemStyleForSubItems = false;. + + If UseAlternatingBackColors is true, the backcolor of the listitem will be calculated + by the control and cannot be controlled by the RowFormatter delegate. + In general, trying to use a RowFormatter + when UseAlternatingBackColors is true does not work well. + As it says in the summary, this is called before the item is added to the control. + Many properties of the OLVListItem itself are not available at that point, including: + Index, Selected, Focused, Bounds, Checked, DisplayIndex. + + + + + 将给定的模型对象添加到此控件。 + + 要显示的模型对象 + See AddObjects() for more details + + + + 将给定的模型对象集合添加到此控件。 + + 要显示的模型对象集合 + + 如果排序处于活动状态(即,如果PrimarySortColumn不为空),则添加的对象将出现在其正确的排序位置。否则,它们将出现在列表的末尾。 + 不执行任何检查以查看是否有任何对象已在ListView中。 + 空对象将被静默忽略。 + + + + + 将列的大小调整到页眉宽度和数据的最大值。 + + + + + 设置任何自动初始化的列宽(宽度为0或-1的列将分别调整为其内容或标题的宽度)。 + + + 显然,这只会起作用一次。一旦运行,列宽将更改为其他值(不是0或-1),因此第二次运行时不会执行任何操作。 + 若要强制所有列更改其大小,请使用 。 + + + + + 根据最后一个排序列或第一列(如果没有最后一个排序列)将视图项组织到组中 + + + + + 根据给定列将视图项组织成组 + + + + 如果AlwaysGroupByColumn属性不为Null,则列表视图项将按该列组织,并且将忽略‘Column’参数。 + + 此方法触发排序事件:BeforeSorting和AfterSorting。 + + 其值应用于排序的列。 + + + + + 根据给定列将视图项组织成组 + + 将使用哪一列进行分组 + 组将使用什么顺序 + 其值应用于排序的列。不能为空 + 列中值的排序顺序 + 当‘column’中的值相等时,请使用此列提供的值 + 次级值将如何排序 + 此方法不会触发排序事件。使用BuildGroups()执行此操作 + + + + 收集并返回影响组创建的所有变量 + + + + + + Make a list of groups that should be shown according to the given parameters + + + The list of groups to be created + This should not change the state of the control. It is possible that the + groups created will not be used. They may simply be discarded. + + + + 生成/重新生成列表中的所有列表视图项,尽可能多地保留状态 + + + + + 生成/重新生成列表中的所有列表视图项 + + If this is true, the control will try to preserve the selection, + focused item, and the scroll position (see Remarks) + + + + Use this method in situations were the contents of the list is basically the same + as previously. + + + + + + 清除此列表可能一直在使用的所有缓存信息 + + + + + Apply all required extended styles to our control. + + + + Whenever .NET code sets an extended style, it erases all other extended styles + that it doesn't use. So, we have to explicit reapply the styles that we have + added. + + + Normally, we would override CreateParms property and update + the ExStyle member, but ListView seems to ignore all ExStyles that + it doesn't already know about. Worse, when we set the LVS_EX_HEADERINALLVIEWS + value, bad things happen (the control crashes!). + + + + + + Give the listview a reasonable size of its tiles, based on the number of lines of + information that each tile is going to display. + + + + + Rebuild this list for the given view + + + + + + 移除所有对象(线程安全) + + This method can safely be called from background threads. + + + + 重置已访问其URL的内存 + + + + + 将选定行的文本和HTML表示复制到剪贴板上。 + + Be careful when using this with virtual lists. If the user has selected + 10,000,000 rows, this method will faithfully try to copy all of them to the clipboard. + From the user's point of view, your program will appear to have hung. + + + + 将给定对象的文本和HTML表示复制到剪贴板上。 + + + + + 返回给定对象的html表示形式 + + + + + 取消选择列表视图中的所有行 + + + + + 返回紧跟在给定项后面的ListViewItem。 + 如果给定项为空,则返回列表中的第一个项。 + 如果给定项是最后一项,则返回NULL。 + + The item that is before the item that is returned, or null + A ListViewItem + + + + 按向用户显示的顺序返回最后一项。 + 如果控件未分组,则显示顺序与排序的列表顺序相同。 + 但如果列表是分组的,则显示顺序不同。 + + + + + + 按向用户显示的顺序返回第n项(从0开始)。 + 如果控件未分组,则显示顺序与排序的列表顺序相同。 + 但如果列表是分组的,则显示顺序不同。 + + + + + + + 返回给定listviewitem索引的显示索引。 + 如果控件未分组,则显示顺序与排序的列表顺序相同。 + 但如果列表是分组的,则显示顺序不同。 + + + + + + + 返回紧接在给定项之前出现的ListViewItem。 + 如果给定项为空,则返回列表中的最后一项。 + 如果给定项是第一项,则返回NULL。 + + The item that is before the item that is returned + A ListViewItem + + + + 在给定位置之前插入给定的对象集合 + + Where to insert the objects + The objects to be inserted + + + This operation only makes sense of non-sorted, non-grouped + lists, since any subsequent sort/group operation will rearrange + the list. + + This method only works on ObjectListViews and FastObjectListViews. + + + + + 如果选择了表示给定模型的行,则返回TRUE + + The model object to look for + Is the row selected + + + + 给定的URL是否已被访问 + + The string to be consider + Has it been visited + + + + 按给定的值增量滚动ListView。 + + Horizontal delta + Vertical delta + + + + Return a point that represents the current horizontal and vertical scroll positions + + + + + 记住给定的URL已被访问 + + The url to be remembered + This does not cause the control be redrawn + + + + 将给定的对象集合移动到给定的索引。 + + 此操作仅对未分组的ObjectListViews有意义。 + + + + + + 计算在给定点下的项目是什么? + + + + + + + + 使用Windows控件的SUBITEMHITTEST消息执行点击测试。 + 这提供了标准ListView.HitTest()不提供的有关组点击的信息。 + + + + + + + + What is under the given point? This takes the various parts of a cell into accout, including + any custom parts that a custom renderer might use + + + + An information block about what is under the point + + + + Perform a hit test when the control is not owner drawn + + + + + + + + Perform a hit test when the control is owner drawn. This hands off responsibility + to the renderer. + + + + + + + + Pause (or unpause) all animations in the list + + true to pause, false to unpause + + + + Rebuild the columns based upon its current view and column visibility settings + + + + + 从ListView中删除给定的模型对象 + + The model to be removed + See RemoveObjects() for more details + This method is thread-safe. + + + + + 从控件中移除所有给定对象。 + + Collection of objects to be removed + + Nulls and model objects that are not in the ListView are silently ignored. + This method is thread-safe. + + + + + 选择列表视图中的所有行 + + + + + 在列表视图的右下角设置要固定的给定图像。 + 当列表视图滚动时,此图像不会滚动。 + + + + 此方法使用ListView的原生功能显示背景图像。 + 它有几个限制: + + + 它在owner drawn模式下不能很好地工作。在owner drawn绘制模式下, + 每个单元格都会绘制自身,包括覆盖背景图像的背景。 + 启用网格线时看起来不是很好,因为网格线是在图像上绘制的。 + 它在XP上完全不起作用。 + 显然,当启用交替行背景色时,效果不佳。 + + + 如果你能忍受这些限制,原生水印就相当不错了。 + 它们是真实的背景,而不是像OverlayImage使用的半透明覆盖。 + 与覆盖相比,它们也有明显的优势,因为即使在MDI应用程序中,它们也可以正常工作。 + + 设置此选项将清除所有背景图像。 + + The image to be drawn. If null, any existing image will be removed. + + + + 将给定的图像设置为ListView的背景,以便它在列表中以给定的百分比偏移量显示。 + + + 这具有与 中所述的相同限制. + 在使用该方法之前,请确保了解这些限制。 + 这非常类似于 属性, + 但标准Backround Image不能正确处理具有透明区域的图像--它将透明区域呈现为黑色。这种方法没有这个问题。 + 设置此选项将清除所有背景水印。 + + The image to be drawn. If null, any existing image will be removed. + The horizontal percentage where the image will be placed. 0 is absolute left, 100 is absolute right. + The vertical percentage where the image will be placed. + + + + 将给定图像设置为ListView的平铺背景。 + + + 这具有与 相同的限制. + 在使用该方法之前,请确保了解这些限制。 + + 要绘制的图像。如果为null,则将删除所有现有图像。 + + + + 设置将在此列表视图中显示的对象集合。 + + 可以从后台线程安全地调用此方法。 + 该列表将立即更新 + The objects to be displayed + + + + 设置将在此列表视图中显示的对象集合。 + + 可以从后台线程安全地调用此方法. + 该列表将立即更新 + The objects to be displayed + 是否应尽可能保留列表的状态。 + + + + 将给定的模型对象更新到ListView中。 + 如果该模型尚不存在,则会添加该模型。 + + The model to be updated + + + See for more details + + 此方法是线程安全的。 + 此方法将导致重新排序列表。 + 此方法仅适用于ObjectListViews和FastObjectListViews。 + + + + + 更新与给定对象相等的预先存在的模型。 + 如果控件中不存在任何模型,则会添加它们。 + + Collection of objects to be updated/added + + 此方法将导致重新排序列表。 + null值将被静默忽略。 + 此方法是线程安全的。 + 此方法仅适用于ObjectListViews和FastObjectListViews。 + + + + + 更改当前模型对象上对INotifyPropertyChanged事件的任何订阅, + 以便我们不再侦听旧模型上的事件,而侦听给定集合上的事件。 + + This does nothing if UseNotifyPropertyChanged is false. + + + + + 获取或设置ObjectListView是否应订阅它给定的模型对象上的INotifyPropertyChanged事件。 + + + + 这应该在调用SetObjects()之前设置。如果将其设置为False,ObjectListView将取消订阅所有当前模型对象。 + + 如果在虚拟列表上将其设置为true,ObjectListView将遍历列表中尝试订阅更改通知的所有对象。 + 如果您的虚拟列表中有10,000,000个项目,这可能需要一些时间。 + + + + + Subscribe to INotifyPropertyChanges on the given collection of objects. + + + + + + Unsubscribe from INotifyPropertyChanges on the given collection of objects. + If the given collection is null, unsubscribe from all current subscriptions + + + + + + Return a byte array that represents the current state of the ObjectListView, such + that the state can be restored by RestoreState() + + + The state of an ObjectListView includes the attributes that the user can modify: + + current view (i.e. Details, Tile, Large Icon...) + sort column and direction + column order + column widths + column visibility + + + + It does not include selection or the scroll position. + + + A byte array representing the state of the ObjectListView + + + + Restore the state of the control from the given string, which must have been + produced by SaveState() + + A byte array returned from SaveState() + Returns true if the state was restored + + + + Instances of this class are used to store the state of an ObjectListView. + + + + + The application is idle. Trigger a SelectionChanged event. + + + + + + + The application is idle. Handle the column resizing event. + + + + + + + Handle the BeginScroll listview notification + + + True if the event was completely handled + + + + Handle the EndScroll listview notification + + + True if the event was completely handled + + + + Handle the LinkClick listview notification + + + True if the event was completely handled + + + + The cell tooltip control wants information about the tool tip that it should show. + + + + + + + Allow the HeaderControl to call back into HandleHeaderToolTipShowing without making that method public + + + + + + + The header tooltip control wants information about the tool tip that it should show. + + + + + + + Event handler for the column click event + + + + + Override the basic message pump for this control + + + + + + Handle the search for item m if possible. + + The m to be processed + bool to indicate if the msg has been handled + + + + The user wants to see the context menu. + + The windows m + A bool indicating if this m has been handled + + We want to ignore context menu requests that are triggered by right clicks on the header + + + + + Handle the Custom draw series of notifications + + The message + True if the message has been handled + + + + Handle the underlying control being destroyed + + + + + + + Handle the search for item m if possible. + + The m to be processed + bool to indicate if the msg has been handled + + + + Find the first row after the given start in which the text value in the + comparison column begins with the given text. The comparison column is column 0, + unless IsSearchOnSortColumn is true, in which case the current sort column is used. + + The text to be prefix matched + The index of the first row to consider + Which direction should be searched? + The index of the first row that matched, or -1 + The text comparison is a case-insensitive, prefix match. The search will + search the every row until a match is found, wrapping at the end if needed. + + + + Find the first row in the given range of rows that prefix matches the string value of the given column. + + + + + + The index of the matched row, or -1 + + + + Handle the Group Info series of notifications + + The message + True if the message has been handled + + + + Handle a key down message + + + True if the msg has been handled + + + + Toggle the checkedness of the selected rows + + + + Actually, this doesn't actually toggle all rows. It toggles the first row, and + all other rows get the check state of that first row. This is actually a much + more useful behaviour. + + + If no rows are selected, this method does nothing. + + + + + + Catch the Left Button down event. + + The m to be processed + bool to indicate if the msg has been handled + + + + Handle a left mouse down at the given hit test location + + Subclasses can override this to do something unique + + True if the message has been handled + + + + Catch the Left Button up event. + + The m to be processed + bool to indicate if the msg has been handled + + + + Trigger a GroupExpandCollapse event and return true if the action was cancelled + + + + + + + Catch the Right Button down event. + + The m to be processed + bool to indicate if the msg has been handled + + + + Handle a left mouse down at the given hit test location + + Subclasses can override this to do something unique + + True if the message has been handled + + + + Catch the Left Button double click event. + + The m to be processed + bool to indicate if the msg has been handled + + + + Handle a mouse double click at the given hit test location + + Subclasses can override this to do something unique + + True if the message has been handled + + + + Catch the right Button double click event. + + The m to be processed + bool to indicate if the msg has been handled + + + + Handle a right mouse double click at the given hit test location + + Subclasses can override this to do something unique + + True if the message has been handled + + + + Catch the MouseMove event. + + The m to be processed + bool to indicate if the msg has been handled + + + + Handle notifications that have been reflected back from the parent window + + The m to be processed + bool to indicate if the msg has been handled + + + + In the notification messages, we handle attempts to change the width of our columns + + The m to be processed + bool to indicate if the msg has been handled + + + + Create a ToolTipControl to manage the tooltip control used by the listview control + + + + + Update the handle used by our cell tooltip to be the tooltip used by + the underlying Windows listview control. + + + + + Handle the WM_PAINT event + + + Return true if the msg has been handled and nothing further should be done + + + + Perform any steps needed before painting the control + + + + + Perform any steps needed after painting the control + + + + + Handle the window position changing. + + The m to be processed + bool to indicate if the msg has been handled + + + + The user has right clicked on the column headers. Do whatever is required + + Return true if this event has been handle + + + + Show a menu that is appropriate when the given column header is clicked. + + The index of the header that was clicked. This + can be -1, indicating that the header was clicked outside of a column + Where should the menu be shown + True if a menu was displayed + + + + Create the menu that should be displayed when the user right clicks + on the given column header. + + Index of the column that was right clicked. + This can be negative, which indicates a click outside of any header. + The toolstrip that should be displayed + + + + The user has right clicked on the column headers. Do whatever is required + + Return true if this event has been handle + + + + Show a popup menu at the given point which will allow the user to choose which columns + are visible on this listview + + Where should the menu be placed + + + + Show a popup menu at the given point which will allow the user to choose which columns + are visible on this listview + + + Where should the menu be placed + + + + 获取或设置要用于升序排序命令的文本 + + + + + 获取或设置要用于降序排序命令的文本 + + + + + 获取或设置要用于分组命令的文本 + + + + + 获取或设置要用于锁定分组命令的文本 + + + + + 获取或设置要用于不锁定分组命令的文本 + + + + + 获取或设置要用于关闭分组命令的文本 + + + + + 获取或设置要用于不排序命令的文本 + + + + + 获取或设置要用于列描述的文本 + + + + + 获取或设置要用于选择列描述的文本 + + + + + Gets or sets the image that will be place next to the Sort Ascending command + + + + + Gets or sets the image that will be placed next to the Sort Descending command + + + + + Append the column selection menu items to the given menu strip. + + The menu to which the items will be added. + + Return the menu to which the items were added + + + + Append the column selection menu items to the given menu strip. + + The menu to which the items will be added. + Return the menu to which the items were added + + + + Create the menu items that will allow columns to be choosen and add them to the + given collection + + + + + + Create a Filtering menu + + + + + + + + Override the OnColumnReordered method to do what we want + + + + + + When the column widths are changing, resize the space filling columns + + + + + + + When the column widths change, resize the space filling columns + + + + + + + When the size of the control changes, we have to resize our space filling columns. + + + + + + + Resize our space filling columns so they fill any unoccupied width in the control + + + + + Resize our space filling columns so they fill any unoccupied width in the control + + + + + Check all rows + + + + + Check the checkbox in the given column header + + If the given columns header check box is linked to the cell check boxes, + then checkboxes in all cells will also be checked. + + + + + Mark the checkbox in the given column header as having an indeterminate value + + + + + + Mark the given object as indeterminate check state + + The model object to be marked indeterminate + + + + Mark the given object as checked in the list + + The model object to be checked + + + + Mark the given objects as checked in the list + + The model object to be checked + + + + Put a check into the check box at the given cell + + + + + + + Put an indeterminate check into the check box at the given cell + + + + + + + Return true of the given object is checked + + The model object whose checkedness is returned + Is the given object checked? + If the given object is not in the list, this method returns false. + + + + Return true of the given object is indeterminately checked + + The model object whose checkedness is returned + Is the given object indeterminately checked? + If the given object is not in the list, this method returns false. + + + + Is there a check at the check box at the given cell + + + + + + + Get the checkedness of an object from the model. Returning null means the + model does not know and the value from the control will be used. + + + + + + + Record the change of checkstate for the given object in the model. + This does not update the UI -- only the model + + + + The check state that was recorded and that should be used to update + the control. + + + + Change the check state of the given object to be the given state. + + + If the given model object isn't in the list, we still try to remember + its state, in case it is referenced in the future. + + + True if the checkedness of the model changed + + + + Toggle the checkedness of the given object. A checked object becomes + unchecked; an unchecked or indeterminate object becomes checked. + If the list has tristate checkboxes, the order is: + unchecked -> checked -> indeterminate -> unchecked ... + + The model object to be checked + + + + Toggle the checkbox in the header of the given column + + Obviously, this is only useful if the column actually has a header checkbox. + + + + + Toggle the check at the check box of the given cell + + + + + + + Uncheck all rows + + + + + Mark the given object as unchecked in the list + + The model object to be unchecked + + + + Mark the given objects as unchecked in the list + + The model object to be checked + + + + Uncheck the checkbox in the given column header + + + + + + Uncheck the check at the given cell + + + + + + + 返回给定索引处的列 + + Index of the column to be returned + An OLVColumn + + + + 返回给定标题处的列,如果有多个符合要求的标题,则默认只返回第一个 + + 要返回的列的名称 + An OLVColumn + + + + 返回给定视图可见的列的集合。只有Tile和Details有列;所有其他视图都有0列。 + + 正在为哪个视图计算列? + A list of columns + + + + 返回列表中的项目数 + + 列表中的项目数 + 如果安装了筛选器,这将返回与筛选器匹配的项目数。 + + + + 返回给定索引处的项 + + Index of the item to be returned + An OLVListItem + + + + 返回给定索引处的模型对象 + + Index of the model object to be returned + A model object + + + + 找出在给定的坐标下的行和列 + X 坐标 + Y 坐标 + 给定点下的列项 + 在给定坐标点下的行项。可以为null。 + + + + 返回给定索引/列的子项 + + Index of the item to be returned + Index of the subitem to be returned + An OLVListSubItem + + + + 滚动列表视图,使给定组位于顶部。 + + The group to be revealed + + 如果该组可见,如果可能,列表仍将滚动以将该组移至顶部。 + + 这只在列表显示分组时才有效(显然)。 + 这在虚拟列表上不起作用,因为虚拟列表不使用ListViewGroups进行分组。使用 代替. + + + + + 使给定的模型对象可见 + + The model object to be revealed + + + + 返回选定行的模型对象,如果没有选择或有多个选择,则返回null + + Model object or null + + + + 返回选定行的模型对象,如果没有选择,则返回空集合 + + ArrayList + + + + 返回选中行的模型对象;如果未选中行或选中多行,则返回NULL + + Model object or null + 使用 CheckedObject 属性代替本方法 + + + + 获取选中的模型对象的集合。 + + 使用 CheckedObjects 属性代替本方法 + + + + 在列表视图中查找给定的模型对象并返回其索引 + + The model object to be found + The index of the object. -1 means the object was not present + + + + Rebuild the given ListViewItem with the data from its associated model. + + This method does not resort or regroup the view. It simply updates + the displayed data of the given item + + + + Rebuild the data on the row that is showing the given object. + + + + This method does not resort or regroup the view. + + + The given object is *not* used as the source of data for the rebuild. + It is only used to locate the matching model in the collection, + then that matching model is used as the data source. This distinction is + only important in model classes that have overridden the Equals() method. + + + If you want the given model object to replace the pre-existing model, + use . + + + + + + Update the rows that are showing the given objects + + + This method does not resort or regroup the view. + This method can safely be called from background threads. + + + + + 更新选定的行 + + This method does not resort or regroup the view. + + + + 除任何当前选择外,还选择显示给定模型对象的行。 + + The object to be selected + Use the property to deselect all other rows + + + + 除任何当前选择外,还选择显示给定模型对象的行。 + + The object to be selected + 对象是否也应该被聚焦 + Use the property to deselect all other rows + + + + 选择显示任意给定模型对象的行。取消选择所有其他行。 + + A collection of model objects + + + + 获取或设置是否冻结列表视图。当列表视图被冻结时,它不会自我更新。 + + Frozen属性与Freeze()/UnFreeze()方法类似, + 不同之处在于将Frozen属性设置为False会立即解冻控件, + 而不管有多少未完成的Freeze()调用。 + objectListView1.Frozen = false; // unfreeze the control now! + + + + + 冻结列表视图,使其不再自我更新。 + + Freeze()/Unfreeze() calls nest correctly + + + + 解冻列表视图。如果此调用是最外层的unFreeze(),则将重新构建listview的内容。 + + Freeze()/Unfreeze() calls nest correctly + + + + 在冻结列表视图时执行所需的实际工作 + + + + + 解冻列表视图时执行所需的实际工作 + + + + + 如果选择事件当前挂起,则返回TRUE。在挂起选择事件时,不会引发SelectedIndexChanged或SelectionChanged事件。 + + + + + Suspend selection events until a matching ResumeSelectionEvents() + is called. + + Calls to this method nest correctly. Every call to SuspendSelectionEvents() + must have a matching ResumeSelectionEvents(). + + + + Resume raising selection events. + + + + + Returns a disposable that will disable selection events + during a using() block. + + + + + + Implementation only class that suspends and resumes selection + events on instance creation and disposal. + + + + + 按最后一个排序列和顺序对项目进行排序 + + + + + 按给定列中的值和上次排序顺序对列表视图中的项进行排序 + + 其值将用于排序的列的名称 + + + + 按给定列中的值和上次排序顺序对列表视图中的项进行排序 + + 其值将用于排序的列的索引 + + + + 按给定列中的值和上次排序顺序对列表视图中的项进行排序 + + 其值将用于排序的列 + + + + 按给定列中的值和上次排序顺序对列表视图中的项进行排序 + + The column whose values will be used for the sorting. + If null, the first column will be used. + The ordering to be used for sorting. If this is None, + this.Sorting and then SortOrder.Ascending will be used + If ShowGroups is true, the rows will be grouped by the given column. + If AlwaysGroupsByColumn is not null, the rows will be grouped by that column, + and the rows within each group will be sorted by the given column. + + + + Put a sort indicator next to the text of the sort column + + + + + Put a sort indicator next to the text of the given given column + + The column to be marked + The sort order in effect on that column + + + + The name of the image used when a column is sorted ascending + + This image is only used on pre-XP systems. System images are used for XP and later + + + + The name of the image used when a column is sorted descending + + This image is only used on pre-XP systems. System images are used for XP and later + + + + If the sort indicator images don't already exist, this method will make and install them + + + + + Remove any sorting and revert to the given order of the model objects + + + + + Do the actual work of creating the given list of groups + + + + + + For some reason, UseItemStyleForSubItems doesn't work for the colors + when owner drawing the list, so we have to specifically give each subitem + the desired colors + + The item whose subitems are to be corrected + Cells drawn via BaseRenderer don't need this, but it is needed + when an owner drawn cell uses DrawDefault=true + + + + Fill in the given OLVListItem with values of the given row + + the OLVListItem that is to be stuff with values + the model object from which values will be taken + + + + Make sure the ListView has the extended style that says to display subitem images. + + This method must be called after any .NET call that update the extended styles + since they seem to erase this setting. + + + + Convert the given image selector to an index into our image list. + Return -1 if that's not possible + + + Index of the image in the imageList, or -1 + + + + Return the tooltip that should be shown when the mouse is hovered over the given column + + The column index whose tool tip is to be fetched + A string or null if no tool tip is to be shown + + + + 返回当鼠标悬停在给定单元格上时应显示的工具提示 + + The column index whose tool tip is to be fetched + The row index whose tool tip is to be fetched + A string or null if no tool tip is to be shown + + + + 返回显示给定模型对象的OLVListItem + + The modelObject whose item is to be found + The OLVListItem that displays the model, or null + This method has O(n) performance. + + + + Do the work required after the items in a listview have been created + + + + + Do the work required after one item in a listview have been created + + + + + 准备列表视图以显示交替的行背景色 + + We cannot rely on lvi.Index in this method. + In a straight list, lvi.Index is the display index, and can be used to determine + whether the row should be colored. But when organised by groups, lvi.Index is not + useable because it still refers to the position in the overall list, not the display order. + + + + + Setup all subitem images on all rows + + + + + 告诉基础列表控件针对子项显示哪些图像 + + the index at which the item occurs + the item whose subitems are to be set + + + + Tell the underlying list control which images to show against the subitems + + the index at which the item occurs + the item whose subitems are to be set + will existing images be cleared if no new image is provided? + + + + Set the subitem image natively + + + + + + + + + Take ownership of the 'objects' collection. This separats our collection from the source. + + + + This method + separates the 'objects' instance variable from its source, so that any AddObject/RemoveObject + calls will modify our collection and not the original colleciton. + + + This method has the intentional side-effect of converting our list of objects to an ArrayList. + + + + + + 触发给定项目的FormatRow和可能的FormatCell事件 + + + + + + + + 触发给定项目的FormatCell事件 + + + + + + + + Make the list forget everything -- all rows and all columns + + Use if you want to remove just the rows. + + + + Update our externally visible image list so it holds the same images as our shadow list, but sized correctly + + + + + Return a copy of the given source image list, where each image has been resized to be height x height in size. + If source is null, an empty image list of the given size is returned + + Height and width of the new images + Height and width of the new images + Source of the images (can be null) + A new image list + + + + Return a bitmap of the given height x height, which shows the given image, centred. + + Height and width of new bitmap + Height and width of new bitmap + Image to be centred + The background color + A new bitmap + + + + Initialize the state image list with the required checkbox images + + + + + The name of the image used when a check box is checked + + + + + The name of the image used when a check box is unchecked + + + + + The name of the image used when a check box is Indeterminate + + + + + Setup this control so it can display check boxes on subitems + (or primary checkboxes in virtual mode) + + This gives the ListView a small image list, if it doesn't already have one. + + + + Make sure the small image list for this control has checkbox images + (used for sub-item checkboxes). + + + + This gives the ListView a small image list, if it doesn't already have one. + + + ObjectListView has to manage checkboxes on subitems separate from the checkboxes on each row. + The underlying ListView knows about the per-row checkboxes, and to make them work, OLV has to + correctly configure the StateImageList. However, the ListView cannot do checkboxes in subitems, + so ObjectListView has to handle them in a differnt fashion. So, per-row checkboxes are controlled + by images in the StateImageList, but per-cell checkboxes are handled by images in the SmallImageList. + + + + + + Owner draw the column header + + + + + + Owner draw the item + + + + + + Owner draw a single subitem + + + + + + We need the click count in the mouse up event, but that is always 1. + So we have to remember the click count from the preceding mouse down event. + + + + + + When the mouse leaves the control, remove any hot item highlighting + + + + + + When the mouse moves, we might need to change the hot item. + + + + + + Check to see if we need to start editing a cell + + + + + + Tell the world that a hyperlink was clicked and if the event isn't handled, + do the default processing. + + + + + + Do the default processing for a hyperlink clicked event, which + is to try and open the url. + + + + + + The user right clicked on the control + + + + + + This method is called every time a row is selected or deselected. This can be + a pain if the user shift-clicks 100 rows. We override this method so we can + trigger one event for any number of select/deselects that come from one user action + + + + + + Called when the handle of the underlying control is created + + + + + + This method is called after the control has been fully created. + + + + + Should we start editing the cell in response to the given mouse button event? + + + + + + + Handle a key press on this control. We specifically look for F2 which edits the primary column, + or a Tab character during an edit operation, which tries to start editing on the next (or previous) cell. + + + + + + + Start an editing operation on the first editable column of the given model. + + + + + If the model doesn't exist, or there are no editable columns, this method + will do nothing. + + This will start an edit operation regardless of CellActivationMode. + + + + + + Begin an edit operation on the given cell. + + This performs various sanity checks and passes off the real work to StartCellEdit(). + The row to be edited + The index of the cell to be edited + + + + Really start an edit operation on a given cell. The parameters are assumed to be sane. + + The row to be edited + The index of the cell to be edited + + + + Calculate the bounds of the edit control for the given item/column + + + + + + + + + Calculate the bounds of the edit control for the given item/column, when the listview + is being owner drawn. + + + + + + A rectangle that is the bounds of the cell editor + + + + Calculate the bounds of the edit control for the given item/column, when the listview + is not being owner drawn. + + + + + + A rectangle that is the bounds of the cell editor + + + + Try to give the given value to the provided control. Fall back to assigning a string + if the value assignment fails. + + A control + The value to be given to the control + The string to be given if the value doesn't work + + + + Setup the given control to be a cell editor + + + + + Return the value that the given control is showing + + + + + + + Called when the cell editor could be about to lose focus. Time to commit the change + + + + + + + Return the bounds of the given cell + + The row to be edited + The index of the cell to be edited + A Rectangle + + + + Return the bounds of the given cell only until the edge of the current text + + The row to be edited + The index of the cell to be edited + A Rectangle + + + + Calculate the visible bounds of the given column. The column's bottom edge is + either the bottom of the last row or the bottom of the control. + + The bounds of the control itself + The column + A Rectangle + This returns an empty rectnage if the control isn't in Details mode, + OR has doesn't have any rows, OR if the given column is hidden. + + + + Return a control that can be used to edit the value of the given cell. + + The row to be edited + The index of the cell to be edited + A Control to edit the given cell + + + + Get the first non-null value of the given column. + At most 1000 rows will be considered. + + + The first non-null value, or null if no non-null values were found + + + + Return a TextBox that can be used as a default cell editor. + + What column does the cell belong to? + + + + + Configure the given text box to autocomplete unique values + from the given column. At most 1000 rows will be considered. + + The textbox to configure + The column used to calculate values + + + + Configure the given text box to autocomplete unique values + from the given column. At most 1000 rows will be considered. + + The textbox to configure + The column used to calculate values + Consider only this many rows + + + + Stop editing a cell and throw away any changes. + + + + + If a cell edit is in progress, finish the edit. + + Returns false if the finishing process was cancelled + (i.e. the cell editor is still on screen) + This method does not guarantee that the editing will finish. The validation + process can cause the finishing to be aborted. Developers should check the return value + or use IsCellEditing property after calling this method to see if the user is still + editing a cell. + + + + If a cell edit is in progress, finish the edit. + + Returns false if the finishing process was cancelled + (i.e. the cell editor is still on screen) + This method does not guarantee that the editing will finish. The validation + process can cause the finishing to be aborted. Developers should check the return value + or use IsCellEditing property after calling this method to see if the user is still + editing a cell. + True if it is likely that another cell is going to be + edited immediately after this cell finishes editing + + + + Finish the cell edit operation, writing changed data back to the model object + + This method does not trigger a Validating event, so it always finishes + the cell edit. + + + + Finish the cell edit operation, writing changed data back to the model object + + This method does not trigger a Validating event, so it always finishes + the cell edit. + True if it is likely that another cell is going to be + edited immediately after this cell finishes editing + + + + Remove all trace of any existing cell edit operation + + True if it is likely that another cell is going to be + edited immediately after this cell finishes editing + True if the cell editor should be disposed + + + + Force the hot item to be recalculated + + + + + Force the hot item to be recalculated + + + + + The mouse has moved to the given pt. See if the hot item needs to be updated + + Where is the mouse? + This is the main entry point for hot item handling + + + + The mouse has moved to the given pt. See if the hot item needs to be updated + + + This is the main entry point for hot item handling + + + + Update the given row using the current hot item information + + + + + + Update the given row using the given hot item information + + + + + + + + + Apply a style to the given row + + + + + + + Apply a style to a cell + + + + + + + + Remove hot item styling from the given row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Add the given decoration to those on this list and make it appear + + The decoration + + A decoration scrolls with the listview. An overlay stays fixed in place. + + + + + Add the given overlay to those on this list and make it appear + + The overlay + + + + Draw all the decorations + + A Graphics + The items that were redrawn and whose decorations should also be redrawn + + + + Is the given decoration shown on this list + + The overlay + + + + Is the given overlay shown on this list? + + The overlay + + + + Hide any overlays. + + + This is only a temporary hiding -- the overlays will be shown + the next time the ObjectListView redraws. + + + + + Create and configure the empty list msg overlay + + + + + Initialize the standard image and text overlays + + + + + Make sure that any overlays are visible. + + + + + Refresh the display of the overlays + + + + + Refresh the display of just one overlays + + + + + Remove the given decoration from this list + + The decoration to remove + + + + Remove the given overlay to those on this list + + The overlay + + + + 创建一个筛选器,该筛选器将执行当前安装在可见列上的所有筛选。 + + + + + Do the actual work of filtering + + + + + + + + + 删除所有列筛选。 + + + + + 根据每列中定义的值筛选更新此ObjectListView的筛选 + + + + + When some setting related to filtering changes, this method is called. + + + + + 使用当前安装的模型过滤器更新所有渲染器 + + + + + 获取给定模型的复选框状态。 + + The model + 模型的复选框状态。默认为未选中。 + + + + 设置给定模型对象的复选框状态 + + The model to be remembered + The model's checkedness + The state given to the method + + + + 忽略任何持久复选框状态 + + + + + The callbacks for CellEditing events + + this + We could replace this with EventHandler<CellEditEventArgs> but that would break all + cell editing event code from v1.x. + + + + + A TreeListView combines an expandable tree structure with list view columns. + + + To support tree operations, two delegates must be provided: + + + + CanExpandGetter + + + This delegate must accept a model object and return a boolean indicating + if that model should be expandable. + + + + + ChildrenGetter + + + This delegate must accept a model object and return an IEnumerable of model + objects that will be displayed as children of the parent model. This delegate will only be called + for a model object if the CanExpandGetter has already returned true for that model. + + + + + ParentGetter + + + This delegate must accept a model object and return the parent model. + This delegate will only be called when HierarchicalCheckboxes is true OR when Reveal() is called. + + + + + The top level branches of the tree are set via the Roots property. SetObjects(), AddObjects() + and RemoveObjects() are interpreted as operations on this collection of roots. + + + To add new children to an existing branch, make changes to your model objects and then + call RefreshObject() on the parent. + + The tree must be a directed acyclic graph -- no cycles are allowed. Put more mundanely, + each model object must appear only once in the tree. If the same model object appears in two + places in the tree, the control will become confused. + + + + + This event is triggered when user input requests the expansion of a list item. + + + + + This event is triggered when user input requests the collapse of a list item. + + + + + This event is triggered after the expansion of a list item due to user input. + + + + + This event is triggered after the collapse of a list item due to user input. + + + + + Trigger the expanding event + + + + + + Trigger the collapsing event + + + + + + Trigger the expanded event + + + + + + Trigger the collapsed event + + + + + + This class handles drawing the tree structure of the primary column. + + + + + Create a TreeRenderer + + + + + Should the renderer draw glyphs at the expansion points? + + The expansion points will still function to expand/collapse even if this is false. + + + + Should the renderer draw lines connecting siblings? + + + + + Return the pen that will be used to draw the lines between branches + + + + + Should the renderer draw triangles as the expansion glyphs? + + + This looks best with ShowLines = false + + + + + Return the branch that the renderer is currently drawing. + + + + + Return the TreeListView for which the renderer is being used. + + + + + How many pixels will be reserved for each level of indentation? + + + + + The real work of drawing the tree is done in this method + + + + + + + Draw the expansion indicator + + + + + + + + Gets whether or not we should render using styles + + + + + Draw the expansion indicator using styles + + + + + + + + Is the mouse over a checkbox in this cell? + + + + + Draw the expansion indicator without using styles + + + + + + + + Draw the lines of the tree + + + + + + + + + + Do the hit test + + + + + + + + + Calculate the edit rect + + + + + + + + + + + Make a default TreeListView + + + + + This is the delegate that will be used to decide if a model object can be expanded. + + + + This is called *often* -- on every mouse move when required. It must be fast. + Don't do database lookups, linear searches, or pi calculations. Just return the + value of a property. + + + When this delegate is called, the TreeListView is not in a stable state. Don't make + calls back into the control. + + + + + + Gets whether or not this listview is capable of showing groups + + + + + This is the delegate that will be used to fetch the children of a model object + + + + This delegate will only be called if the CanExpand delegate has + returned true for the model object. + + + When this delegate is called, the TreeListView is not in a stable state. Don't do anything + that will result in calls being made back into the control. + + + + + + This is the delegate that will be used to fetch the parent of a model object + + The parent of the given model, or null if the model doesn't exist or + if the model is a root + + + + Get or set the collection of model objects that are checked. + When setting this property, any row whose model object isn't + in the given collection will be unchecked. Setting to null is + equivalent to unchecking all. + + + + This property returns a simple collection. Changes made to the returned + collection do NOT affect the list. This is different to the behaviour of + CheckedIndicies collection. + + + When getting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects. + When setting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects plus + the number of objects to be checked. + + + If the ListView is not currently showing CheckBoxes, this property does nothing. It does + not remember any check box settings made. + + + + + + Gets or sets the model objects that are expanded. + + + This can be used to expand model objects before they are seen. + + Setting this does *not* force the control to rebuild + its display. You need to call RebuildAll(true). + + + + + + Gets or sets the filter that is applied to our whole list of objects. + TreeListViews do not currently support whole list filters. + + + + + Gets or sets whether this tree list view will display hierarchical checkboxes. + Hierarchical checkboxes is when a parent's "checkedness" is calculated from + the "checkedness" of its children. If all children are checked, the parent + will be checked. If all children are unchecked, the parent will also be unchecked. + If some children are checked and others are not, the parent will be indeterminate. + + + Hierarchical checkboxes don't work with either CheckStateGetters or CheckedAspectName + (which is basically the same thing). This is because it is too expensive to build the + initial state of the control if these are installed, since the control would have to walk + *every* branch recursively since a single bottom level leaf could change the checkedness + of the top root. + + + + + Gets or sets the collection of root objects of the tree + + + + + Gets the collection of objects that will be considered when creating clusters + (which are used to generate Excel-like column filters) + + + + + After expanding a branch, should the TreeListView attempts to show as much of the + revealed descendents as possible. + + + + + The model objects that form the top level branches of the tree. + + Setting this does NOT reset the state of the control. + In particular, it does not collapse branches. + + + + Make sure that at least one column is displaying a tree. + If no columns is showing the tree, make column 0 do it. + + + + + Gets or sets the renderer that will be used to draw the tree structure. + Setting this to null resets the renderer to default. + + If a column is currently rendering the tree, the renderer + for that column will be replaced. If no column is rendering the tree, + column 0 will be given this renderer. + + + + This is the delegate that will be used to create the underlying Tree structure + that the TreeListView uses to manage the information about the tree. + + + The factory must not return null. + + Most users of TreeListView will never have to use this delegate. + + + + + + Should a wait cursor be shown when a branch is being expanded? + + When this is true, the wait cursor will be shown whilst the children of the + branch are being fetched. If the children of the branch have already been cached, + the cursor will not change. + + + + Gets the model that is used to manage the tree structure + + + Don't mess with this property unless you really know what you are doing. + If you don't already know what it's for, you don't need it. + + + + Return true if the branch at the given model is expanded + + + + + + + Collapse the subtree underneath the given model + + + + + + Collapse all subtrees within this control + + + + + Remove all items from this list + + This method can safely be called from background threads. + + + + Collapse all roots and forget everything we know about all models + + + + + Expand the subtree underneath the given model object + + + + + + Expand all the branches within this tree recursively. + + Be careful: this method could take a long time for large trees. + + + + Completely rebuild the tree structure + + If true, the control will try to preserve selection and expansion + + + + Completely rebuild the tree structure + + If not null, this list of objects will be selected after the tree is rebuilt + If not null, this collection of objects will be expanded after the tree is rebuilt + If not null, this collection of objects will be checked after the tree is rebuilt + + + + Unroll all the ancestors of the given model and make sure it is then visible. + + This works best when a ParentGetter is installed. + The object to be revealed + If true, the model will be selected and focused after being revealed + True if the object was found and revealed. False if it was not found. + + + + Update the rows that are showing the given objects + + + + + Change the check state of the given object to be the given state. + + + If the given model object isn't in the list, we still try to remember + its state, in case it is referenced in the future. + + + True if the checkedness of the model changed + + + + Toggle the expanded state of the branch at the given model object + + + + + + Return whether or not the given model can expand. + + + The given model must have already been seen in the tree + + + + Return the model object that is the parent of the given model object. + + + + The given model must have already been seen in the tree. + + + + Return the collection of model objects that are the children of the + given model as they exist in the tree at the moment. + + + + + This method returns the collection of children as the tree knows them. If the given + model has never been presented to the user (e.g. it belongs to a parent that has + never been expanded), then this method will return an empty collection. + + Because of this, if you want to traverse the whole tree, this is not the method to use. + It's better to traverse the your data model directly. + + + If the given model has not already been seen in the tree or + if it is not expandable, an empty collection will be returned. + + + + + + Delegates of this type are use to decide if the given model object can be expanded + + The model under consideration + Can the given model be expanded? + + + + Delegates of this type are used to fetch the children of the given model object + + The parent whose children should be fetched + An enumerable over the children + + + + Delegates of this type are used to fetch the parent of the given model object. + + The child whose parent should be fetched + The parent of the child or null if the child is a root + + + + Delegates of this type are used to create a new underlying Tree structure. + + The view for which the Tree is being created + A subclass of Tree + + + + Handle a left button down event + + + + + + + Create a OLVListItem for given row index + + The index of the row that is needed + An OLVListItem + This differs from the base method by also setting up the IndentCount property. + + + + Reinitialize the Tree structure + + + + + Recalculate the state of the checkboxes of all the items in the given list + and their ancestors. + + This only makes sense when HierarchicalCheckboxes is true. + + + + + Recalculate the hierarchy state of the given item and its ancestors + + This only makes sense when HierarchicalCheckboxes is true. + + + + + Yield the unique ancestors of the given collection of objects. + The order of the ancestors is guaranteed to be deeper objects first. + Roots will always be last. + + + Unique ancestors of the given objects + + + + Return all the ancestors of the given model + + + + This uses ParentGetter if possible. + + If the given model is a root OR if the model doesn't exist, the collection will be empty + + The model whose ancestors should be calculated + Return a collection of ancestors of the given model. + + + + The application is idle and a SelectionChanged event has been scheduled + + + + + + + Decide if the given key event should be handled as a normal key input to the control? + + + + + + + Handle focus being lost, including making sure that the whole control is redrawn. + + + + + + Handle the keyboard input to mimic a TreeView. + + + Was the key press handled? + + + + A Tree object represents a tree structure data model that supports both + tree and flat list operations as well as fast access to branches. + + If you create a subclass of Tree, you must install it in the TreeListView + via the TreeFactory delegate. + + + + Create a Tree + + + + + + This is the delegate that will be used to decide if a model object can be expanded. + + + + + This is the delegate that will be used to fetch the children of a model object + + This delegate will only be called if the CanExpand delegate has + returned true for the model object. + + + + Get or return the top level model objects in the tree + + + + + What tree view is this Tree the model for? + + + + + Collapse the subtree underneath the given model + + The model to be collapsed. If the model isn't in the tree, + or if it is already collapsed, the command does nothing. + The index of the model in flat list version of the tree + + + + Collapse all branches in this tree + + Nothing useful + + + + Expand the subtree underneath the given model object + + The model to be expanded. + The index of the model in flat list version of the tree + + If the model isn't in the tree, + if it cannot be expanded or if it is already expanded, the command does nothing. + + + + + Expand all branches in this tree + + Return the index of the first branch that was expanded + + + + Return the Branch object that represents the given model in the tree + + The model whose branches is to be returned + The branch that represents the given model, or null if the model + isn't in the tree. + + + + Return the number of visible descendents that are below the given model. + + The model whose descendent count is to be returned + The number of visible descendents. 0 if the model doesn't exist or is collapsed + + + + Rebuild the children of the given model, refreshing any cached information held about the given object + + + The index of the model in flat list version of the tree + + + + Is the given model expanded? + + + + + + + Remember whether or not the given model was expanded + + + + + + + Insert the children of the given branch into the given position + + The branch whose children should be inserted + The index where the children should be inserted + + + + Rebuild our flat internal list of objects. + + + + + Rebuild our reverse index that maps an object to its location + in the filteredObjectList array. + + + + + + Create a new branch within this tree + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sort the tree on the given column and in the given order + + + + + + + + + + + + + Add the given collection of objects to the roots of this tree + + + + + + + + + + + + + Remove all of the given objects from the roots of the tree. + Any objects that is not already in the roots collection is ignored. + + + + + + Set the roots of this tree to be the given collection + + + + + + Update/replace the nth object with the given object + + + + + + + + + + + + + + Is this list currently being filtered? + + + + + Should the given model be included in this control? + + The model to consider + True if it will be included + + + + + + + + + + + + + + A Branch represents a sub-tree within a tree + + + + + Indicators for branches + + + + + FirstBranch of tree + + + + + LastChild of parent + + + + + OnlyBranch of tree + + + + + Create a Branch + + + + + + + + Get the ancestor branches of this branch, with the 'oldest' ancestor first. + + + + + Can this branch be expanded? + + + + + Gets or sets our children + + + + + Get/set the model objects that are beneath this branch + + + + + Gets a list of all the branches that survive filtering + + + + + Gets or set whether this branch is expanded + + + + + Return true if this branch is the first branch of the entire tree + + + + + Return true if this branch is the last child of its parent + + + + + Return true if this branch is the only top level branch + + + + + Gets the depth level of this branch + + + + + Gets or sets which model is represented by this branch + + + + + Return the number of descendents of this branch that are currently visible + + + + + + Gets or sets our parent branch + + + + + Gets or sets our overall tree + + + + + Is this branch currently visible? A branch is visible + if it has no parent (i.e. it's a root), or its parent + is visible and expanded. + + + + + Clear any cached information that this branch is holding + + + + + Collapse this branch + + + + + Expand this branch + + + + + Expand this branch recursively + + + + + Collapse all branches in this tree + + Nothing useful + + + + Fetch the children of this branch. + + This should only be called when CanExpand is true. + + + + Collapse the visible descendents of this branch into list of model objects + + + + + + Flatten this branch's visible descendents onto the given list. + + + The branch itself is not included in the list. + + + + Force a refresh of all children recursively + + + + + Sort the sub-branches and their descendents so they are ordered according + to the given comparer. + + The comparer that orders the branches + + + + This class sorts branches according to how their respective model objects are sorted + + + + + Create a BranchComparer + + + + + + Order the two branches + + + + + + + + Let the world know that a cell edit operation is beginning or ending + + + + + Create an event args + + + + + + + + + + Change this to true to cancel the cell editing operation. + + + During the CellEditStarting event, setting this to true will prevent the cell from being edited. + During the CellEditFinishing event, if this value is already true, this indicates that the user has + cancelled the edit operation and that the handler should perform cleanup only. Setting this to true, + will prevent the ObjectListView from trying to write the new value into the model object. + + + + + During the CellEditStarting event, this can be modified to be the control that you want + to edit the value. You must fully configure the control before returning from the event, + including its bounds and the value it is showing. + During the CellEditFinishing event, you can use this to get the value that the user + entered and commit that value to the model. Changing the control during the finishing + event has no effect. + + + + + The column of the cell that is going to be or has been edited. + + + + + The model object of the row of the cell that is going to be or has been edited. + + + + + The listview item of the cell that is going to be or has been edited. + + + + + The data value of the cell as it stands in the control. + + Only validate during Validating and Finishing events. + + + + The index of the cell that is going to be or has been edited. + + + + + The data value of the cell before the edit operation began. + + + + + The bounds of the cell that is going to be or has been edited. + + + + + Gets or sets whether the control used for editing should be auto matically disposed + when the cell edit operation finishes. Defaults to true + + If the control is expensive to create, you might want to cache it and reuse for + for various cells. If so, you don't want ObjectListView to dispose of the control automatically + + + + Event blocks for events that can be cancelled + + + + + Has this event been cancelled by the event handler? + + + + + BeforeSorting + + + + + Create BeforeSortingEventArgs + + + + + + + + + Create BeforeSortingEventArgs + + + + + + + + + + + Did the event handler already do the sorting for us? + + + + + What column will be used for grouping + + + + + How will groups be ordered + + + + + What column will be used for sorting + + + + + What order will be used for sorting. None means no sorting. + + + + + What column will be used for secondary sorting? + + + + + What order will be used for secondary sorting? + + + + + Sorting has just occurred. + + + + + Create a AfterSortingEventArgs + + + + + + + + + + + Create a AfterSortingEventArgs + + + + + + What column was used for grouping? + + + + + What ordering was used for grouping? + + + + + What column was used for sorting? + + + + + What ordering was used for sorting? + + + + + What column was used for secondary sorting? + + + + + What order was used for secondary sorting? + + + + + This event is triggered when the contents of a list have changed + and we want the world to have a chance to filter the list. + + + + + Create a FilterEventArgs + + + + + + Gets or sets what objects are being filtered + + + + + Gets or sets what objects survived the filtering + + + + + This event is triggered after the items in the list have been changed, + either through SetObjects, AddObjects or RemoveObjects. + + + + + Create a ItemsChangedEventArgs + + + + + Constructor for this event when used by a virtual list + + + + + + + Gets how many items were in the list before it changed + + + + + Gets how many objects are in the list after the change. + + + + + This event is triggered by AddObjects before any change has been made to the list. + + + + + Create an ItemsAddingEventArgs + + + + + + Create an ItemsAddingEventArgs + + + + + + + Gets or sets where the collection is going to be inserted. + + + + + Gets or sets the objects to be added to the list + + + + + This event is triggered by SetObjects before any change has been made to the list. + + + When used with a virtual list, OldObjects will always be null. + + + + + Create ItemsChangingEventArgs + + + + + + + Gets the objects that were in the list before it change. + For virtual lists, this will always be null. + + + + + Gets or sets the objects that will be in the list after it changes. + + + + + This event is triggered by RemoveObjects before any change has been made to the list. + + + + + Create an ItemsRemovingEventArgs + + + + + + Gets or sets the objects that will be removed + + + + + Triggered after the user types into a list + + + + + Create an AfterSearchingEventArgs + + + + + + + Gets the string that was actually searched for + + + + + Gets or sets whether an the event handler already handled this event + + + + + Gets the index of the row that was selected by the search. + -1 means that no row was matched + + + + + Triggered when the user types into a list + + + + + Create BeforeSearchingEventArgs + + + + + + + Gets or sets the string that will be found by the search routine + + Modifying this value does not modify the memory of what the user has typed. + When the user next presses a character, the search string will revert to what + the user has actually typed. + + + + Gets or sets the index of the first row that will be considered to matching. + + + + + The parameter block when telling the world about a cell based event + + + + + Gets the ObjectListView that is the source of the event + + + + + Gets the model object under the cell + + This is null for events triggered by the header. + + + + Gets the row index of the cell + + This is -1 for events triggered by the header. + + + + Gets the column index of the cell + + This is -1 when the view is not in details view. + + + + Gets the column of the cell + + This is null when the view is not in details view. + + + + Gets the location of the mouse at the time of the event + + + + + Gets the state of the modifier keys at the time of the event + + + + + Gets the item of the cell + + + + + Gets the subitem of the cell + + This is null when the view is not in details view and + for event triggered by the header + + + + Gets the HitTest object that determined which cell was hit + + + + + Gets or set if this event completelely handled. If it was, no further processing + will be done for it. + + + + + Tells the world that a cell was clicked + + + + + Gets or sets the number of clicks associated with this event + + + + + Tells the world that a cell was right clicked + + + + + Gets or sets the menu that should be displayed as a result of this event. + + The menu will be positioned at Location, so changing that property changes + where the menu will be displayed. + + + + Tell the world that the mouse is over a given cell + + + + + Tells the world that the frozen-ness of the ObjectListView has changed. + + + + + Make a FreezeEventArgs + + + + + + How frozen is the control? 0 means that the control is unfrozen, + more than 0 indicates froze. + + + + + The parameter block when telling the world that a tool tip is about to be shown. + + + + + Gets the tooltip control that is triggering the tooltip event + + + + + Gets or sets the text should be shown on the tooltip for this event + + Setting this to empty or null prevents any tooltip from showing + + + + In what direction should the text for this tooltip be drawn? + + + + + Should the tooltip for this event been shown in bubble style? + + This doesn't work reliable under Vista + + + + What color should be used for the background of the tooltip + + Setting this does nothing under Vista + + + + What color should be used for the foreground of the tooltip + + Setting this does nothing under Vista + + + + What string should be used as the title for the tooltip for this event? + + + + + Which standard icon should be used for the tooltip for this event + + + + + How many milliseconds should the tooltip remain before it automatically + disappears. + + + + + What font should be used to draw the text of the tooltip? + + + + + Common information to all hyperlink events + + + + + Gets the ObjectListView that is the source of the event + + + + + Gets the model object under the cell + + + + + Gets the row index of the cell + + + + + Gets the column index of the cell + + This is -1 when the view is not in details view. + + + + Gets the column of the cell + + This is null when the view is not in details view. + + + + Gets the item of the cell + + + + + Gets the subitem of the cell + + This is null when the view is not in details view + + + + Gets the ObjectListView that is the source of the event + + + + + Gets or set if this event completelely handled. If it was, no further processing + will be done for it. + + + + + + + + + + Gets the ObjectListView that is the source of the event + + + + + Gets the model object under the cell + + + + + Gets the column of the cell + + This is null when the view is not in details view. + + + + Gets the text of the cell + + + + + Gets or sets whether or not this cell is a hyperlink. + Defaults to true for enabled rows and false for disabled rows. + + + + + Gets or sets the url that should be invoked when this cell is clicked. + + Setting this to None or String.Empty means that this cell is not a hyperlink + + + + + + + + Gets the ObjectListView that is the source of the event + + + + + Gets the item of the cell + + + + + Gets the model object under the cell + + + + + Gets the row index of the cell + + + + + Gets the display index of the row + + + + + Should events be triggered for each cell in this row? + + + + + Parameter block for FormatCellEvent + + + + + Gets the column index of the cell + + This is -1 when the view is not in details view. + + + + Gets the column of the cell + + This is null when the view is not in details view. + + + + Gets the subitem of the cell + + This is null when the view is not in details view + + + + Gets the model value that is being displayed by the cell. + + This is null when the view is not in details view + + + + The event args when a hyperlink is clicked + + + + + Gets the url that was associated with this cell. + + + + + The event args when the check box in a column header is changing + + + + + Get the column whose checkbox is changing + + + + + Get or set the new state that should be used by the column + + + + + The event args when the hot item changed + + + + + Gets or set if this event completelely handled. If it was, no further processing + will be done for it. + + + + + Gets the part of the cell that the mouse is over + + + + + Gets an extended indication of the part of item/subitem/group that the mouse is currently over + + + + + Gets the index of the column that the mouse is over + + In non-details view, this will always be 0. + + + + Gets the index of the row that the mouse is over + + + + + Gets the group that the mouse is over + + + + + Gets the part of the cell that the mouse used to be over + + + + + Gets an extended indication of the part of item/subitem/group that the mouse used to be over + + + + + Gets the index of the column that the mouse used to be over + + + + + Gets the index of the row that the mouse used to be over + + + + + Gets the group that the mouse used to be over + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Let the world know that a checkbox on a subitem is changing + + + + + Create a new event block + + + + + + + + + + The column of the cell that is having its checkbox changed. + + + + + The model object of the row of the cell that is having its checkbox changed. + + + + + The listview item of the cell that is having its checkbox changed. + + + + + The current check state of the cell. + + + + + The proposed new check state of the cell. + + + + + The index of the cell that is going to be or has been edited. + + + + + This event argument block is used when groups are created for a list. + + + + + Create a CreateGroupsEventArgs + + + + + + Gets the settings that control the creation of groups + + + + + Gets or sets the groups that should be used + + + + + Has this event been cancelled by the event handler? + + + + + This event argument block is used when the text of a group task is clicked + + + + + Create a GroupTaskClickedEventArgs + + + + + + Gets which group was clicked + + + + + This event argument block is used when a group is about to expand or collapse + + + + + Create a GroupExpandingCollapsingEventArgs + + + + + + Gets which group is expanding/collapsing + + + + + Gets whether this event is going to expand the group. + If this is false, the group must be collapsing. + + + + + This event argument block is used when the state of group has changed (collapsed, selected) + + + + + Create a GroupStateChangedEventArgs + + + + + + + + Gets whether the group was collapsed by this event + + + + + Gets whether the group was focused by this event + + + + + Gets whether the group was selected by this event + + + + + Gets whether the group was uncollapsed by this event + + + + + Gets whether the group was unfocused by this event + + + + + Gets whether the group was unselected by this event + + + + + Gets which group had its state changed + + + + + Gets the previous state of the group + + + + + Gets the new state of the group + + + + + This event argument block is used when a branch of a tree is about to be expanded + + + + + Create a new event args + + + + + + + Gets the model that is about to expand. If null, all branches are going to be expanded. + + + + + Gets the OLVListItem that is about to be expanded + + + + + This event argument block is used when a branch of a tree has just been expanded + + + + + Create a new event args + + + + + + + Gets the model that is was expanded. If null, all branches were expanded. + + + + + Gets the OLVListItem that was expanded + + + + + This event argument block is used when a branch of a tree is about to be collapsed + + + + + Create a new event args + + + + + + + Gets the model that is about to collapse. If this is null, all models are going to collapse. + + + + + Gets the OLVListItem that is about to be collapsed. Can be null + + + + + This event argument block is used when a branch of a tree has just been collapsed + + + + + Create a new event args + + + + + + + Gets the model that is was collapsed. If null, all branches were collapsed + + + + + Gets the OLVListItem that was collapsed + + + + + This class contains all the settings used when groups are created + + + + + Create a GroupingParameters + + + + + + + + + + + + + + + Gets or sets the ObjectListView being grouped + + + + + Gets or sets the column used to create groups + + + + + In what order will the groups themselves be sorted? + + + + + If this is set, this comparer will be used to order the groups + + + + + If this is set, this comparer will be used to order items within each group + + + + + Gets or sets the column that will be the primary sort + + + + + Gets or sets the ordering for the primary sort + + + + + Gets or sets the column used for secondary sorting + + + + + Gets or sets the ordering for the secondary sort + + + + + Gets or sets the title format used for groups with zero or more than one element + + + + + Gets or sets the title format used for groups with only one element + + + + + Gets or sets whether the items should be sorted by the primary column + + + + + These values indicate what is the state of the group. These values + are taken directly from the SDK and many are not used by ObjectListView. + + + + + Normal + + + + + Collapsed + + + + + Hidden + + + + + NoHeader + + + + + Can be collapsed + + + + + Has focus + + + + + Is Selected + + + + + Is subsetted + + + + + Subset link has focus + + + + + All styles + + + + + This mask indicates which members of a LVGROUP have valid data. These values + are taken directly from the SDK and many are not used by ObjectListView. + + + + + No mask + + + + + Group has header + + + + + Group has footer + + + + + Group has state + + + + + + + + + + + + + + + pszSubtitle is valid + + + + + pszTask is valid + + + + + pszDescriptionTop is valid + + + + + pszDescriptionBottom is valid + + + + + iTitleImage is valid + + + + + iExtendedImage is valid + + + + + iFirstItem and cItems are valid + + + + + pszSubsetTitle is valid + + + + + readonly, cItems holds count of items in visible subset, iFirstItem is valid + + + + + This mask indicates which members of a GROUPMETRICS structure are valid + + + + + + + + + + + + + + + + + + + + + + + + + Instances of this class enhance the capabilities of a normal ListViewGroup, + enabling the functionality that was released in v6 of the common controls. + + + + In this implementation (2009-09), these objects are essentially passive. + Setting properties does not automatically change the associated group in + the listview. Collapsed and Collapsible are two exceptions to this and + give immediate results. + + + This really should be a subclass of ListViewGroup, but that class is + sealed (why is that?). So this class provides the same interface as a + ListViewGroup, plus many other new properties. + + + + + + Create an OLVGroup + + + + + 按指定标题创建分组 + + 分组标题 + + + + Gets or sets the bottom description of the group + + + Descriptions only appear when group is centered and there is a title image + + + + + Gets or sets whether or not this group is collapsed + + + + + Gets or sets whether or not this group can be collapsed + + + + + Gets or sets some representation of the contents of this group + + This is user defined (like Tag) + + + + Gets whether this group has been created. + + + + + Gets or sets the int or string that will select the extended image to be shown against the title + + + + + Gets or sets the footer of the group + + + + + Gets the internal id of our associated ListViewGroup. + + + + + Gets or sets the header of the group + + + + + Gets or sets the horizontal alignment of the group header + + + + + Gets or sets the internally created id of the group + + + + + Gets or sets ListViewItems that are members of this group + + Listener of the BeforeCreatingGroups event can populate this collection. + It is only used on non-virtual lists. + + + + Gets or sets the key that was used to partition objects into this group + + This is user defined (like Tag) + + + + Gets the ObjectListView that this group belongs to + + If this is null, the group has not yet been created. + + + + Gets or sets the name of the group + + As of 2009-09-01, this property is not used. + + + + Gets or sets whether this group is focused + + + + + Gets or sets whether this group is selected + + + + + Gets or sets the text that will show that this group is subsetted + + + As of WinSDK v7.0, subsetting of group is officially unimplemented. + We can get around this using undocumented interfaces and may do so. + + + + + Gets or set the subtitleof the task + + + + + Gets or sets the value by which this group will be sorted. + + + + + Gets or sets the state of the group + + + + + Gets or sets which bits of State are valid + + + + + Gets or sets whether this group is showing only a subset of its elements + + + As of WinSDK v7.0, this property officially does nothing. + + + + + Gets or sets the user-defined data attached to this group + + + + + Gets or sets the task of this group + + This task is the clickable text that appears on the right margin + of the group header. + + + + Gets or sets the int or string that will select the image to be shown against the title + + + + + Gets or sets the top description of the group + + + Descriptions only appear when group is centered and there is a title image + + + + + Gets or sets the number of items that are within this group. + + This should only be used for virtual groups. + + + + Gets or sets the ListViewGroup that is shadowed by this group. + + For virtual groups, this will always be null. + + + + Calculate the index into the group image list of the given image selector + + + + + + + Convert this object to a string representation + + + + + + Insert a native group into the underlying Windows control, + *without* using a ListViewGroup + + + This is used when creating virtual groups + + + + Insert a native group into the underlying control via a ListViewGroup + + + + + + Change the members of the group to match the current contents of Items, + using a ListViewGroup + + + + + Create a native LVGROUP structure that matches this group + + + + + Get the current state of this group from the underlying control + + + + + Get the current state of this group from the underlying control + + + + + An instance of Munger gets a value from or puts a value into a target object. The property + to be peeked (or poked) is determined from a string. The peeking or poking is done using reflection. + + + Name of the aspect to be peeked can be a field, property or parameterless method. The name of an + aspect to poke can be a field, writable property or single parameter method. + + Aspect names can be dotted to chain a series of references. + + Order.Customer.HomeAddress.State + + + + + Create a do nothing Munger + + + + + Create a Munger that works on the given aspect name + + The name of the + + + + A helper method to put the given value into the given aspect of the given object. + + This method catches and silently ignores any errors that occur + while modifying the target object + The object to be modified + The name of the property/field to be modified + The value to be assigned + Did the modification work? + + + + Gets or sets whether Mungers will silently ignore missing aspect errors. + + + + By default, if a Munger is asked to fetch a field/property/method + that does not exist from a model, it returns an error message, since that + condition is normally a programming error. There are some use cases where + this is not an error, and the munger should simply keep quiet. + + By default this is true during release builds. + + + + + The name of the aspect that is to be peeked or poked. + + + + This name can be a field, property or parameter-less method. + + + The name can be dotted, which chains references. If any link in the chain returns + null, the entire chain is considered to return null. + + + "DateOfBirth" + "Owner.HomeAddress.Postcode" + + + + Extract the value indicated by our AspectName from the given target. + + If the aspect name is null or empty, this will return null. + The object that will be peeked + The value read from the target + + + + Extract the value indicated by our AspectName from the given target, raising exceptions + if the munger fails. + + If the aspect name is null or empty, this will return null. + The object that will be peeked + The value read from the target + + + + Poke the given value into the given target indicated by our AspectName. + + + + If the AspectName is a dotted path, all the selectors bar the last + are used to find the object that should be updated, and the last + selector is used as the property to update on that object. + + + So, if 'target' is a Person and the AspectName is "HomeAddress.Postcode", + this method will first fetch "HomeAddress" property, and then try to set the + "Postcode" property on the home address object. + + + The object that will be poked + The value that will be poked into the target + bool indicating whether the put worked + + + + Gets the list of SimpleMungers that match our AspectName + + + + + Convert a possibly dotted AspectName into a list of SimpleMungers + + + + + + + Evaluate the given chain of SimpleMungers against an initial target. + + + + + + + + A SimpleMunger deals with a single property/field/method on its target. + + + Munger uses a chain of these resolve a dotted aspect name. + + + + + Create a SimpleMunger + + + + + + The name of the aspect that is to be peeked or poked. + + + + This name can be a field, property or method. + When using a method to get a value, the method must be parameter-less. + When using a method to set a value, the method must accept 1 parameter. + + + It cannot be a dotted name. + + + + + + Get a value from the given target + + + + + + + Poke the given value into the given target indicated by our AspectName. + + The object that will be poked + The value that will be poked into the target + bool indicating if the put worked + + + + These exceptions are raised when a munger finds something it cannot process + + + + + Create a MungerException + + + + + + + + Get the munger that raised the exception + + + + + Gets the target that threw the exception + + + + + Wrapper for all native method calls on ListView controls + + + + + Put an image under the ListView. + + + + The ListView must have its handle created before calling this. + + + This doesn't work very well. Specifically, it doesn't play well with owner drawn, + and grid lines are drawn over it. + + + + The image to be used as the background. If this is null, any existing background image will be cleared. + If this is true, the image is pinned to the bottom right and does not scroll. The other parameters are ignored + If this is true, the image will be tiled to fill the whole control background. The offset parameters will be ignored. + If both watermark and tiled are false, this indicates the horizontal percentage where the image will be placed. 0 is absolute left, 100 is absolute right. + If both watermark and tiled are false, this indicates the vertical percentage where the image will be placed. + + + + + Flags controlling how the Image List item is + drawn + + + + + Draw item normally. + + + + + Draw item transparently. + + + + + Draw item blended with 25% of the specified foreground colour + or the Highlight colour if no foreground colour specified. + + + + + Draw item blended with 50% of the specified foreground colour + or the Highlight colour if no foreground colour specified. + + + + + Draw the icon's mask + + + + + Draw the icon image without using the mask + + + + + Draw the icon using the ROP specified. + + + + + Preserves the alpha channel in dest. XP only. + + + + + Scale the image to cx, cy instead of clipping it. XP only. + + + + + Scale the image to the current DPI of the display. XP only. + + + + + Enumeration containing XP ImageList Draw State options + + + + + The image state is not modified. + + + + + Adds a glow effect to the icon, which causes the icon to appear to glow + with a given color around the edges. (Note: does not appear to be implemented) + + + + + Adds a drop shadow effect to the icon. (Note: does not appear to be implemented) + + + + + Saturates the icon by increasing each color component + of the RGB triplet for each pixel in the icon. (Note: only ever appears to result in a completely unsaturated icon) + + + + + Alpha blends the icon. Alpha blending controls the transparency + level of an icon, according to the value of its alpha channel. + (Note: does not appear to be implemented). + + + + + Draws an image using the specified flags and state on XP systems. + + The image list from which an item will be drawn + Device context to draw to + Index of image to draw + X Position to draw at + Y Position to draw at + Drawing flags + Width to draw + Height to draw + State flags + + + + Make sure the ListView has the extended style that says to display subitem images. + + This method must be called after any .NET call that update the extended styles + since they seem to erase this setting. + The listview to send a m to + + + + Change the virtual list size of the given ListView (which must be in virtual mode) + + This will not change the scroll position + The listview to send a message to + How many rows should the list have? + + + + Make sure the ListView has the extended style that says to display subitem images. + + This method must be called after any .NET call that update the extended styles + since they seem to erase this setting. + The listview to send a m to + + + + + + Calculates the number of items that can fit vertically in the visible area of a list-view (which + must be in details or list view. + + The listView + Number of visible items per page + + + + For the given item and subitem, make it display the given image + + The listview to send a m to + row number (0 based) + subitem (0 is the item itself) + index into the image list + + + + Setup the given column of the listview to show the given image to the right of the text. + If the image index is -1, any previous image is cleared + + The listview to send a m to + Index of the column to modifiy + + Index into the small image list + + + + Does this version of the operating system have builtin sort indicators? + + Are there builtin sort indicators + XP and later have these + + + + Return the bounds of the update region on the given control. + + The BeginPaint() system call validates the update region, effectively wiping out this information. + So this call has to be made before the BeginPaint() call. + The control whose update region is be calculated + A rectangle + + + + Validate an area of the given control. A validated area will not be repainted at the next redraw. + + The control to be validated + The area of the control to be validated + + + + Select all rows on the given listview + + The listview whose items are to be selected + + + + Deselect all rows on the given listview + + The listview whose items are to be deselected + + + + Deselect a single row + + + + + + + Set the item state on the given item + + The listview whose item's state is to be changed + The index of the item to be changed + Which bits of the value are to be set? + The value to be set + + + + Scroll the given listview by the given deltas + + + + + true if the scroll succeeded + + + + Return the handle to the header control on the given list + + The listview whose header control is to be returned + The handle to the header control + + + + Return the edges of the given column. + + + + A Point holding the left and right co-ords of the column. + -1 means that the sides could not be retrieved. + + + + Return the edges of the given column. + + + + A Point holding the left and right co-ords of the column. + -1 means that the sides could not be retrieved. + + + + Return the index of the column of the header that is under the given point. + Return -1 if no column is under the pt + + The list we are interested in + The client co-ords + The index of the column under the point, or -1 if no column header is under that point + + + + Return the index of the divider under the given point. Return -1 if no divider is under the pt + + The list we are interested in + The client co-ords + The index of the divider under the point, or -1 if no divider is under that point + + + + Get the scroll position of the given scroll bar + + + + + + + + Change the z-order to the window 'toBeMoved' so it appear directly on top of 'reference' + + + + + + + + Make the given control/window a topmost window + + + + + + + Change the size of the window without affecting any other attributes + + + + + + + + + Show the given window without activating it + + The window to show + + + + Mark the given column as being selected. + + + The OLVColumn or null to clear + + This method works, but it prevents subitems in the given column from having + back colors. + + + + + A simple-minded implementation of a Dictionary that can handle null as a key. + + The type of the dictionary key + The type of the values to be stored + This is not a full implementation and is only meant to handle + collecting groups by their keys, since groups can have null as a key value. + + + + OLVListItems are specialized ListViewItems that know which row object they came from, + and the row index at which they are displayed, even when in group view mode. They + also know the image they should draw against themselves + + + + + Create a OLVListItem for the given row object + + + + + Create a OLVListItem for the given row object, represented by the given string and image + + + + + Gets the bounding rectangle of the item, including all subitems + + + + + Gets or sets how many pixels will be left blank around each cell of this item + + This setting only takes effect when the control is owner drawn. + + + + Gets or sets how the cells of this item will be vertically aligned + + This setting only takes effect when the control is owner drawn. + + + + Gets or sets the checkedness of this item. + + + Virtual lists don't handle checkboxes well, so we have to intercept attempts to change them + through the items, and change them into something that will work. + Unfortunately, this won't work if this property is set through the base class, since + the property is not declared as virtual. + + + + + Enable tri-state checkbox. + + .NET's Checked property was not built to handle tri-state checkboxes, + and will return True for both Checked and Indeterminate states. + + + + Gets if this item has any decorations set for it. + + + + + Gets or sets the decoration that will be drawn over this item + + Setting this replaces all other decorations + + + + Gets the collection of decorations that will be drawn over this item + + + + + Gets whether or not this row can be selected and activated + + + + + Gets whether any cell on this item is showing a hyperlink + + + + + Get or set the image that should be shown against this item + + This can be an Image, a string or an int. A string or an int will + be used as an index into the small image list. + + + + Gets or sets the the model object that is source of the data for this list item. + + + + + Gets or sets the color that will be used for this row's background when it is selected and + the control is focused. + + + To work reliably, this property must be set during a FormatRow event. + + If this is not set, the normal selection BackColor will be used. + + + + + + Gets or sets the color that will be used for this row's foreground when it is selected and + the control is focused. + + + To work reliably, this property must be set during a FormatRow event. + + If this is not set, the normal selection ForeColor will be used. + + + + + + Return the sub item at the given index + + Index of the subitem to be returned + An OLVListSubItem + + + + Return bounds of the given subitem + + This correctly calculates the bounds even for column 0. + + + + A ListViewSubItem that knows which image should be drawn against it. + + + + + Create a OLVListSubItem + + + + + Create a OLVListSubItem that shows the given string and image + + + + + Gets or sets how many pixels will be left blank around this cell + + This setting only takes effect when the control is owner drawn. + + + + Gets or sets how this cell will be vertically aligned + + This setting only takes effect when the control is owner drawn. + + + + Gets or sets the model value is being displayed by this subitem. + + + + + Gets if this subitem has any decorations set for it. + + + + + Gets or sets the decoration that will be drawn over this item + + Setting this replaces all other decorations + + + + Gets the collection of decorations that will be drawn over this item + + + + + Get or set the image that should be shown against this item + + This can be an Image, a string or an int. A string or an int will + be used as an index into the small image list. + + + + Gets or sets the url that should be invoked when this subitem is clicked + + + + + Gets or sets whether this cell is selected + + + + + Return the state of the animatation of the image on this subitem. + Null means there is either no image, or it is not an animation + + + + + An indication of where a hit was within ObjectListView cell + + + + + Nowhere + + + + + On the text + + + + + On the image + + + + + On the checkbox + + + + + On the expand button (TreeListView) + + + + + in a button (cell must have ButtonRenderer) + + + + + in the cell but not in any more specific location + + + + + UserDefined location1 (used for custom renderers) + + + + + On the expand/collapse widget of the group + + + + + Somewhere on a group + + + + + Somewhere in a column header + + + + + Somewhere in a column header checkbox + + + + + Somewhere in a header divider + + + + + A collection of ListViewHitTest constants + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Instances of this class encapsulate the information gathered during a OlvHitTest() + operation. + + Custom renderers can use HitTestLocation.UserDefined and the UserData + object to store more specific locations for use during event handlers. + + + + Create a OlvListViewHitTestInfo + + + + + Create a OlvListViewHitTestInfo when the header was hit + + + + + Where is the hit location? + + + + + Where is the hit location? + + + + + Which group was hit? + + + + + Custom renderers can use this information to supply more details about the hit location + + + + + Gets the item that was hit + + + + + Gets the subitem that was hit + + + + + Gets the part of the subitem that was hit + + + + + Gets the ObjectListView that was tested + + + + + Gets the model object that was hit + + + + + Gets the index of the row under the hit point or -1 + + + + + Gets the index of the column under the hit point + + + + + Gets the index of the header divider + + + + + Gets the column that was hit + + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + A TreeDataSourceAdapter knows how to build a tree structure from a binding list. + + To build a tree + + + + Create a data source adaptor that knows how to build a tree structure + + + + + + Gets or sets the name of the property/column that uniquely identifies each row. + + + + The value contained by this column must be unique across all rows + in the data source. Odd and unpredictable things will happen if two + rows have the same id. + + Null cannot be a valid key value. + + + + + Gets or sets the name of the property/column that contains the key of + the parent of a row. + + + + The test condition for deciding if one row is the parent of another is functionally + equivilent to this: + + Object.Equals(candidateParentRow[this.KeyAspectName], row[this.ParentKeyAspectName]) + + + Unlike key value, parent keys can be null but a null parent key can only be used + to identify root objects. + + + + + Gets or sets the value that identifies a row as a root object. + When the ParentKey of a row equals the RootKeyValue, that row will + be treated as root of the TreeListView. + + + + The test condition for deciding a root object is functionally + equivilent to this: + + Object.Equals(candidateRow[this.ParentKeyAspectName], this.RootKeyValue) + + + The RootKeyValue can be null. + + + + + Gets or sets whether or not the key columns (id and parent id) should + be shown to the user. + + This must be set before the DataSource is set. It has no effect + afterwards. + + + + Gets the DataTreeListView that is being managed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A IVirtualGroups is the interface that a virtual list must implement to support virtual groups + + + + + Return the list of groups that should be shown according to the given parameters + + + + + + + Return the index of the item that appears at the given position within the given group. + + + + + + + + Return the index of the group to which the given item belongs + + + + + + + Return the index at which the given item is shown in the given group + + + + + + + + A hint that the given range of items are going to be required + + + + + + + + + This is a safe, do nothing implementation of a grouping strategy + + + + + Return the list of groups that should be shown according to the given parameters + + + + + + + Return the index of the item that appears at the given position within the given group. + + + + + + + + Return the index of the group to which the given item belongs + + + + + + + Return the index at which the given item is shown in the given group + + + + + + + + A hint that the given range of items are going to be required + + + + + + + + + Provides grouping functionality to a FastObjectListView + + + + + Create groups for FastListView + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is the COM interface that a ListView must be given in order for groups in virtual lists to work. + + + This interface is NOT documented by MS. It was found on Greg Chapell's site. This means that there is + no guarantee that it will work on future versions of Windows, nor continue to work on current ones. + + + + + Not sure what this does + + + + + + + Not sure what this does + + + + + + + Get the index of the item that occurs at the n'th position of the indicated group. + + Index of the group + Index within the group + Index of the item within the whole list + + + + Get the index of the group to which the given item belongs + + Index of the item within the whole list + Which occurences of the item is wanted + Index of the group + + + + Get the number of groups that contain the given item + + Index of the item within the whole list + How many groups does it occur within + + + + A hint to prepare any cache for the given range of requests + + + + + + + A default implementation of the IOwnerDataCallback interface + + + + + A VirtualListDataSource is a complete manner to provide functionality to a virtual list. + An object that implements this interface provides a VirtualObjectListView with all the + information it needs to be fully functional. + + Implementors must provide functioning implementations of at least GetObjectCount() + and GetNthObject(), otherwise nothing will appear in the list. + + + + Return the object that should be displayed at the n'th row. + + The index of the row whose object is to be returned. + The model object at the n'th row, or null if the fetching was unsuccessful. + + + + Return the number of rows that should be visible in the virtual list + + The number of rows the list view should have. + + + + Get the index of the row that is showing the given model object + + The model object sought + The index of the row showing the model, or -1 if the object could not be found. + + + + The ListView is about to request the given range of items. Do + whatever caching seems appropriate. + + + + + + + Find the first row that "matches" the given text in the given range. + + The text typed by the user + Start searching from this index. This may be greater than the 'to' parameter, + in which case the search should descend + Do not search beyond this index. This may be less than the 'from' parameter. + The column that should be considered when looking for a match. + Return the index of row that was matched, or -1 if no match was found + + + + Sort the model objects in the data source. + + + + + + + Add the given collection of model objects to this control. + + A collection of model objects + + + + Insert the given collection of model objects to this control at the position + + Index where the collection will be added + A collection of model objects + + + + Remove all of the given objects from the control + + Collection of objects to be removed + + + + Set the collection of objects that this control will show. + + + + + + Update/replace the nth object with the given object + + + + + + + This extension allow virtual lists to filter their contents + + + + + All subsequent retrievals on this data source should be filtered + through the given filters. null means no filtering of that kind. + + + + + + + A do-nothing implementation of the VirtualListDataSource interface. + + + + + Creates an AbstractVirtualListDataSource + + + + + + The list view that this data source is giving information to. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Update/replace the nth object with the given object + + + + + + + This is a useful default implementation of SearchText method, intended to be called + by implementors of IVirtualListDataSource. + + + + + + + + + + + + + + + + + + This class mimics the behavior of VirtualObjectListView v1.x. + + + + + Creates a VirtualListVersion1DataSource + + + + + + How will the n'th object of the data source be fetched? + + + + + + + + + + + + + + + + + + + + + + Designer for and its subclasses. + + + + This designer removes properties and events that are available on ListView but that are not + useful on ObjectListView. + + + We can't inherit from System.Windows.Forms.Design.ListViewDesigner, since it is marked internal. + So, this class uses reflection to create a ListViewDesigner and then forwards messages to that designer. + + + + + + Initializes the designer with the specified component. + + The to associate the designer with. This component must always be an instance of, or derive from, . + + + + Initializes a newly created component. + + A name/value dictionary of default values to apply to properties. May be null if no default values are specified. + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Removes the duplicate DockingActionList added by this designer to the . + + + adds an internal DockingActionList : 'Dock/Undock in Parent Container'. + But the default designer has already added that action list. So we need to remove one. + + + + + Adjusts the set of properties the component exposes through a . + + An containing the properties for the class of the component. + + + + Allows a designer to add to the set of events that it exposes through a . + + The events for the class of the component. + + + + Allows a designer to change or remove items from the set of attributes that it exposes through a . + + The attributes for the class of the component. + + + + Allows a designer to change or remove items from the set of events that it exposes through a . + + The events for the class of the component. + + + + Gets the design-time action lists supported by the component associated with the designer. + + + The design-time action lists supported by the component associated with the designer. + + + + + Gets the collection of components associated with the component managed by the designer. + + + The components that are associated with the component managed by the designer. + + + + + Indicates whether a mouse click at the specified point should be handled by the control. + + + true if a click at the specified point is to be handled by the control; otherwise, false. + + A indicating the position at which the mouse was clicked, in screen coordinates. + + + + Processes Windows messages and optionally routes them to the control. + + The to process. + + + + This class modifies a ListViewActionList, by removing the "Edit Items" and "Edit Groups" actions. + + + + That class is internal, so we cannot simply subclass it, which would be simplier. + + + Action lists use reflection to determine if that action can be executed, so we not + only have to modify the returned collection of actions, but we have to implement + the properties and commands that the returned actions use. + + + + + This class works in conjunction with the OLVColumns property to allow OLVColumns + to be added to the ObjectListView. + + + + + Create a OLVColumnCollectionEditor + + + + + + What type of object does this editor create? + + + + + + Edit a given value + + + + + + + + + What text should be shown in the list for the given object? + + + + + + + Control how the overlay is presented in the IDE + + + + + An OLVColumn knows which aspect of an object it should present. + + + The column knows how to: + + extract its aspect from the row object + convert an aspect to a string + calculate the image for the row object + extract a group "key" from the row object + convert a group "key" into a title for the group + + For sorting to work correctly, aspects from the same column + must be of the same type, that is, the same aspect cannot sometimes + return strings and other times integers. + + + + + How should the button be sized? + + + + + 每个单元格都将具有相同大小的按钮,如ButtonSize属性所示 + + + + + 每个单元格都将绘制一个填充单元格的按钮,该按钮由ButtonPadding插入 + + + + + 将调整每个按钮的大小以包含文本内容 + + + + + Create an OLVColumn + + + + + Initialize a column to have the given title, and show the given aspect + + The title of the column + The aspect to be shown in the column + + + + 此委托将用于提取要在此列中显示的值。 + + + 如果设置, AspectName属性将被忽略. + + + + + 请记住,如果当前列的AspectGetter是内部生成的,依旧可以随意重新生成 + + + + + 应调用以获取要在此列中显示的值的属性或方法的名称。 + 仅当未指定ValueGetterDelegate时才使用此选项。 + + 此名称可以用来表示对属性或无参数方法的链引用。 + "DateOfBirth" + "Owner.HomeAddress.Postcode" + + + + 此委托将用于将编辑后的值放回模型对象中。 + + + 如果IsEdable==false,则不执行任何操作。 + + + + + 用于将要在此列中显示的Aspect转换为字符串的委托。 + + 如果设置了此值,AspectToStringFormat将被忽略。 + + + + 将Aspect转换成字符串的格式文本 + + + 此字符串作为第一个参数传递给String.Format()方法。 + 仅当尚未设置AspectToStringConverter时才使用此选项。 + "{0:C}" 表示转换数字到货币 + + + + 获取或设置单元格编辑器是否应使用自动完成 + + + + + 获取或设置单元格编辑器是否应使用自动完成 + + + + + 获取用户操作是否可以隐藏此列 + + 这会同时考虑Hideable属性以及此列是否为列表视图的主列(列0)。 + + + + 编辑单元格时,是否应该使用整个单元格(减去复选框或图像使用的任何空间)? + + + 如果控件不是所有者绘制(owner drawn)的,则始终将其视为true。 + + 如果该值为False(默认值)并且控件是所有者绘制(owner drawn)的, + ObjectListView将尝试计算单元格实际内容的宽度,然后将编辑控件的大小调整为恰到好处的宽度。 + 如果为真,则无论单元格的内容如何,都将使用单元格的整个宽度。 + + 如果未在列上设置此属性,则将使用控件中的值 + + 仅当控件处于详细信息视图中时才使用此值。 + 无论此设置如何,开发人员都可以通过侦听CellEditStarting事件来指定编辑控件的确切大小。 + + + + + 获取编辑此列中的单元格时是否应使用整个单元格 + + 这将计算当前有效值,该值可能与CellEditUseWholeCell不同 + + + + 获取或设置此列中此单元格周围将留空的像素数 + + 此设置仅在控件为所有者绘制(owner drawn)时生效。 + + + + 获取或设置此列中的单元格垂直对齐的方式。 + + + + 此设置仅在控件为所有者绘制(owner drawn)时生效。 + + + 如果未设置,将使用控件本身的值。 + + + + + + 获取或设置此列是否显示复选框。 + + + 在第0列上设置此选项不起作用。列0复选框由ObjectListView本身的CheckBox属性控制。 + + + + + Gets or sets the clustering strategy used for this column. + + + + The clustering strategy is used to build a Filtering menu for this item. + If this is null, a useful default will be chosen. + + + To disable filtering on this colummn, set UseFiltering to false. + + + Cluster strategies belong to a particular column. The same instance + cannot be shared between multiple columns. + + + + + + 获取或设置是否启用此列中的按钮(如果此列是按钮),即使该行本身被禁用 + + + + + 此列是否应该调整大小以填充列表视图中的空闲空间? + + + + 如果希望两列(或更多列)平均共享可用空间,请将此属性设置为True。 + 如果希望此列具有更大或更小的可用空间份额,则必须显式设置FreeSpaceProportion属性。 + + + 空间填充列仍然由MinimumWidth和MaximumWidth属性控制。 + + /// + + + + 控件中未占用的水平空间应分配给此列的比例是多少? + + + + 在某些情况下,如果列(通常是最右边的列)可以随着列表视图的扩展而扩展, + 这样就可以在不必水平滚动的情况下尽可能多地看到列(您永远不应该让用户必须水平滚动任何内容!)。 + + + 调整空间填充列的大小以占据列表视图的未占用宽度的一部分(未占用宽度是一旦所有非填充列都被赋予其空间后剩余的宽度)。 + 此属性指示将分配给此列的未占用空间的相对比例。此属性的实际值并不重要,重要的是它的值相对于其他列中的值。 + 例子: + + + 如果只有一个空间填充列,则无论FreeSpaceProportion中的值如何,都将为其提供所有可用空间。 + + + 如果有两个或多个空间填充列,并且它们的FreeSpaceProportion值都相同,则它们将平等地共享空闲空间。 + + + 如果FreeSpaceProportion有三个值为3、2和1的空间填充列,则第一列将占用一半的空闲空间,第二列将占用三分之一的空闲空间,第三列将占用六分之一的空闲空间。 + + + + + + + + 获取或设置在单击此列的标题时是否对此列值重新生成组。 + + + 此设置仅在ShowGroups为true时使用。 + + 如果为False,则单击标题不会重建组。 + + 如果为false,则仍会激发BeforeCreatingGroups事件,这些事件可用于根据具体情况进行分组或提供反馈。 + + + + + 当组已创建但尚未成为真正的ListViewGroup时,将调用此委托。用户可以利用此机会填写有关该组的许多其他详细信息。 + + + + + 调用此委托以获取对象,该对象是给定行所属的组的键。 + + + + + 调用此委托将组键转换为该组的标题。 + + + + + 当列表视图按此列分组并且组标题有项目计数时,应如何设置标签的格式 + + + 给定的格式字符串支持以下两个占位符: + + {0} - 原组标题 + {1} - 该组项目数 + + + "{0} [{1} items]" + + + + 获取this.GroupWithItemCountFormat或默认值 + + + 如果未设置GroupWithItemCountFormat,则如果可能,将从ObjectListView中获取其值。 + + + + + 当列表视图按此列分组并且组标题有项目计数时,如果组中只有一个项目,标签应该如何格式化 + + + 给定的格式字符串支持以下两个占位符: + + {0} - 原组标题 + {1} - 该组项目数 (始终为1) + + + "{0} [{1} item]" + + + + 获取this.GroupWithItemCountSingularFormat或默认值 + + + 如果未设置此值,将使用列表视图中的值 + + + + + 获取是否应在列标题中使用筛选器指示符绘制此列。 + + + + + 获取或设置将用于所有者绘制标题列的委托。 + + + + + 获取或设置将用于绘制此列标题的样式 + + 仅当拥有的ObjectListView将HeaderUsesThemes设置为False时才使用此选项。 + + + + 获取或设置绘制此列的标题时使用的字体 + + 您可能应该使用HeaderFormatStyle而不是此属性 + 这仅在HeaderUsesThemes为false时使用。 + + + + 获取或设置绘制此列标题文本的颜色 + + 您可能应该使用HeaderFormatStyle而不是此属性 + 这仅在HeaderUsesThemes为false时使用。 + + + + 获取或设置将在列标题中显示的图像键 + + 这仅在HeaderUsesThemes为false时使用 + + + + 获取或设置Header文本的对齐方式 + + + + + 返回Header的文本对齐方式。这将是显式设置的,或者将遵循列中文本的对齐方式 + + + + + 获取转换为StringAlignment的Header对齐方式 + + + + + 获取此列的标题中是否有图像 + + + + + 获取或设置此Header是否在Header中放置复选框 + + + + + 获取或设置此Header是否在Header中放置三态复选框 + + + + + 获取或设置此列Header中复选框的选中状态 + + + + + 获取或设置选中/取消选中标题复选框的值是否会导致将此列中所有单元格的复选框设置为相同的选中/取消选中。 + 默认值为true. + + + + 当单元格的复选框状态改变时,该函数不会与自动更新标题的功能相反。 + + + 此属性在TreeListView上的行为最好描述为未定义,应该避免。 + + + 此操作(检查/取消检查所有行)的性能为O(n),其中n是行数。它将在大型虚拟列表上工作,但可能需要一些时间。 + + + + + + 获取或设置是否禁用标题中的复选框 + + + 单击禁用的复选框不会更改其值,但会引发HeaderCheckBoxChanging事件,使程序员有机会执行适当的操作。 + + + + 获取或设置用户是否可以隐藏此列。 + + + 无论此设置如何,列0永远不能隐藏。 + + + + + 获取或设置此列中的文本值是否类似于超链接 + + + + + 这是属性的名称,将调用该属性来获取应该在此列中显示的图像的图像选择器。 + 它可以返回int、String、Image或NULL。 + + + 如果ImageGetter不为空,则忽略此项。 + 该属性可以使用以下返回值来标识图像: + + null或-1 --表示无图像 + int -- Int值将用作图像列表的索引 + String -- 字符串值将用作图像列表的关键字 + Image -- 将直接绘制图像(仅在OwnerDrawn模式下) + + + + + + 调用此委托以获取应该在此列中显示的图像的图像选择器。它可以返回int、String、Image或NULL。 + + + 该属性可以使用以下返回值来标识图像: + + null或-1 --表示无图像 + int -- Int值将用作图像列表的索引 + String -- 字符串值将用作图像列表的关键字 + Image -- 将直接绘制图像(仅在OwnerDrawn模式下) + + + + + + 获取或设置此列是否在其单元格中绘制按钮 + + + + 如果将其设置为true,则列的呈现器将成为ColumnButtonRenender(如果尚未成为ColumnButtonRenender)。如果设置为False,则将丢弃以前的任何按钮渲染器 + + 如果单元格的Aspect为Null或空,则不会在单元格中绘制任何内容。 + + + + Create a ColumnButtonRenderer to draw buttons in this column + + + + + + Fill in details to our ColumnButtonRenderer based on the properties set on the column + + + + + 获取或设置按钮可以占用的最大宽度。 + -1 表示不限制最大宽度 + + 仅当SizingMode为TextBound时才生效 + + + + 获取或设置当SizingMode为TextBound时单元格周围的额外空间 + + + + + 获取或设置SizingMode为FixedBound时按钮的大小 + + 如果未设置,将使用单元格的边界 + + + + 获取或设置此列显示按钮时如何调整每个按钮的大小 + + + + + 此列中显示的值是否可以编辑 + + 此默认值为false,因为控制列表视图的可编辑性的主要方法是列表视图本身。 + 列表视图可编辑后,所有列也可编辑,除非程序员显式将它们标记为不可编辑 + + + + 是否是固定宽度 + + + + + 获取/设置当视图切换到平铺视图(TileView)时是否使用此列。 + + 无论此设置如何,第0列始终包含在平铺视图中。平铺视图不能很好地处理许多“列”信息。两三个最好。 + + + + 获取或设置Header的文本是否应垂直呈现。 + + + 如果为True,最好将ToolTipText设置为列的名称,以便于阅读。 + 垂直Header仅为文本。他们不会画出图像。 + + + + + 该列是否可见 + + 更改此值后,必须调用RebuildColumns()才能使更改生效。 + + + + 此列最后一次定位在详细信息视图列中的位置是什么 + + DisplayIndex是易失性的。一旦从控件中移除列,就无法发现它在显示顺序中的位置。 + 即使列不在列表视图的活动列中,此属性也会保护该信息。 + + + + 列最大宽度 + + -1表示不限制. 将该值指定为与MinimumWidth相同的值,以生成固定宽度的列。 + + + + 列最小宽度 + + -1表示不限制. 将该值指定为与MaximumWidth相同的值,以生成固定宽度的列。 + + + + Get/set the renderer that will be invoked when a cell needs to be redrawn + + + + + This delegate is called when a cell needs to be drawn in OwnerDrawn mode. + + This method is kept primarily for backwards compatibility. + New code should implement an IRenderer, though this property will be maintained. + + + + 获取或设置执行文本搜索时是否使用此列的单元格中的文本。 + + + + 如果为False,则文本筛选器在查找匹配项时不会尝试搜索此列单元格。 + + + + + + 获取或设置一个委托,该委托将返回在使用基于文本的筛选器时应考虑进行文本匹配的文本值数组。 + + + + + 获取或设置此列的标题是否将包括该列的文本。 + + + + 如果为false,则列标题中呈现的唯一内容将是来自 . + + 只有在以下情况下才会考虑此设置: ObjectListView中的 为false . + + + + + 获取或设置当用户单击此列的标题时是否重新排序列表内容。 + + + + 如果为False,则单击标题将不会对列表进行排序,但也不会提供有关列表未排序原因的任何反馈。提供适当的反馈是程序员的责任。 + + 如果为false,则仍会触发BeforeSorting事件,该事件可用于根据具体情况进行排序或提供反馈。 + + + + + 获取或设置列内容的水平对齐方式。 + + NET将不允许列0具有除左对齐以外的任何对齐方式。我们不能更改列表视图的基本行为,但当所有者绘制时,列0现在可以有其他对齐方式。 + + + + 获取列文本对齐的StringAlignment等效项 + + + + + 当鼠标悬停在该列的标题上时,应该显示什么字符串? + + 如果拥有的ObjectListView上安装了HeaderToolTipGetter,则将忽略此值。 + + + + 此列是否应该有一个三态复选框 + + + 如果为True,用户可以选择第三种状态(通常是不确定的)。 + + + + + 按列纵横比的首字母对对象进行分组 + + + 一种常见的模式是按该组的值的首字母对列进行分组。aspect必须是字符串(显然)。 + + + + + 获取或设置此列是否应为用户可筛选的列 + + + + + Gets or sets a filter that will only include models where the model's value + for this column is one of the values in ValuesChosenForFiltering + + + + + Gets or sets the values that will be used to generate a filter for this + column. For a model to be included by the generated filter, its value for this column + must be in this list. If the list is null or empty, this column will + not be used for filtering. + + + + + 列宽 + + + + + 获取或设置此列单元格的内容是否应自动换行 + + 如果此列使用自定义IRenender(即,不是从BaseRenender派生的),则该呈现器负责实现自动换行。 + + + + For a given group value, return the string that should be used as the groups title. + + The group key that is being converted to a title + string + + + + Get the checkedness of the given object for this column + + The row object that is being displayed + The checkedness of the object + + + + Put the checkedness of the given object for this column + + The row object that is being displayed + + The checkedness of the object + + + + For a given row object, extract the value indicated by the AspectName property of this column. + + The row object that is being displayed + An object, which is the aspect named by AspectName + + + + For a given row object, return the object that is the key of the group that this row belongs to. + + The row object that is being displayed + Group key object + + + + For a given row object, return the image selector of the image that should displayed in this column. + + The row object that is being displayed + int or string or Image. int or string will be used as index into image list. null or -1 means no image + + + + Return the image that represents the check box for the given model + + + + + + + For a given row object, return the strings that will be searched when trying to filter by string. + + + This will normally be the simple GetStringValue result, but if this column is non-textual (e.g. image) + you might want to install a SearchValueGetter delegate which can return something that could be used + for text filtering. + + + The array of texts to be searched. If this returns null, search will not match that object. + + + + For a given row object, return the string representation of the value shown in this column. + + + For aspects that are string (e.g. aPerson.Name), the aspect and its string representation are the same. + For non-strings (e.g. aPerson.DateOfBirth), the string representation is very different. + + + + + + + For a given row object, return the object that is to be displayed in this column. + + The row object that is being displayed + An object, which is the aspect to be displayed + + + + Update the given model object with the given value using the column's + AspectName. + + The model object to be updated + The value to be put into the model + + + + Update the given model object with the given value + + The model object to be updated + The value to be put into the model + + + + Convert the aspect object to its string representation. + + + If the column has been given a AspectToStringConverter, that will be used to do + the conversion, otherwise just use ToString(). + The returned value will not be null. Nulls are always converted + to empty strings. + + The value of the aspect that should be displayed + A string representation of the aspect + + + + Convert the aspect object to its string representation. + + + If the column has been given a AspectToStringConverter, that will be used to do + the conversion, otherwise just use ToString(). + The returned value will not be null. Nulls are always converted + to empty strings. + + + The value of the aspect that should be displayed + A string representation of the aspect + + + + Decide the clustering strategy that will be used for this column + + + + + + Gets or sets the type of data shown in this column. + + If this is not set, it will try to get the type + by looking through the rows of the listview. + + + + This event is triggered when the visibility of this column changes. + + + + + Tell the world when visibility of a column changes. + + + + + Create groupies + This is an untyped version to help with Generator and OLVColumn attributes + + + + + + + Create groupies + + + + + + + + Create groupies + + + + + + + + + Create groupies + + + + + + + + + + Create groupies. + Install delegates that will group the columns aspects into progressive partitions. + If an aspect is less than value[n], it will be grouped with description[n]. + If an aspect has a value greater than the last element in "values", it will be grouped + with the last element in "descriptions". + + Array of values. Values must be able to be + compared to the aspect (using IComparable) + The description for the matching value. The last element is the default description. + If there are n values, there must be n+1 descriptions. + + this.salaryColumn.MakeGroupies( + new UInt32[] { 20000, 100000 }, + new string[] { "Lowly worker", "Middle management", "Rarified elevation"}); + + + + + + + + + Create groupies based on exact value matches. + + + Install delegates that will group rows into partitions based on equality of this columns aspects. + If an aspect is equal to value[n], it will be grouped with description[n]. + If an aspect is not equal to any value, it will be grouped with "[other]". + + Array of values. Values must be able to be + equated to the aspect + The description for the matching value. + + this.marriedColumn.MakeEqualGroupies( + new MaritalStatus[] { MaritalStatus.Single, MaritalStatus.Married, MaritalStatus.Divorced, MaritalStatus.Partnered }, + new string[] { "Looking", "Content", "Looking again", "Mostly content" }); + + + + + + + + + An adorment is the common base for overlays and decorations. + + + + + Gets or sets the corner of the adornment that will be positioned at the reference corner + + + + + Gets or sets location within the reference rectange where the adornment will be drawn + + This is a simplied interface to ReferenceCorner and AdornmentCorner + + + + Gets or sets the offset by which the position of the adornment will be adjusted + + + + + Gets or sets the point of the reference rectangle to which the adornment will be aligned. + + + + + Gets or sets the degree of rotation by which the adornment will be transformed. + The centre of rotation will be the center point of the adornment. + + + + + Gets or sets the transparency of the overlay. + 0 is completely transparent, 255 is completely opaque. + + + + + Calculate the location of rectangle of the given size, + so that it's indicated corner would be at the given point. + + The point + + Which corner will be positioned at the reference point + + CalculateAlignedPosition(new Point(50, 100), new Size(10, 20), System.Drawing.ContentAlignment.TopLeft) -> Point(50, 100) + CalculateAlignedPosition(new Point(50, 100), new Size(10, 20), System.Drawing.ContentAlignment.MiddleCenter) -> Point(45, 90) + CalculateAlignedPosition(new Point(50, 100), new Size(10, 20), System.Drawing.ContentAlignment.BottomRight) -> Point(40, 80) + + + + Calculate a rectangle that has the given size which is positioned so that + its alignment point is at the reference location of the given rect. + + + + + + + + Create a rectangle of the given size which is positioned so that + its indicated corner is at the indicated corner of the reference rect. + + + + + + + + + Creates a rectangle so that its bottom left is at the centre of the reference: + corner=BottomLeft, referenceCorner=MiddleCenter + This is a powerful concept that takes some getting used to, but is + very neat once you understand it. + + + + + Return the point at the indicated corner of the given rectangle (it doesn't + have to be a corner, but a named location) + + The reference rectangle + Which point of the rectangle should be returned? + A point + CalculateReferenceLocation(new Rectangle(0, 0, 50, 100), System.Drawing.ContentAlignment.TopLeft) -> Point(0, 0) + CalculateReferenceLocation(new Rectangle(0, 0, 50, 100), System.Drawing.ContentAlignment.MiddleCenter) -> Point(25, 50) + CalculateReferenceLocation(new Rectangle(0, 0, 50, 100), System.Drawing.ContentAlignment.BottomRight) -> Point(50, 100) + + + + Given the item and the subitem, calculate its bounds. + + + + + + + + Apply any specified rotation to the Graphic content. + + The Graphics to be transformed + The rotation will be around the centre of this rect + + + + Reverse the rotation created by ApplyRotation() + + + + + + An overlay that will draw an image over the top of the ObjectListView + + + + + Gets or sets the image that will be drawn + + + + + Gets or sets if the image will be shrunk to fit with its horizontal bounds + + + + + Draw the image in its specified location + + The Graphics used for drawing + The bounds of the rendering + + + + Draw the image in its specified location + + The image to be drawn + The Graphics used for drawing + The bounds of the rendering + How transparent should the image be (0 is completely transparent, 255 is opaque) + + + + Draw the image in its specified location + + The image to be drawn + The Graphics used for drawing + The bounds of the rendering + How big should the image be? + How transparent should the image be (0 is completely transparent, 255 is opaque) + + + + Draw the image in its specified location, scaled so that it is not wider + than the given rectangle. Height is scaled proportional to the width. + + The image to be drawn + The Graphics used for drawing + The bounds of the rendering + How transparent should the image be (0 is completely transparent, 255 is opaque) + + + + Utility to draw a bitmap transparenly. + + + + + + + + + An adornment that will draw text + + + + + Gets or sets the background color of the text + Set this to Color.Empty to not draw a background + + + + + Gets the brush that will be used to paint the text + + + + + Gets or sets the color of the border around the billboard. + Set this to Color.Empty to remove the border + + + + + Gets the brush that will be used to paint the text + + + + + Gets or sets the width of the border around the text + + + + + How rounded should the corners of the border be? 0 means no rounding. + + If this value is too large, the edges of the border will appear odd. + + + + Gets or sets the font that will be used to draw the text + + + + + Gets the font that will be used to draw the text or a reasonable default + + + + + Does this text have a background? + + + + + Does this overlay have a border? + + + + + Gets or sets the maximum width of the text. Text longer than this will wrap. + 0 means no maximum. + + + + + Gets or sets the formatting that should be used on the text + + + + + Gets or sets the text that will be drawn + + + + + Gets the brush that will be used to paint the text + + + + + Gets or sets the color of the text + + + + + Gets or sets whether the text will wrap when it exceeds its bounds + + + + + Draw our text with our stored configuration in relation to the given + reference rectangle + + The Graphics used for drawing + The reference rectangle in relation to which the text will be drawn + + + + Draw the given text with our stored configuration + + The Graphics used for drawing + The reference rectangle in relation to which the text will be drawn + The text to draw + How opaque should be text be + + + + Draw the text with a border + + The Graphics used for drawing + The bounds within which the text should be drawn + The text to draw + How opaque should be text be + + + + Return the rectangle that will be the precise bounds of the displayed text + + + + + The bounds of the text + + + + Return a GraphicPath that is a round cornered rectangle + + The rectangle + The diameter of the corners + A round cornered rectagle path + If I could rely on people using C# 3.0+, this should be + an extension method of GraphicsPath. + + + + A decoration is an overlay that draws itself in relation to a given row or cell. + Decorations scroll when the listview scrolls. + + + + + Gets or sets the row that is to be decorated + + + + + Gets or sets the subitem that is to be decorated + + + + + An AbstractDecoration is a safe do-nothing implementation of the IDecoration interface + + + + + Gets or sets the row that is to be decorated + + + + + Gets or sets the subitem that is to be decorated + + + + + Gets the bounds of the decorations row + + + + + Get the bounds of the decorations cell + + + + + Draw the decoration + + + + + + + + This decoration draws a slight tint over a column of the + owning listview. If no column is explicitly set, the selected + column in the listview will be used. + The selected column is normally the sort column, but does not have to be. + + + + + Create a TintedColumnDecoration + + + + + Create a TintedColumnDecoration + + + + + + Gets or sets the column that will be tinted + + + + + Gets or sets the color that will be 'tinted' over the selected column + + + + + Draw a slight colouring over our tinted column + + + This overlay only works when: + - the list is in Details view + - there is at least one row + - there is a selected column (or a specified tint column) + + + + + + + + This decoration draws an optionally filled border around a rectangle. + Subclasses must override CalculateBounds(). + + + + + Create a BorderDecoration + + + + + Create a BorderDecoration + + The pen used to draw the border + + + + Create a BorderDecoration + + The pen used to draw the border + The brush used to fill the rectangle + + + + Gets or sets the pen that will be used to draw the border + + + + + Gets or sets the padding that will be added to the bounds of the item + before drawing the border and fill. + + + + + How rounded should the corners of the border be? 0 means no rounding. + + If this value is too large, the edges of the border will appear odd. + + + + Gets or sets the brush that will be used to fill the border + + This value is ignored when using gradient brush + + + + Gets or sets the color that will be used as the start of a gradient fill. + + This and FillGradientTo must be given value to show a gradient + + + + Gets or sets the color that will be used as the end of a gradient fill. + + This and FillGradientFrom must be given value to show a gradient + + + + Gets or sets the fill mode that will be used for the gradient. + + + + + Draw a filled border + + + + + + + + Subclasses should override this to say where the border should be drawn + + + + + + Do the actual work of drawing the filled border + + + + + + + Create a GraphicsPath that represents a round cornered rectangle. + + + If this is 0 or less, the rectangle will not be rounded. + + + + + Instances of this class draw a border around the decorated row + + + + + Gets or sets the index of the left most column to be used for the border + + + + + Gets or sets the index of the right most column to be used for the border + + + + + Calculate the boundaries of the border + + + + + + Instances of this class draw a border around the decorated subitem. + + + + + Calculate the boundaries of the border + + + + + + This decoration puts a border around the cell being edited and + optionally "lightboxes" the cell (makes the rest of the control dark). + + + + + Create a EditingCellBorderDecoration + + + + + Create a EditingCellBorderDecoration + + Should the decoration use a lighbox display style? + + + + Gets or set whether the decoration should make the rest of + the control dark when a cell is being edited + + If this is true, FillBrush is used to overpaint + the control. + + + + Draw the decoration + + + + + + + + This decoration causes everything *except* the row under the mouse to be overpainted + with a tint, making the row under the mouse stand out in comparison. + The darker and more opaque the fill color, the more obvious the + decorated row becomes. + + + + + Create a LightBoxDecoration + + + + + Draw a tint over everything in the ObjectListView except the + row under the mouse. + + + + + + + + Instances of this class put an Image over the row/cell that it is decorating + + + + + Create an image decoration + + + + + Create an image decoration + + + + + + Create an image decoration + + + + + + + Create an image decoration + + + + + + + Create an image decoration + + + + + + + + Gets or sets the item being decorated + + + + + Gets or sets the sub item being decorated + + + + + Draw this decoration + + The ObjectListView being decorated + The Graphics used for drawing + The bounds of the rendering + + + + Instances of this class draw some text over the row/cell that they are decorating + + + + + Create a TextDecoration + + + + + Create a TextDecoration + + + + + + Create a TextDecoration + + + + + + + Create a TextDecoration + + + + + + + Create a TextDecoration + + + + + + + + Gets or sets the item being decorated + + + + + Gets or sets the sub item being decorated + + + + + Draw this decoration + + The ObjectListView being decorated + The Graphics used for drawing + The bounds of the rendering + + + + The interface for an object which can draw itself over the top of + an ObjectListView. + + + + + Draw this overlay + + The ObjectListView that is being overlaid + The Graphics onto the given OLV + The content area of the OLV + + + + An interface for an overlay that supports variable levels of transparency + + + + + Gets or sets the transparency of the overlay. + 0 is completely transparent, 255 is completely opaque. + + + + + A null implementation of the IOverlay interface + + + + + Draw this overlay + + The ObjectListView that is being overlaid + The Graphics onto the given OLV + The content area of the OLV + + + + How transparent should this overlay be? + + + + + An overlay that will draw an image over the top of the ObjectListView + + + + + Create an ImageOverlay + + + + + Gets or sets the horizontal inset by which the position of the overlay will be adjusted + + + + + Gets or sets the vertical inset by which the position of the overlay will be adjusted + + + + + Draw this overlay + + The ObjectListView being decorated + The Graphics used for drawing + The bounds of the rendering + + + + An overlay that will draw text over the top of the ObjectListView + + + + + Create a TextOverlay + + + + + Gets or sets the horizontal inset by which the position of the overlay will be adjusted + + + + + Gets or sets the vertical inset by which the position of the overlay will be adjusted + + + + + Gets or sets whether the border will be drawn with rounded corners + + + + + Draw this overlay + + The ObjectListView being decorated + The Graphics used for drawing + The bounds of the rendering + + + + A Billboard overlay is a TextOverlay positioned at an absolute point + + + + + Create a BillboardOverlay + + + + + Gets or sets where should the top left of the billboard be placed + + + + + Draw this overlay + + The ObjectListView being decorated + The Graphics used for drawing + The bounds of the rendering + + + + Renderers are the mechanism used for owner drawing cells. As such, they can also handle + hit detection and positioning of cell editing rectangles. + + + + + Render the whole item within an ObjectListView. This is only used in non-Details views. + + The event + A Graphics for rendering + The bounds of the item + The model object to be drawn + Return true to indicate that the event was handled and no further processing is needed. + + + + Render one cell within an ObjectListView when it is in Details mode. + + The event + A Graphics for rendering + The bounds of the cell + The model object to be drawn + Return true to indicate that the event was handled and no further processing is needed. + + + + What is under the given point? + + + x co-ordinate + y co-ordinate + This method should only alter HitTestLocation and/or UserData. + + + + When the value in the given cell is to be edited, where should the edit rectangle be placed? + + + + + + + + + + + Renderers that implement this interface will have the filter property updated, + each time the filter on the ObjectListView is updated. + + + + + + + + + + An AbstractRenderer is a do-nothing implementation of the IRenderer interface. + + + + + Render the whole item within an ObjectListView. This is only used in non-Details views. + + The event + A Graphics for rendering + The bounds of the item + The model object to be drawn + Return true to indicate that the event was handled and no further processing is needed. + + + + Render one cell within an ObjectListView when it is in Details mode. + + The event + A Graphics for rendering + The bounds of the cell + The model object to be drawn + Return true to indicate that the event was handled and no further processing is needed. + + + + What is under the given point? + + + x co-ordinate + y co-ordinate + This method should only alter HitTestLocation and/or UserData. + + + + When the value in the given cell is to be edited, where should the edit rectangle be placed? + + + + + + + + + + + This class provides compatibility for v1 RendererDelegates + + + + + The renderer delegate that this renderer wraps + + + + + A BaseRenderer provides useful base level functionality for any custom renderer. + + + Subclasses will normally override the Render or OptionalRender method, and use the other + methods as helper functions. + + + + + Can the renderer wrap lines that do not fit completely within the cell? + + Wrapping text doesn't work with the GDI renderer. + + + + Gets or sets how many pixels will be left blank around this cell + + + + This setting only takes effect when the control is owner drawn. + + for more details. + + + + + Gets the horiztonal alignment of the column + + + + + Gets or sets how cells drawn by this renderer will be vertically aligned. + + + + If this is not set, the value from the column or control itself will be used. + + + + + + Gets the optional padding that this renderer should apply before drawing. + This property considers all possible sources of padding + + + + + Gets the vertical cell alignment that should govern the rendering. + This property considers all possible sources. + + + + + Gets or sets the image list from which keyed images will be fetched + + + + + When rendering multiple images, how many pixels should be between each image? + + + + + Should text be rendered using GDI routines? This makes the text look more + like a native List view control. + + + + + Get or set the aspect of the model object that this renderer should draw + + + + + What are the bounds of the cell that is being drawn? + + + + + Get or set the OLVColumn that this renderer will draw + + + + + Get/set the event that caused this renderer to be called + + + + + Get/set the event that caused this renderer to be called + + + + + Gets or sets the font to be used for text in this cell + + + + + Gets the image list from which keyed images will be fetched + + + + + Should this renderer fill in the background before drawing? + + + + + Cache whether or not our item is selected + + + + + Is this renderer being used on a printer context? + + + + + Get or set the listitem that this renderer will be drawing + + + + + Get/set the listview for which the drawing is to be done + + + + + Get the specialized OLVSubItem that this renderer is drawing + + This returns null for column 0. + + + + Get or set the model object that this renderer should draw + + + + + Get or set the list subitem that this renderer will be drawing + + + + + The brush that will be used to paint the text + + + + + Will this renderer use the custom images from the parent ObjectListView + to draw the checkbox images. + + + + If this is true, the renderer will use the images from the + StateImageList to represent checkboxes. 0 - unchecked, 1 - checked, 2 - indeterminate. + + If this is false (the default), then the renderer will use .NET's standard + CheckBoxRenderer. + + + + + Align the second rectangle with the first rectangle, + according to the alignment of the column + + The cell's bounds + The rectangle to be aligned within the bounds + An aligned rectangle + + + + Calculate the left edge of the rectangle that aligns the outer rectangle with the inner one + according to this renderer's horizontal alignment + + + + + + + + Calculate the top of the rectangle that aligns the outer rectangle with the inner rectangle + according to this renders vertical alignment + + + + + + + + Calculate the top of the rectangle that aligns the outer rectangle with a rectangle of the given height + according to this renderer's vertical alignment + + + + + + + + Calculate the space that our rendering will occupy and then align that space + with the given rectangle, according to the Column alignment + + + Pre-padded bounds of the cell + + + + + Calculate the size of the content of this cell. + + + Pre-padded bounds of the cell + The width and height of the content + + + + Calculate the bounds of a checkbox given the (pre-padded) cell bounds + + + Pre-padded cell bounds + + + + + How much space will the check box for this cell occupy? + + Only column 0 can have check boxes. Sub item checkboxes are + treated as images + + + + + + How much space will the check box for this row occupy? + If the list doesn't have checkboxes, or this isn't the primary column, + this returns an empty size. + + + + + + + How much horizontal space will the image of this cell occupy? + + + + + + + + How much vertical space will the image of this cell occupy? + + + + + + + + How much space will the image of this cell occupy? + + + + + + + + How much horizontal space will the text of this cell occupy? + + + + + + + + + How much space will the text of this cell occupy? + + + + + + + + + Return the Color that is the background color for this item's cell + + The background color of the subitem + + + + Return the color of the background color when the item is selected + + The background color of the subitem + + + + Return the color to be used for text in this cell + + The text color of the subitem + + + + Return the color of the foreground color when the item is selected + + The foreground color of the subitem + + + + Return the image that should be drawn against this subitem + + An Image or null if no image should be drawn. + + + + Return the actual image that should be drawn when keyed by the given image selector. + An image selector can be: + an int, giving the index into the image list + a string, giving the image key into the image list + an Image, being the image itself + + + The value that indicates the image to be used + An Image or null + + + + + + + + Return the string that should be drawn within this + + + + + + Return the Color that is the background color for this item's text + + The background color of the subitem's text + + + + Render the whole item in a non-details view. + + + + + + + + + + Prepare this renderer to draw in response to the given event + + + + + Use this if you want to chain a second renderer within a primary renderer. + + + + Render one cell + + + + + + + + + + Prepare this renderer to draw in response to the given event + + + + + Use this if you want to chain a second renderer within a primary renderer. + + + + Calculate which part of this cell was hit + + + + + + + + Calculate the edit rectangle + + + + + + + + + + + Draw our data into the given rectangle using the given graphics context. + + + Subclasses should override this method. + The graphics context that should be used for drawing + The bounds of the subitem cell + Returns whether the rendering has already taken place. + If this returns false, the default processing will take over. + + + + + Draw our data into the given rectangle using the given graphics context. + + + Subclasses should override this method if they never want + to fall back on the default processing + The graphics context that should be used for drawing + The bounds of the subitem cell + + + + Do the actual work of hit testing. Subclasses should override this rather than HitTest() + + + + + + + + + Handle a HitTest request after all state information has been initialized + + + + + + + + + + + Draw the standard "[checkbox] [image] [text]" cell after the state properties have been initialized. + + + + + + + Change the bounds of the given rectangle to take any cell padding into account + + + + + + + Perform normal hit testing relative to the given aligned content bounds + + + + + + + + + + This method calculates the bounds of the text within a standard layout + (i.e. optional checkbox, optional image, text) + + This method only works correctly if the state of the renderer + has been fully initialized (see BaseRenderer.GetEditRectangle) + + + + + + + + Apply any padding to the given bounds, and then align a rectangle of the given + size within that padded area. + + + + + + + + + Draw the given image aligned horizontally within the column. + + + Over tall images are scaled to fit. Over-wide images are + truncated. This is by design! + + Graphics context to use for drawing + Bounds of the cell + The image to be drawn + + + + Draw our subitems image and text + + Graphics context to use for drawing + Pre-padded bounds of the cell + + + + Fill in the background of this cell + + Graphics context to use for drawing + Bounds of the cell + + + + Draw the primary check box of this row (checkboxes in other sub items use a different method) + + Graphics context to use for drawing + The pre-aligned and padded target rectangle + + + + Calculate the CheckBoxState we need to correctly draw the given state + + + + + + + Should this checkbox be drawn as disabled? + + + + + Is the current item hot (i.e. under the mouse)? + + + + + Is the mouse over a checkbox in this cell? + + + + + Draw the given text and optional image in the "normal" fashion + + Graphics context to use for drawing + Bounds of the cell + The optional image to be drawn + + + + Draw our subitems image and text + + Graphics context to use for drawing + Bounds of the cell + + + + Draw the given collection of image selectors + + + + + + + + Draw the given text and optional image in the "normal" fashion + + Graphics context to use for drawing + Bounds of the cell + The string to be drawn + + + + Print the given text in the given rectangle using only GDI routines + + + + + + The native list control uses GDI routines to do its drawing, so using them + here makes the owner drawn mode looks more natural. + This method doesn't honour the CanWrap setting on the renderer. All + text is single line + + + + + Gets the cell's vertical alignment as a TextFormatFlag + + + + + + Gets the StringFormat needed when drawing text using GDI+ + + + + + Print the given text in the given rectangle using normal GDI+ .NET methods + + Printing to a printer dc has to be done using this method. + + + + This renderer highlights substrings that match a given text filter. + + + + + Create a HighlightTextRenderer + + + + + Create a HighlightTextRenderer + + + + + + Create a HighlightTextRenderer + + + + + + Gets or set how rounded will be the corners of the text match frame + + + + + Gets or set the brush will be used to paint behind the matched substrings. + Set this to null to not fill the frame. + + + + + Gets or sets the filter that is filtering the ObjectListView and for + which this renderer should highlight text + + + + + When a filter changes, keep track of the text matching filters + + + + + Gets or set the pen will be used to frame the matched substrings. + Set this to null to not draw a frame. + + + + + Gets or sets whether the frame around a text match will have rounded corners + + + + + Gets or set the text that will be highlighted + + + + + Gets or sets the manner in which substring will be compared. + + + Use this to control if substring matches are case sensitive or insensitive. + + + + Handle a HitTest request after all state information has been initialized + + + + + + + + + + + Draw text using GDI + + + + + + + + Draw the highlighted text using GDI + + + + + + + + Draw an indication around the given frame that shows a text match + + + + + + + + + + Draw the text using GDI+ + + + + + + + + Draw the highlighted text using GDI+ + + + + + + + + Gets whether the renderer should actually draw highlighting + + + + + Return a GraphicPath that is a round cornered rectangle + + A round cornered rectangle path + If I could rely on people using C# 3.0+, this should be + an extension method of GraphicsPath. + + + + + + + + + Return a GraphicPath that is a round cornered rectangle + + The rectangle + The diameter of the corners + A round cornered rectangle path + If I could rely on people using C# 3.0+, this should be + an extension method of GraphicsPath. + + + + This class maps a data value to an image that should be drawn for that value. + + It is useful for drawing data that is represented as an enum or boolean. + + + + Return a renderer that draw boolean values using the given images + + Draw this when our data value is true + Draw this when our data value is false + A Renderer + + + + Return a renderer that draw tristate boolean values using the given images + + Draw this when our data value is true + Draw this when our data value is false + Draw this when our data value is null + A Renderer + + + + Make a new empty renderer + + + + + Make a new renderer that will show the given image when the given key is the aspect value + + The data value to be matched + The image to be shown when the key is matched + + + + Make a new renderer that will show the given images when it receives the given keys + + + + + + + + + Build a renderer from the given array of keys and their matching images + + An array of key/image pairs + + + + Register the image that should be drawn when our Aspect has the data value. + + Value that the Aspect must match + An ImageSelector -- an int, string or image + + + + Render our value + + + + + + + Draw a collection of images + + + + + + + + Draw one image + + + + + + + + This renderer draws just a checkbox to match the check state of our model object. + + + + + Draw our cell + + + + + + + Handle the GetEditRectangle request + + + + + + + + + + + Handle the HitTest request + + + + + + + + + Render an image that comes from our data source. + + The image can be sourced from: + + a byte-array (normally when the image to be shown is + stored as a value in a database) + an int, which is treated as an index into the image list + a string, which is treated first as a file name, and failing that as an index into the image list + an ICollection of ints or strings, which will be drawn as consecutive images + + If an image is an animated GIF, it's state is stored in the SubItem object. + By default, the image renderer does not render animations (it begins life with animations paused). + To enable animations, you must call Unpause(). + In the current implementation (2009-09), each column showing animated gifs must have a + different instance of ImageRenderer assigned to it. You cannot share the same instance of + an image renderer between two animated gif columns. If you do, only the last column will be + animated. + + + + + Make an empty image renderer + + + + + Make an empty image renderer that begins life ready for animations + + + + + Finalizer + + + + + Should the animations in this renderer be paused? + + + + + Gets a timer that can be used to trigger redraws on animations + + + + + Pause any animations + + + + + Unpause any animations + + + + + Draw our image + + + + + + + Translate our Aspect into an image. + + The strategy is: + If its a byte array, we treat it as an in-memory image + If it's an int, we use that as an index into our image list + If it's a string, we try to load a file by that name. If we can't, + we use the string as an index into our image list. + + An image + + + + This is the method that is invoked by the timer. It basically switches control to the listview thread. + + not used + + + + This is the OnTimer callback, but invoked in the same thread as the creator of the ListView. + This method can use all of ListViews methods without creating a CrossThread exception. + + + + + Instances of this class kept track of the animation state of a single image. + + + + + Is the given image an animation + + The image to be tested + Is the image an animation? + + + + Create an AnimationState in a quiet state + + + + + Create an animation state for the given image, which may or may not + be an animation + + The image to be rendered + + + + Does this state represent a valid animation + + + + + Advance our images current frame and calculate when it will expire + + + + + Render our Aspect as a progress bar + + + + + Make a BarRenderer + + + + + Make a BarRenderer for the given range of data values + + + + + Make a BarRenderer using a custom bar scheme + + + + + Make a BarRenderer using a custom bar scheme + + + + + Make a BarRenderer that uses a horizontal gradient + + + + + Make a BarRenderer that uses a horizontal gradient + + + + + 此栏是否应以系统样式绘制? + + + + + 将从我们的单元格边框开始绘制多少像素的条形图 + + + + + 在绘制进度条之前,将使用什么颜色填充控件内部? + + + + + 进度条边框颜色 + + + + + 进度条的边框像素宽 + + + + + 进度条的“填充”部分应该是什么颜色? + + 仅当GradientStartColor为Color.Empty时才使用此选项 + + + + 使用渐变以此颜色开始填充进度条 + + + + + 使用渐变填充以此颜色结尾的进度条 + + + + + 使用渐变以此颜色开始填充渐满进度条 + + + + + 使用渐变填充以此颜色结尾的渐满进度条 + + + + + 无论列变得多宽,进度条都不会比这个宽。 + + + + + 无论单元格有多高,进度条都不会比这个高 + + + + + 预期的最小数据值。小于此值的值将显示一个空条。 + + + + + 接近满时的值,高于该值时,显示不同颜色,小于等于MinimumValue或大于MaximumValue值,则表示未设置该值 + + + + + 范围的最大值。大于此值的值将给出一个完整的条形。 + + + + + The Pen that will draw the frame surrounding this bar + + + + + The brush that will be used to fill the bar + + + + + The brush that will be used to fill the bar + + + + + The brush that will be used to fill the background of the bar + + + + + Draw this progress bar using a gradient + + + + + + + Draw our aspect + + + + + + + Handle the GetEditRectangle request + + + + + + + + + + + An ImagesRenderer draws zero or more images depending on the data returned by its Aspect. + + This renderer's Aspect must return a ICollection of ints, strings or Images, + each of which will be drawn horizontally one after the other. + As of v2.1, this functionality has been absorbed into ImageRenderer and this is now an + empty shell, solely for backwards compatibility. + + + + + A MultiImageRenderer draws the same image a number of times based on our data value + + The stars in the Rating column of iTunes is a good example of this type of renderer. + + + + Make a quiet renderer + + + + + Make an image renderer that will draw the indicated image, at most maxImages times. + + + + + + + + + The index of the image that should be drawn + + + + + The name of the image that should be drawn + + + + + The image selector that will give the image to be drawn + + Like all image selectors, this can be an int, string or Image + + + + What is the maximum number of images that this renderer should draw? + + + + + Values less than or equal to this will have 0 images drawn + + + + + Values greater than or equal to this will have MaxNumberImages images drawn + + + + + Draw our data value + + + + + + + A class to render a value that contains a bitwise-OR'ed collection of values. + + + + + Register the given image to the given value + + When this flag is present... + ...draw this image + + + + Draw the flags + + + + + + + Do the actual work of hit testing. Subclasses should override this rather than HitTest() + + + + + + + + + This renderer draws an image, a single line title, and then multi-line description + under the title. + + + This class works best with FullRowSelect = true. + It's not designed to work with cell editing -- it will work but will look odd. + + It's not RightToLeft friendly. + + + + + + Create a DescribedTaskRenderer + + + + + Should text be rendered using GDI routines? This makes the text look more + like a native List view control. + + + + + Gets or set the font that will be used to draw the title of the task + + If this is null, the ListView's font will be used + + + + Return a font that has been set for the title or a reasonable default + + + + + Gets or set the color of the title of the task + + This color is used when the task is not selected or when the listview + has a translucent selection mechanism. + + + + Return the color of the title of the task or a reasonable default + + + + + Gets or set the font that will be used to draw the description of the task + + If this is null, the ListView's font will be used + + + + Return a font that has been set for the title or a reasonable default + + + + + Gets or set the color of the description of the task + + This color is used when the task is not selected or when the listview + has a translucent selection mechanism. + + + + Return the color of the description of the task or a reasonable default + + + + + Gets or sets the number of pixels that will be left between the image and the text + + + + + 顶部留白像素 + + + + + Gets or sets the number of pixels that will be left between the title and the description + + + + + Gets or sets the name of the aspect of the model object that contains the task description + + + + + Gets or sets the filter that is filtering the ObjectListView and for + which this renderer should highlight text + + + + + When a filter changes, keep track of the text matching filters + + + + + Fetch the description from the model class + + + + + + + + + + + + + + + Draw our item + + + + + + + Draw the task + + + + + + + + + + Handle the HitTest request + + + + + + + + + This renderer draws a functioning button in its cell + + + + + Gets or sets how each button will be sized + + + + + Gets or sets the size of the button when the SizingMode is FixedBounds + + If this is not set, the bounds of the cell will be used + + + + Gets or sets the extra space that surrounds the cell when the SizingMode is TextBounds + + + + + Gets or sets the maximum width that a button can occupy. + -1 means there is no maximum width. + + This is only considered when the SizingMode is TextBounds + + + + Gets or sets the minimum width that a button can occupy. + -1 means there is no minimum width. + + This is only considered when the SizingMode is TextBounds + + + + 获取或设置此列按钮的字体颜色(如果有按钮的话) + + + + + 获取或设置此列按钮的背景颜色(如果有按钮的话) + + + + + 获取或设置此列按钮的边框颜色(如果有按钮的话) + + + + + 获取或设置此列按钮的内边框颜色(如果有按钮的话) + + + + + 获取或设置此列按钮是否画边框(如果有按钮的话) + + + + + Calculate the size of the contents + + + + + + + + Draw the button + + + + + + + What part of the control is under the given point? + + + + + + + + + + What is the state of the button? + + + + + + Is the mouse over the button? + + + + + The common interface supported by all style objects + + + + + Gets or set the font that will be used by this style + + + + + Gets or set the font style + + + + + Gets or sets the ForeColor + + + + + Gets or sets the BackColor + + + + + Basic implementation of IItemStyle + + + + + Gets or sets the font that will be applied by this style + + + + + Gets or sets the style of font that will be applied by this style + + + + + Gets or sets the color of the text that will be applied by this style + + + + + Gets or sets the background color that will be applied by this style + + + + + Instances of this class specify how should "hot items" (non-selected + rows under the cursor) be renderered. + + + + + Gets or sets the overlay that should be drawn as part of the hot item + + + + + Gets or sets the decoration that should be drawn as part of the hot item + + A decoration is different from an overlay in that an decoration + scrolls with the listview contents, whilst an overlay does not. + + + + This class defines how a cell should be formatted + + + + + Gets or sets the font that will be applied by this style + + + + + Gets or sets the style of font that will be applied by this style + + + + + Gets or sets the color of the text that will be applied by this style + + + + + Gets or sets the background color that will be applied by this style + + + + + Instances of this class describe how hyperlinks will appear + + + + + Create a HyperlinkStyle + + + + + What sort of formatting should be applied to hyperlinks in their normal state? + + + + + What sort of formatting should be applied to hyperlinks when the mouse is over them? + + + + + What sort of formatting should be applied to hyperlinks after they have been clicked? + + + + + Gets or sets the cursor that should be shown when the mouse is over a hyperlink. + + + + + Instances of this class control one the styling of one particular state + (normal, hot, pressed) of a header control + + + + + Gets or sets the font that will be applied by this style + + + + + Gets or sets the color of the text that will be applied by this style + + + + + Gets or sets the background color that will be applied by this style + + + + + Gets or sets the color in which a frame will be drawn around the header for this column + + + + + Gets or sets the width of the frame that will be drawn around the header for this column + + + + + This class defines how a header should be formatted in its various states. + + + + + Create a new HeaderFormatStyle + + + + + What sort of formatting should be applied to a column header when the mouse is over it? + + + + + What sort of formatting should be applied to a column header in its normal state? + + + + + What sort of formatting should be applied to a column header when pressed? + + + + + Set the font for all three states + + + + + + Set the fore color for all three states + + + + + + Set the back color for all three states + + + + + + 正常为选中按钮 + + + + + 获得焦点的按钮 + + + + + 鼠标经过样式 + + + + + 获得焦点并鼠标经过 + + + + + 自定义GDI工具,绘制按钮 + + + + + 绘制圆形按钮(用法同矩形按钮) + + + + + + + + + + 绘制圆角按钮 + + 要绘制的文字 + Graphics 对象 + 要填充的矩形 + + + + + 根据普通矩形得到圆角矩形的路径 + + 原始矩形 + 半径 + 图形路径 + + + + A GlassPanelForm sits transparently over an ObjectListView to show overlays. + + + + + Get the low-level windows flag that will be given to CreateWindow. + + + + + Attach this form to the given ObjectListView + + + + + Made the overlay panel invisible + + + + + Show the overlay panel in its correctly location + + + If the panel is always shown, this method does nothing. + If the panel is being resized, this method also does nothing. + + + + + Detach this glass panel from its previous ObjectListView + + + You should unbind the overlay panel before making any changes to the + widget hierarchy. + + + + + Handle when the form that owns the ObjectListView begins to be resized + + + + + + + Handle when the form that owns the ObjectListView finished to be resized + + + + + + + The owning form has moved. Move the overlay panel too. + + + + + + + The owning form is resizing. Hide our overlay panel until the resizing stops + + + + + + + Handle when the bound OLV changes its location. The overlay panel must + be moved too, IFF it is currently visible. + + + + + + + Handle when the bound OLV changes size. The overlay panel must + resize too, IFF it is currently visible. + + + + + + + Handle when the bound OLV is part of a TabControl and that + TabControl changes tabs. The overlay panel is hidden. The + first time the bound OLV is redrawn, the overlay panel will + be shown again. + + + + + + + Somewhere the parent of the bound OLV has changed. Update + our events. + + + + + + + Handle when the bound OLV changes its visibility. + The overlay panel should match the OLV's visibility. + + + + + + + Class used to capture window messages for the header of the list view + control. + + + + + Create a header control for the given ObjectListView. + + + + + + Return the index of the column under the current cursor position, + or -1 if the cursor is not over a column + + Index of the column under the cursor, or -1 + + + + 返回此控件的Windows句柄 + + + 当ObjectListView被初始化为UserControl的一部分时,GetHeaderControl()方法返回0,直到UserControl完全初始化。 + 因此,构造函数中的AssignHandle()调用不起作用。因此,我们覆盖了Handle属性,以便值始终为当前值。 + + + + + Gets or sets a style that should be applied to the font of the + column's header text when the mouse is over that column + + THIS IS EXPERIMENTAL. USE AT OWN RISK. August 2009 + + + + 如果光标位于其复选框上,则获取光标下列的索引 + + + + + Gets the client rectangle for the header + + + + + 如果给定坐标点在给定列的复选框上方,则返回TRUE。 + + + + + + + + 获取光标是否位于“锁定”的分隔线上,即用户无法拖动的分隔线。 + + + + + 获取或设置此标头所属的列表视图 + + + + + 获取标题的最大高度。-1表示没有最大值。 + + + + + 获取标题的最小高度。-1表示没有最低要求。 + + + + + Get or set the ToolTip that shows tips for the header + + + + + 获取或设置当列标题中的文本太长而无法放入列中时,是否应对其进行自动换行 + + + + + Calculate how height the header needs to be + + Height in pixels + + + + Get the bounds of the checkbox against the given column + + + + + + + Should the given column be drawn with a checkbox against it? + + + + + + + Should the given column show a sort indicator? + + + + + + + Should the given column be drawn with a filter indicator against it? + + + + + + + Should the given column show a non-themed sort indicator? + + + + + + + Return the bounds of the item with the given index + + + + + + + Return the bounds within which the given column will be drawn + + + + + + + Force the header to redraw by invalidating it + + + + + Force the header to redraw a single column by invalidating it + + + + + Create a native tool tip control for this listview + + + + + Override the basic message pump + + + + + + Handle the LButtonDown windows message + + + + + + + Handle the LButtonUp windows message + + + + + + + Handle the SetCursor windows message + + + + + + + Handle the MouseMove windows message + + + + + + + Handle the MouseLeave windows message + + + + + + + Handle the Notify windows message + + + + + + + Handle the CustomDraw windows message + + + + + + + The message divides a ListView's space between the header and the rows of the listview. + The WINDOWPOS structure controls the headers bounds, the RECT controls the listview bounds. + + + + + + + Handle when the underlying header control is destroyed + + + + + + + Does this header need to be custom drawn? + + Word wrapping and colored text require custom drawning. Funnily enough, we + can change the font natively. + + + + Draw one cell of the header + + + + + + + + Draw a background for the header, without using Themes. + + + + + + + + + + + Draw a more-or-less pure themed header background. + + + + + + + + + + Draw a sort indicator using themes + + + + + + + Draw a sort indicator without using themes + + + + + + + + Draw an indication that this column has a filter applied to it + + + + + + + + Draw the header's image and text + + + + + + + + + Return the header format that should be used for the given column + + + + + + + What style should be applied to the header? + + + + + + + + + What font should be used to draw the header text? + + + + + + + + + What flags will be used when drawing text + + + + + Perform a HitTest for the header control + + + + Null if the given point isn't over the header + + + + Instances of this class put a CheckedListBox into a tool strip menu item. + + + + + Create a ToolStripCheckedListBox + + + + + Gets the control embedded in the menu + + + + + Gets the items shown in the checkedlistbox + + + + + Gets or sets whether an item should be checked when it is clicked + + + + + Gets a collection of the checked items + + + + + Add a possibly checked item to the control + + + + + + + Add an item with the given state to the control + + + + + + + Gets the checkedness of the i'th item + + + + + + + Set the checkedness of the i'th item + + + + + + + Check all the items in the control + + + + + Unchecked all the items in the control + + + + + Listen for events on the underlying control + + + + + + Stop listening for events on the underlying control + + + + + + Tell the world that an item was checked + + + + + Trigger the ItemCheck event + + + + + + + A limited wrapper around a Windows tooltip window. + + + + + These are the standard icons that a tooltip can display. + + + + + No icon + + + + + Info + + + + + Warning + + + + + Error + + + + + Large info (Vista and later only) + + + + + Large warning (Vista and later only) + + + + + Large error (Vista and later only) + + + + + + + + + + + + + + + + + + + + + + + + + Get or set if the style of the tooltip control + + + + + Get or set if the tooltip should be shown as a ballon + + + + + Get or set if the tooltip should be shown as a ballon + + + + + Get or set the background color of the tooltip + + + + + Get or set the color of the text and border on the tooltip. + + + + + Get or set the title that will be shown on the tooltip. + + + + + Get or set the icon that will be shown on the tooltip. + + + + + Gets or sets the font that will be used to draw this control. + is still. + + Setting this to null reverts to the default font. + + + + Gets or sets how many milliseconds the tooltip will remain visible while the mouse + is still. + + + + + Gets or sets how many milliseconds the mouse must be still before the tooltip is shown. + + + + + Gets or sets how many milliseconds the mouse must be still before the tooltip is shown again. + + + + + Create the underlying control. + + The parent of the tooltip + This does nothing if the control has already been created + + + + Take a copy of the current settings and restore them when the + tooltip is poppped. + + + This call cannot be nested. Subsequent calls to this method will be ignored + until PopSettings() is called. + + + + + Restore the settings of the tooltip as they were when PushSettings() + was last called. + + + + + Add the given window to those for whom this tooltip will show tips + + The window + + + + Hide any currently visible tooltip + + + + + + Remove the given window from those managed by this tooltip + + + + + + Set the maximum width of a tooltip string. + + + + + Set the maximum width of a tooltip string. + + Setting this ensures that line breaks in the tooltip are honoured. + + + + Make a TOOLINFO structure for the given window + + + A filled in TOOLINFO + + + + Handle a WmNotify message + + The msg + True if the message has been handled + + + + Handle a get display info message + + The msg + True if the message has been handled + + + + Handle a TTN_LINKCLICK message + + The msg + True if the message has been handled + This cannot call base.WndProc() since the msg may have come from another control. + + + + Handle a TTN_POP message + + The msg + True if the message has been handled + This cannot call base.WndProc() since the msg may have come from another control. + + + + Handle a TTN_SHOW message + + The msg + True if the message has been handled + This cannot call base.WndProc() since the msg may have come from another control. + + + + Handle a reflected notify message + + The msg + True if the message has been handled + + + + Mess with the basic message pump of the tooltip + + + + + + Tell the world that a tooltip is about to show + + + + + Tell the world that a tooltip is about to disappear + + + + + + + + + + + + + + + + + This form is an example of how an application could allows the user to select which columns + an ObjectListView will display, as well as select which order the columns are displayed in. + + + In Tile view, ColumnHeader.DisplayIndex does nothing. To reorder the columns you have + to change the order of objects in the Columns property. + Remember that the first column is special! + It has to remain the first column. + + + + + Make a new ColumnSelectionForm + + + + + Open this form so it will edit the columns that are available in the listview's current view + + The ObjectListView whose columns are to be altered + + + + Open this form so it will edit the columns that are available in the given listview + when the listview is showing the given type of view. + + The ObjectListView whose columns are to be altered + The view that is to be altered. Must be View.Details or View.Tile + + + + Initialize the form to show the columns of the given view + + + + + + + The user has pressed OK. Do what's requied. + + + + + + + Enable the controls on the dialog to match the current state + + + + + A Comparer that will sort a list of columns so that visible ones come before hidden ones, + and that are ordered by their display order. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + An object that implements the IGenerator interface provides the ability + to dynamically create columns + for an ObjectListView based on the characteristics of a given collection + of model objects. + + + + + Generate columns into the given ObjectListView that come from the given + model object type. + + The ObjectListView to modify + The model type whose attributes will be considered. + Will columns be generated for properties that are not marked with [OLVColumn]. + + + + Generate a list of OLVColumns based on the attributes of the given type + If allProperties to true, all public properties will have a matching column generated. + If allProperties is false, only properties that have a OLVColumn attribute will have a column generated. + + + Will columns be generated for properties that are not marked with [OLVColumn]. + A collection of OLVColumns matching the attributes of Type that have OLVColumnAttributes. + + + + The Generator class provides methods to dynamically create columns + for an ObjectListView based on the characteristics of a given collection + of model objects. + + + For a given type, a Generator can create columns to match the public properties + of that type. The generator can consider all public properties or only those public properties marked with + [OLVColumn] attribute. + + + + + Gets or sets the actual generator used by the static convinence methods. + + If you subclass the standard generator or implement IGenerator yourself, + you should install an instance of your subclass/implementation here. + + + + Replace all columns of the given ObjectListView with columns generated + from the first member of the given enumerable. If the enumerable is + empty or null, the ObjectListView will be cleared. + + The ObjectListView to modify + The collection whose first element will be used to generate columns. + + + + Replace all columns of the given ObjectListView with columns generated + from the first member of the given enumerable. If the enumerable is + empty or null, the ObjectListView will be cleared. + + The ObjectListView to modify + The collection whose first element will be used to generate columns. + Will columns be generated for properties that are not marked with [OLVColumn]. + + + + Generate columns into the given ObjectListView that come from the public properties of the given + model object type. + + The ObjectListView to modify + The model type whose attributes will be considered. + + + + Generate columns into the given ObjectListView that come from the public properties of the given + model object type. + + The ObjectListView to modify + The model type whose attributes will be considered. + Will columns be generated for properties that are not marked with [OLVColumn]. + + + + Generate a list of OLVColumns based on the public properties of the given type + that have a OLVColumn attribute. + + + A collection of OLVColumns matching the attributes of Type that have OLVColumnAttributes. + + + + Generate columns into the given ObjectListView that come from the given + model object type. + + The ObjectListView to modify + The model type whose attributes will be considered. + Will columns be generated for properties that are not marked with [OLVColumn]. + + + + Generate a list of OLVColumns based on the attributes of the given type + If allProperties to true, all public properties will have a matching column generated. + If allProperties is false, only properties that have a OLVColumn attribute will have a column generated. + + + Will columns be generated for properties that are not marked with [OLVColumn]. + A collection of OLVColumns matching the attributes of Type that have OLVColumnAttributes. + + + + Replace all the columns in the given listview with the given list of columns. + + + + + + + Post process columns after creating them and adding them to the AllColumns collection. + + + + + + Create a column from the given PropertyInfo and OLVColumn attribute + + + + + + + + Make a column from the given PropertyInfo + + + + + + + Make a column from the given PropertyDescriptor + + + + + + + Create a column with all the given information + + + + + + + + + + + Create a column. + + + + + + + + + Convert a property name to a displayable title. + + + + + + + Configure the given column to show a checkbox if appropriate + + + + + + + If this given type has an property marked with [OLVChildren], make delegates that will + traverse that property as the children of an instance of the model + + + + + + + Generate CanExpand and ChildrenGetter delegates from the given property. + + + + + + + An OLVExporter converts a collection of rows from an ObjectListView + into a variety of textual formats. + + + + + What format will be used for exporting + + + + + Tab separated values, according to http://www.iana.org/assignments/media-types/text/tab-separated-values + + + + + Alias for TabSeparated + + + + + Comma separated values, according to http://www.ietf.org/rfc/rfc4180.txt + + + + + HTML table, according to me + + + + + Create an empty exporter + + + + + Create an exporter that will export all the rows of the given ObjectListView + + + + + + Create an exporter that will export all the given rows from the given ObjectListView + + + + + + + Gets or sets whether hidden columns will also be included in the textual + representation. If this is false (the default), only visible columns will + be included. + + + + + Gets or sets whether column headers will also be included in the text + and HTML representation. Default is true. + + + + + Gets the ObjectListView that is being used as the source of the data + to be exported + + + + + Gets the model objects that are to be placed in the data object + + + + + Export the nominated rows from the nominated ObjectListView. + Returns the result in the expected format. + + + + This will perform only one conversion, even if called multiple times with different formats. + + + + Convert + + + + + Encode a string such that it can be used as a value in a CSV file. + This basically means replacing any quote mark with two quote marks, + and enclosing the whole string in quotes. + + + + + + + HTML-encodes a string and returns the encoded string. + + The text string to encode. + The HTML-encoded text. + Taken from http://www.west-wind.com/weblog/posts/2009/Feb/05/Html-and-Uri-String-Encoding-without-SystemWeb + + + + A TypedObjectListView is a type-safe wrapper around an ObjectListView. + + + VCS does not support generics on controls. It can be faked to some degree, but it + cannot be completely overcome. In our case in particular, there is no way to create + the custom OLVColumn's that we need to truly be generic. So this wrapper is an + experiment in providing some type-safe access in a way that is useful and available today. + A TypedObjectListView is not more efficient than a normal ObjectListView. + Underneath, the same name of casts are performed. But it is easier to use since you + do not have to write the casts yourself. + + + The class of model object that the list will manage + + To use a TypedObjectListView, you write code like this: + + TypedObjectListView<Person> tlist = new TypedObjectListView<Person>(this.listView1); + tlist.CheckStateGetter = delegate(Person x) { return x.IsActive; }; + tlist.GetColumn(0).AspectGetter = delegate(Person x) { return x.Name; }; + ... + + To iterate over the selected objects, you can write something elegant like this: + + foreach (Person x in tlist.SelectedObjects) { + x.GrantSalaryIncrease(); + } + + + + + + Create a typed wrapper around the given list. + + The listview to be wrapped + + + + Return the model object that is checked, if only one row is checked. + If zero rows are checked, or more than one row, null is returned. + + + + + Return the list of all the checked model objects + + + + + The ObjectListView that is being wrapped + + + + + Get or set the list of all model objects + + + + + Return the model object that is selected, if only one row is selected. + If zero rows are selected, or more than one row, null is returned. + + + + + The list of model objects that are selected. + + + + + Return a typed wrapper around the column at the given index + + The index of the column + A typed column or null + + + + Return a typed wrapper around the column with the given name + + The name of the column + A typed column or null + + + + Return the model object at the given index + + The index of the model object + The model object or null + + + + CheckStateGetter + + + + + + + Gets or sets the check state getter + + + + + BooleanCheckStateGetter + + + + + + + Gets or sets the boolean check state getter + + + + + CheckStatePutter + + + + + + + + Gets or sets the check state putter delegate + + + + + BooleanCheckStatePutter + + + + + + + + Gets or sets the boolean check state putter + + + + + ToolTipGetter + + + + + + + + Gets or sets the cell tooltip getter + + + + + Gets or sets the header tool tip getter + + + + + This method will generate AspectGetters for any column that has an AspectName. + + + + + A type-safe wrapper around an OLVColumn + + + + + + Creates a TypedColumn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generate an aspect getter that does the same thing as the AspectName, + except without using reflection. + + + + If you have an AspectName of "Owner.Address.Postcode", this will generate + the equivilent of: this.AspectGetter = delegate (object x) { + return x.Owner.Address.Postcode; + } + + + + If AspectName is empty, this method will do nothing, otherwise + this will replace any existing AspectGetter. + + + + + + Generates an aspect getter method dynamically. The method will execute + the given dotted chain of selectors against a model object given at runtime. + + The type of model object to be passed to the generated method + A dotted chain of selectors. Each selector can be the name of a + field, property or parameter-less method. + A typed delegate + + + + This method generates the actual IL for the method. + + + + + + + + A virtual object list view operates in virtual mode, that is, it only gets model objects for + a row when it is needed. This gives it the ability to handle very large numbers of rows with + minimal resources. + + A listview is not a great user interface for a large number of items. But if you've + ever wanted to have a list with 10 million items, go ahead, knock yourself out. + Virtual lists can never iterate their contents. That would defeat the whole purpose. + Animated GIFs should not be used in virtual lists. Animated GIFs require some state + information to be stored for each animation, but virtual lists specifically do not keep any state information. + In any case, you really do not want to keep state information for 10 million animations! + + Although it isn't documented, .NET virtual lists cannot have checkboxes. This class codes around this limitation, + but you must use the functions provided by ObjectListView: CheckedObjects, CheckObject(), UncheckObject() and their friends. + If you use the normal check box properties (CheckedItems or CheckedIndicies), they will throw an exception, since the + list is in virtual mode, and .NET "knows" it can't handle checkboxes in virtual mode. + + Due to the limits of the underlying Windows control, virtual lists do not trigger ItemCheck/ItemChecked events. + Use a CheckStatePutter instead. + To enable grouping, you must provide an implmentation of IVirtualGroups interface, via the GroupingStrategy property. + Similarly, to enable filtering on the list, your VirtualListDataSource must also implement the IFilterableDataSource interface. + + + + + Create a VirtualObjectListView + + + + + Gets whether or not this listview is capabale of showing groups + + + + + Get or set the collection of model objects that are checked. + When setting this property, any row whose model object isn't + in the given collection will be unchecked. Setting to null is + equivilent to unchecking all. + + + + This property returns a simple collection. Changes made to the returned + collection do NOT affect the list. This is different to the behaviour of + CheckedIndicies collection. + + + When getting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects. + When setting CheckedObjects, the performance of this method is O(n) where n is the number of checked objects plus + the number of objects to be checked. + + + If the ListView is not currently showing CheckBoxes, this property does nothing. It does + not remember any check box settings made. + + + This class optimizes the management of CheckStates so that it will work efficiently even on + large lists of item. However, those optimizations are impossible if you install a CheckStateGetter. + With a CheckStateGetter installed, the performance of this method is O(n) where n is the size + of the list. This could be painfully slow. + + + + + Gets or sets whether or not an object will be included in the CheckedObjects + collection, even if it is not present in the control at the moment + + + This property is an implementation detail and should not be altered. + + + + + Gets the collection of objects that survive any filtering that may be in place. + + + + + Gets or sets the strategy that will be used to create groups + + + This must be provided for a virtual list to show groups. + + + + + Gets whether or not the current list is filtering its contents + + + This is only possible if our underlying data source supports filtering. + + + + + Get/set the collection of objects that this list will show + + + + The contents of the control will be updated immediately after setting this property. + + Setting this property preserves selection, if possible. Use SetObjects() if + you do not want to preserve the selection. Preserving selection is the slowest part of this + code -- performance is O(n) where n is the number of selected rows. + This method is not thread safe. + The property DOES work on virtual lists, but if you try to iterate through a list + of 10 million objects, it may take some time :) + + + + + This delegate is used to fetch a rowObject, given it's index within the list + + Only use this property if you are not using a VirtualListDataSource. + + + + Should this list show its items in groups? + + + + + Get/set the data source that is behind this virtual list + + Setting this will cause the list to redraw. + + + + Gets or sets the number of rows in this virtual list. + + + There is an annoying feature/bug in the .NET ListView class. + When you change the VirtualListSize property, it always scrolls so + that the focused item is the top item. This is annoying since it makes + the virtual list seem to flicker as the control scrolls to show the focused + item and then scrolls back to where ObjectListView wants it to be. + + + + + Return the number of items in the list + + the number of items in the list + + + + Return the model object at the given index + + Index of the model object to be returned + A model object + + + + Find the given model object within the listview and return its index + + The model object to be found + The index of the object. -1 means the object was not present + + + + Return the OLVListItem that displays the given model object + + The modelObject whose item is to be found + The OLVListItem that displays the model, or null + This method has O(n) performance. + + + + Add the given collection of model objects to this control. + + A collection of model objects + + The added objects will appear in their correct sort position, if sorting + is active. Otherwise, they will appear at the end of the list. + No check is performed to see if any of the objects are already in the ListView. + Null objects are silently ignored. + + + + + Remove all items from this list + + This method can safely be called from background threads. + + + + Scroll the listview so that the given group is at the top. + + The index of the group to be revealed + + If the group is already visible, the list will still be scrolled to move + the group to the top, if that is possible. + + This only works when the list is showing groups (obviously). + + + + + Inserts the given collection of model objects to this control at hte given location + + + A collection of model objects + + The added objects will appear in their correct sort position, if sorting + is active. Otherwise, they will appear at the given position of the list. + No check is performed to see if any of the objects are already in the ListView. + Null objects are silently ignored. + + + + + Update the rows that are showing the given objects + + This method does not resort the items. + + + + Update the rows that are selected + + This method does not resort or regroup the view. + + + + Remove all of the given objects from the control + + Collection of objects to be removed + + Nulls and model objects that are not in the ListView are silently ignored. + Due to problems in the underlying ListView, if you remove all the objects from + the control using this method and the list scroll vertically when you do so, + then when you subsequenially add more objects to the control, + the vertical scroll bar will become confused and the control will draw one or more + blank lines at the top of the list. + + + + + Select the row that is displaying the given model object. All other rows are deselected. + + Model object to select + Should the object be focused as well? + + + + Select the rows that is displaying any of the given model object. All other rows are deselected. + + A collection of model objects + This method has O(n) performance where n is the number of model objects passed. + Do not use this to select all the rows in the list -- use SelectAll() for that. + + + + Set the collection of objects that this control will show. + + + Should the state of the list be preserved as far as is possible. + + + + Get the checkedness of an object from the model. Returning null means the + model does know and the value from the control will be used. + + + + + + + Rebuild the list with its current contents. + + + Invalidate any cached information when we rebuild the list. + + + + + Clear any cached info this list may have been using + + + + + Do the work of creating groups for this control + + + + + + Do the plumbing to disable groups on a virtual list + + + + + Do the plumbing to enable groups on a virtual list + + + + + Return the position of the given itemIndex in the list as it currently shown to the user. + If the control is not grouped, the display order is the same as the + sorted list order. But if the list is grouped, the display order is different. + + + + + + + Return the last item in the order they are shown to the user. + If the control is not grouped, the display order is the same as the + sorted list order. But if the list is grouped, the display order is different. + + + + + + Return the n'th item (0-based) in the order they are shown to the user. + If the control is not grouped, the display order is the same as the + sorted list order. But if the list is grouped, the display order is different. + + + + + + + Return the ListViewItem that appears immediately after the given item. + If the given item is null, the first item in the list will be returned. + Return null if the given item is the last item. + + The item that is before the item that is returned, or null + A OLVListItem + + + + Return the ListViewItem that appears immediately before the given item. + If the given item is null, the last item in the list will be returned. + Return null if the given item is the first item. + + The item that is before the item that is returned + A ListViewItem + + + + Make a list of groups that should be shown according to the given parameters + + + + + + + Create a OLVListItem for given row index + + The index of the row that is needed + An OLVListItem + + + + On virtual lists, this cannot work. + + + + + Record the change of checkstate for the given object in the model. + This does not update the UI -- only the model + + + + The check state that was recorded and that should be used to update + the control. + + + + Refresh the given item in the list + + The item to refresh + + + + Change the size of the list + + + + + + Take ownership of the 'objects' collection. This separates our collection from the source. + + + + This method + separates the 'objects' instance variable from its source, so that any AddObject/RemoveObject + calls will modify our collection and not the original colleciton. + + + VirtualObjectListViews always own their collections, so this is a no-op. + + + + + + Change the state of the control to reflect changes in filtering + + + + + Change the size of the virtual list so that it matches its data source + + + + + Handle the CacheVirtualItems event + + + + + + + Handle a RetrieveVirtualItem + + + + + + + Handle the SearchForVirtualList event, which is called when the user types into a virtual list + + + + + + + Find the first row in the given range of rows that prefix matches the string value of the given column. + + + + + + The index of the matched row, or -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 初始化的时候给个alpha值,这样在灰图片的时候可以半透明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 使图片单色化 + + + + + + + + + + + + 自定义 + + + + + 预置 + + + + + 系统 + + + + + 颜色表示法 + + + + + 根据颜色表示字符串获取对应的颜色 + + + + + + + + + + + + + + + + + + + + + + + + + + + 从文件中获取Image对象 + 这个函数的主要功能是处理一些ico文件 + 一些ico文件的格式可能比较新,直接Image.FormFile,会报内存不足的异常 + + + 是否将文件读入内存操作,如果为false,将直接返回Image.FromFile,在此情况下, + 必须手动释放Image对象,否则文件将一直处于占用状态,如果为true,则在内存中拷贝副本 + + + + + + 将图像转为Icon对象,使用png格式 + + + + + + + 将图像转为Icon对象 + + + + + + + + 返回适应指定容器大小的图像 + 如果图像的尺寸(长或宽)超出了容器范围,将按比例获取图像的缩略图返回,否则直接返回图像 + 此方法最终调用 Image.GetThumbnailImage + 但是注意,在指定的容器尺寸过小时,返回的Image尺寸不可知,是在为了显示16x16的小缩略图是发现了此问题 + 使用 GetScaleImage + + + + + + + + + 返回适应指定容器大小的图像 + 在需要的情况下,此方法创建一个新对象,进行绘制 + + + + + + + + 返回适应指定容器大小的图像 + 在需要的情况下,此方法创建一个新对象,进行绘制 + + + + + + + + + Gets the bounding rectangle of an image required to fit + in to the given rectangle keeping the image aspect ratio. + + The source image. + The rectangle to fit in to. + Horizontal image aligment in percent. + Vertical image aligment in percent. + New image size. + + + + Gets the bounding rectangle of an image required to fit + in to the given rectangle keeping the image aspect ratio. + The image will be centered in the fit box. + + The source image. + The rectangle to fit in to. + New image size. + + + + Gets the scaled size of an image required to fit + in to the given size keeping the image aspect ratio. + + The source image. + The size to fit in to. + New image size. + + + + 获取一个圆角矩形 + + + + 角度 + + + + + 获取一个圆角矩形 + + + 角度 + + + + + + + + + + + + + + + + + + + + + + 返回一个表示箭头的Path + 如果开始坐标和结束坐标之间的距离大于箭头的大小,箭头向结束坐标对齐,顶着结束坐标 + + 开始坐标 + 结束坐标(顶点,方向) + 箭头的长短,大小 + 箭头的粗细 + + + + + 在指定的Image上绘制特定标记 + + + + + 文件不存在 + + + + + + 文件不存在 + + + + + + 无法读取文件 + + + + + + + + + + + + + + + + + + + + + 验证失败中显示错误信息时用的标题 + + + + + 验证失败时是否需要高亮显示(改变背景色) + + + + + 验证控件的输入 + + + + + + + 自定义验证方法 + 在基础验证都通过后,才会调用自定义验证方法(如果有) + + + + + + + + + + 是否支持 Windows Vista 以上的玻璃效果 + + + + + 是否打开了玻璃效果 + + + + + 获取应用程序主窗体 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 这个缓存是全局的 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 所对应的绑定数据类型 + + + + + 是否对 DataBoundType 的子类型有效 + 默认无效 + 如果设置为 true,又同时添加了基类与子类的 codon,则运行时会取到哪个codon不确定 + 通常取先添加的那个 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 如果输入的字符串包含 "${...}" 这样的格式,则认为是指代资源文件中的一个字符串资源 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 获取授予该组件的许可证密钥 + + + + + 0:未验证 + 1:验证失败 + 2:验证通过 + + + + + 获取组件的实例或类型的许可证(如果已给定上下文并确定拒绝许可证是否引发异常)。 + + + + + + + + + + 强类型资源类,用于查找本地化字符串等。 + + + + + + + + + + 返回此类使用的缓存 ResourceManager 实例。 + + + + + 为使用此强类型资源类的所有资源查找 + 重写当前线程的 CurrentUICulture 属性。 + + + + + 查找类似 消息 的本地化字符串。 + + + + + 查找类似 底部 的本地化字符串。 + + + + + 查找类似 顶部 的本地化字符串。 + + + + + 查找类似 更大 (48x48) 的本地化字符串。 + + + + + 查找类似 大 (32x32) 的本地化字符串。 + + + + + 查找类似 中 (24x24) 的本地化字符串。 + + + + + 查找类似 小 (16x16) 的本地化字符串。 + + + + + Returns true if the current language is the default language. + + + + + Returns a System.String that represents the current System.Object. + + + + + + + + + + 返回此类使用的缓存 ResourceManager 实例。 + + + + + 为使用此强类型资源类的所有资源查找 + 重写当前线程的 CurrentUICulture 属性。 + + + + + 查找类似 消息 的本地化字符串。 + + + + + 查找类似 底部 的本地化字符串。 + + + + + 查找类似 顶部 的本地化字符串。 + + + + + 查找类似 更大 (48x48) 的本地化字符串。 + + + + + 查找类似 大 (32x32) 的本地化字符串。 + + + + + 查找类似 中 (24x24) 的本地化字符串。 + + + + + 查找类似 小 (16x16) 的本地化字符串。 + + + + + Returns true if the current language is the default language. + + + + + + + + + + Call GetLanguages() to retrieve a list of possible languages that can be used to set this property. + The default value is the default language. + + + + + Gets a list of available languages defined in this assembly. + + + + + + + + + + + + 如果输入的字符串包含 "${...}" 这样的格式,则认为是指代资源文件中的一个字符串资源 + + + + + + + Represents a pop-up window. + + + + + Gets the content of the pop-up. + + + + + Determines which animation to use while showing the pop-up window. + + + + + Determines which animation to use while hiding the pop-up window. + + + + + Determines the duration of the animation. + + + + + Gets or sets a value indicating whether the content should receive the focus after the pop-up has been opened. + + true if the content should be focused after the pop-up has been opened; otherwise, false. + If the FocusOnOpen property is set to false, then pop-up cannot use the fade effect. + + + + Gets or sets a value indicating whether presing the alt key should close the pop-up. + + true if presing the alt key does not close the pop-up; otherwise, false. + + + + Gets or sets a value indicating whether the is resizable. + + true if resizable; otherwise, false. + + + + Gets or sets a minimum size of the pop-up. + + An ordered pair of type representing the width and height of a rectangle. + + + + Gets or sets a maximum size of the pop-up. + + An ordered pair of type representing the width and height of a rectangle. + + + + Gets parameters of a new window. + + An object of type used when creating a new window. + + + + Initializes a new instance of the class. + + The content of the pop-up. + + Pop-up will be disposed immediately after disposion of the content control. + + is null. + + + + Raises the event. + + An that contains the event data. + + + + Processes a dialog box key. + + One of the values that represents the key to process. + + true if the key was processed by the control; otherwise, false. + + + + + Updates the pop-up region. + + + + + Shows the pop-up window below the specified control. + + The control below which the pop-up will be shown. + + When there is no space below the specified control, the pop-up control is shown above it. + + is null. + + + + Shows the pop-up window below the specified area of the specified control. + + The control used to compute screen location of specified area. + The area of control below which the pop-up will be shown. + + When there is no space below specified area, the pop-up control is shown above it. + + is null. + + + + Raises the event. + + An that contains the event data. + + + + Raises the event. + + A that contains the event data. + + + + Raises the event. + + An that contains the event data. + + + + Raises the event. + + A that contains the event data. + + + + Processes Windows messages. + + The Windows to process. + + + + Processes the resizing messages. + + The message. + true, if the WndProc method from the base class shouldn't be invoked. + + + + Paints the sizing grip. + + The instance containing the event data. + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Types of animation of the pop-up window. + + + + + Uses no animation. + + + + + Animates the window from left to right. This flag can be used with roll or slide animation. + + + + + Animates the window from right to left. This flag can be used with roll or slide animation. + + + + + Animates the window from top to bottom. This flag can be used with roll or slide animation. + + + + + Animates the window from bottom to top. This flag can be used with roll or slide animation. + + + + + Makes the window appear to collapse inward if it is hiding or expand outward if the window is showing. + + + + + Uses a slide animation. + + + + + Uses a fade effect. + + + + + Uses a roll animation. + + + + + Uses a default animation. + + + + + Represents a Windows combo box control with a custom popup control attached. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the drop down control. + + The drop down control. + + + + Gets or sets a value indicating whether the combo box is displaying its drop-down portion. + + + true if the drop-down portion is displayed; otherwise, false. The default is false. + + + + + Occurs when the drop-down portion of a is shown. + + + + + Shows the drop down. + + + + + Occurs when the drop-down portion of the is no longer visible. + + + + + Hides the drop down. + + + + + Processes Windows messages. + + The Windows to process. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + This property is not relevant for this class. + This property is not relevant for this class. + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Represents a Windows combo box control which can be used in a popup's content control. + + + + + Initializes a new instance of the PopupControl.ComboBox class. + + + + + Raises the event. + + An that contains the event data. + + + + Raises the event. + + An that contains the event data. + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 白色到灰色的垂直渐变 + + + + + + + + + + This method handles the RenderToolStripBorder event. + + + + + + + + + + + + A ToolstripManager rendering class with advanced control features + + + + + Creates a new EasyRender class for modifications + + + + + + + + + + + + + + + + + + + + Gets the manager to edit and change the appearance of the Toolstrip + + + + + Gets the manager to edit and change the appearance of Toolstrip buttons + + + + + Gets the manager to edit and change the appearance of other Toolstrip controls + + + + + Gets the manager to edit and change the appearance of the Panels + + + + + Gets the manager to edit and change the appearance of the Toolstrip split buttons + + + + + Gets the manager to edit and change the appearance of the Status-bar + + + + + Gets or sets whether to smooth the font text on all controls + + + + + Gets or sets the color of the text if the AlterColor is set to true + + + + + Gets or sets whether to override the font-color on all controls + + + + + Creates a GraphicsPath that appreciates an area where things can be drawn + + The rectangular area which will serve as the base + The curve amount of the corners + + + + + Creates a triangle based on the size and bounds sectors + + The area which the triangle is confined to + The size of the triangle + The direction which the triangle is pointing + + + + + Gets a color array based on the state of a normal button + + The button to check the state of + + + + + + Gets a color array based on the state of a split-button + + The button to check the state of + + + + + + Gets a color array based on the state of a menu-item + + The button to check the state of + + + + + + Gets a color array based on the state of a drop-down button + + The button to check the state of + + + + + + Gets a blending property for a specified type of Toolstrip item + + The Toolstrip item + The type of item this is + + + + + Fills a specified boundary with color + + The Graphics object to draw onto + The boundaries to draw the color + The brush to fill the color + + + + Fills a specified boundary with a gradient with specified colors + + The Graphics object to draw onto + The boundaries to draw the color + The color of the gradient at the top + The color of the gradient at the bottom + + + + Fills a specified boundary with a gradient with specified colors at a given angle + + The Graphics object to draw onto + The boundaries to draw the color + The color of the gradient at the top + The color of the gradient at the bottom + The angle which the gradient is drawn (null defaults to 90f) + + + + Fills a specified boundary with a gradient with specified colors at a given angle and with blending properties + + The Graphics object to draw onto + The boundaries to draw the color + The color of the gradient at the top + The color of the gradient at the bottom + The angle which the gradient is drawn (null defaults to 90f) + The blending options to draw the gradient + + + + Draws a set path with a defined brush + + The Graphics object to draw onto + The path to draw along + The brush to fill the color + + + + Draws a set path with specified colors + + The Graphics object to draw onto + The path to draw along + The area of span the border gradient covers + The color of the gradient at the top + The color of the gradient at the bottom + + + + Draws a set path with specified colors at a given angle + + The Graphics object to draw onto + The path to draw along + The area of span the border gradient covers + The color of the gradient at the top + The color of the gradient at the bottom + The angle which the gradient is drawn (null defaults to 90f) + + + + Draws a set path with specified colors at a given angle with blending properties + + The Graphics object to draw onto + The path to draw along + + The color of the gradient at the top + The color of the gradient at the bottom + The angle which the gradient is drawn (null defaults to 90f) + The blending options to draw the gradient + + + + Draws a Toolstrip button + + The Toolstrip button + The Graphics object to handle + The parent Toolstrip + + + + Draws a Toolstrip button + + The Toolstrip button + The Graphics object to handle + The parent Toolstrip + + + + Draws the Toolstrip background + + The Toolstrip being drawn + The Graphics object to handle + The affected bounds + + + + Draws a Toolstrip split-button + + The Toolstrip split-button + The Graphics object to handle + The parent Toolstrip + + + + Draws the Statusbar background + + The Statusbar being drawn + The Graphics object to handle + The affected bounds + + + + Draws a Menustrip item + + The Menustrip item + The Graphics object to handle + The parent Toolstrip + + + + Covers the button background rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Applies any and all changes made to the Renderer + + + + + A class designed to be used in the EasyRender master control to customize the look and feel of the base Toolstrip + + + + + Creates a new IToolstrip class for customization + + + + + Creates a new IToolstrip class for customization + + The IToolstrip to import the settings from + + + + Disposes of the IToolstrip class and clears all resources related to it + + + + + Gets or sets the color of the Toolstrip background gradient from the top + + + + + Gets or sets the color of the Toolstrip background gradient from the bottom + + + + + Gets or sets the blending that will occur when rendering the Toolstrip background + If set to null, the Toolstrip will simply draw the gradient + + + + + Gets or sets the angle which the Toolstrip background will be drawn + + + + + Gets or sets the color of the Toolstrip border gradient from the top + + + + + Gets or sets the color of the Toolstrip border gradient from the bottom + + + + + Gets or sets the blending that will occur when rendering the Toolstrip border + If set to null, the Toolstrip will simply draw the border + + + + + Gets or sets the angle which the Toolstrip border will be drawn + + + + + Gets or sets the curve of the border of the Toolstrip + + + + + Imports the settings from a previous or pre-defined IToolstrip and applies it to the current + + The IToolstrip to import the settings from + + + + Sets the blending for both border and background to their defaults + + + + + + + + + + Creates a new IToolstripControls class for customization + + + + + Disposes of the IToolstripControls class and clears all resources related to it + + + + + Gets or sets the color of the Toolstrip seperator on the dark side + + + + + Gets or sets the color of the Toolstrip seperator on the light side + + + + + Gets or sets the height of the Toolstrip seperator control + + + + + Gets or sets the color of the grip dots/line at the top + + + + + Gets or sets the color of the grip shadow + + + + + Gets or sets in what mode the grip will be drawn + + + + + Gets or sets the distance, in pixels, between each grip dot + + + + + Gets or sets the size of the dots or lines for the grip + + + + + Imports the settings from a previous or pre-defined IToolstripControls and applies it to the current + + The IToolstripControls to import the settings from + + + + + + + + + Creates a new IButton class for customization + + + + + Creates a new IButton class for customization + + The IButton to import the settings from + + + + Disposes of the IButton class and clears all resources related to it + + + + + Gets or sets the color of the Button background at the top, when hovered over + + + + + Gets or sets the color of the Button background at the bottom, when hovered over + + + + + Gets or sets the color of the Button background at the top, when clicked + + + + + Gets or sets the color of the Button background at the bottom, when clicked + + + + + Gets or sets the blending that will occur when rendering the Button background + If set to null, the Button will simply draw the gradient + + + + + Gets or sets the angle which the Button background will be drawn + + + + + Gets or sets the color of the Button border gradient from the top + + + + + Gets or sets the color of the Button border gradient from the bottom + + + + + Gets or sets the blending that will occur when rendering the Button border + If set to null, the Button will simply draw the border + + + + + Gets or sets the angle which the Button border will be drawn + + + + + Gets or sets the color of the inside border + + + + + Gets or sets when to apply the rendering ("Normal" does not apply here) + + + + + Gets or sets the curve of the border of the Button + + + + + Imports the settings from a previous or pre-defined IButton and applies it to the current + + The IButton to import the settings from + + + + Sets the blending for both border and background to their defaults + + + + + + + + + + Creates a new IButton class for customization + + + + + Creates a new IButton class for customization + + The IButton to import the settings from + + + + Disposes of the IButton class and clears all resources related to it + + + + + Gets or sets the color of the Button background at the top, when hovered over + + + + + Gets or sets the color of the Button background at the bottom, when hovered over + + + + + Gets or sets the blending that will occur when rendering the Button background + If set to null, the Button will simply draw the gradient + + + + + Gets or sets the angle which the Button background will be drawn + + + + + Gets or sets the color of the Button border gradient from the top + + + + + Gets or sets the color of the Button border gradient from the bottom + + + + + Gets or sets the blending that will occur when rendering the Button border + If set to null, the Button will simply draw the border + + + + + Gets or sets the angle which the Button border will be drawn + + + + + Gets or sets the color of the inside border + + + + + Gets or sets when to apply the rendering ("Normal" and "Click" do not apply here) + + + + + Gets or sets the curve of the border of the Button + + + + + Imports the settings from a previous or pre-defined IDropDownButton and applies it to the current + + The IDropDownButton to import the settings from + + + + Sets the blending for both border and background to their defaults + + + + + + + + + + Creates a new ISplitButton class for customization + + + + + Disposes of the ISplitButton class and clears all resources related to it + + + + + Gets or sets the color of the Button background at the top, when hovered over + + + + + Gets or sets the color of the Button background at the bottom, when hovered over + + + + + Gets or sets the color of the Button background at the top, when clicked + + + + + Gets or sets the color of the Button background at the bottom, when clicked + + + + + Gets or sets the blending that will occur when rendering the Button background + If set to null, the Button will simply draw the gradient + + + + + Gets or sets the angle which the Button background will be drawn + + + + + Gets or sets the color of the Button border gradient from the top + + + + + Gets or sets the color of the Button border gradient from the bottom + + + + + Gets or sets the blending that will occur when rendering the Button border + If set to null, the Button will simply draw the border + + + + + Gets or sets the angle which the Button border will be drawn + + + + + Gets or sets the color of the inside border + + + + + Gets or sets when to apply the rendering ("Normal" does not apply here) + + + + + Gets or sets the curve of the border of the Button + + + + + Gets or sets when to display the drop-down arrow + + + + + Gets or sets the color of the drop-down arrow + + + + + Imports the settings from a previous or pre-defined ISplitButton and applies it to the current + + The ISplitButton to import the settings from + + + + Sets the blending for both border and background to their defaults + + + + + + + + + + Creates a new IPanel class for customization + + + + + Disposes of the IButton class and clears all resources related to it + + + + + Gets or sets the color of the gradient at the top of the content panel + + + + + Gets or sets the color of the gradient at the bottom of the content panel + + + + + Gets or sets whether each panel inherits the shading from the content panel + + + + + Gets or sets the angle which the background gradient is drawn + + + + + Gets or sets the blend of the background + + + + + Gets or sets a mode to render the background in + + + + + + + + + + Creates a new IStatusBar class for customization + + + + + Disposes of the IButton class and clears all resources related to it + + + + + Gets or sets the color of the gradient of the background at the top + + + + + Gets or sets the color of the gradient of the background at the bottom + + + + + Gets or sets the blending that will apply to the background + + + + + Gets or sets the angle which the background gradient will be drawn + + + + + Gets or sets the color of the dark border + + + + + Gets or sets the color of the light border + + + + + Gets or sets the color of the grip at the top-most + + + + + Gets or sets the color of the grip at the bottom-most + + + + + Gets or sets the spacing of the grip blocks + + + + + Imports the settings from a previous or pre-defined IStatusBar and applies it to the current + + The IStatusBar to import the settings from + + + + Sets the blending for both border and background to their defaults + + + + + A class designed to be used in the EasyRender master control to customize the look and feel of the base Menustrip + + + + + Creates a new IToolstrip class for customization + + + + + Creates a new IMenustrip class for customization + + The IMenustrip to import the settings from + + + + Disposes of the IMenustrip class and clears all resources related to it + + + + + Gets or sets the color of the menu-strip border (dark) + + + + + Gets or sets the color of the menu-strip border (light) + + + + + Gets or sets how the background of the menu-strip is inherited + + + + + If inheritence is set to none, the color of the background gradient at the top + + + + + If inheritence is set to none, the color of the background gradient at the bottom + + + + + If inheritence is set to none, the blending option for the background + + + + + Gets or sets the color of the margin gradient at the left + + + + + Gets or sets the color of the margin gradient at the right + + + + + Gets or sets the color of the margin border (displayed to the right) + + + + + Gets or sets the color of the root menu-strip button background when it is selected + + + + + Gets or sets the color of the root menu-strip button border when it is selected + + + + + Gets or sets the color of the seperator dark color + + + + + Gets or sets the color of the seperator light color + + + + + Gets or sets the inset position of the seperator from the left + + + + + Gets the class that handles the look and feel of the menu-strip items + + + + + Imports the settings from a previous or pre-defined IMenustrip and applies it to the current + + The IMenustrip to import the settings from + + + + Sets the blending for the background to it's default + + + + + Defines when to show an arrow + + + + + + + + + + + + + + + + + + + + Defines when to use a blend property + + + + + Use the blend when the object is drawn + + + + + Use the blend when the object is hovered over + + + + + Use the blend when the object is clicked + + + + + Use the blend when the object is checked + + + + + Always use the blend regardless of the state of the object + + + + + Defines a method of drawing a grip on a control + + + + + Draws the grip as a set of dots + + + + + Draws the grip as two lines + + + + + Does not draw the grip at all, but the object remains moveable + + + + + Defines a specific type of button to search by + + + + + + + + + + + + + + + + + + + + + + + + + Defines a method for background or object inheritence + + + + + + + + + + + + + + + Defines a method of rendering + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 主菜单 + + + + + 背景透明的工具条 + + + + + 银白色至白色渐变 + + + + + 白色至银白色渐变 + + + + + + + + + + + + + + + 当前工作区窗体所关联并激活的工具栏 + + + + + 模拟运行时的外观 + + + + + Represents the visual state of an image list view item. + + + + + 没有任何选择状态,处于一般正常状态 + + + + + 项处于选中状态 + + + + + 鼠标滑过 + + + + + 控件的高度根据内容自动调整,忽略外部设置 + + + + + 边框宽度 + + + + + 文本和description文本之间的间距 + + + + + 最大显示的项数 + + + + + + + + + + 是否显示说明字段,此属性不影响弹出面板是否显示 + 弹出面板是否显示由DescriptionMember是否设置决定 + + + + + + + + + + + + + + + 下拉列表的布局模式 + + + + + + + + + + 是否允许空 + + + + + + + + + + 测量当前控件应该的高度 + + + + + + 整个可用的绘图表面 + + + + + 右边按钮的绘图表面 + + + + + 绘制边框 + + + + + + 绘制背景 + + + + + + 绘制文本 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 当前热点项生改变 + + + + + + + + + + + + + + + + + + + + + 通过外能事件获取用于绘制项的文本 + + + + + + + + + + + + + + + + + + + + + + + + + + 标题 + + + + + 验证失败时是否需要高亮显示(改变背景色) + + + + + + + + + + + + + + + + + + + + + + 排序箭头开始颜色 + + + + + 排序箭头开始颜色 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 控件的背景画布颜色 + 因为控件的边框和过度色都有依靠改变透明度实现渐变,所以一个白色的底版就非常重要 + 使过度色不受控件本身背景色的影响,光不绘制背景不行,要刷上白色背景 + + + + + 控件背景色 + + + + + + + + + + + + + + + 边框颜色 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the visual state of an image list view item. + + + + + 没有任何选择状态,处于一般正常状态 + + + + + 项处于选中状态 + + + + + 该项具有输入焦点 + + + + + 鼠标滑过 + + + + + + + + + + The item is not visible. + + + + + The item is partially visible. + + + + + The item is fully visible. + + + + + 布局方式 + + + + + 标准布局 + + + + + 使项带有描述的布局 + + + + + 双击项事件参数 + + + + + + + + + + + + + + + + 项被删除事件参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 为项绘制带有描述信息的渲染器 + + + + + 字的高度是否已初始化 + 在第一次绘制时,测量文本的高度 + + + + + + + + + + + 默认布局引擎,以类似微软ListView的方式按行排列项 + + + + + 框选的最短开始长度 + + + + + 框选时滚动条的自动滚动速度 + + + + + 用于鼠标框选时,框出了控件中项的显示范围时,自动滚动滚动条 + + + + + 自动滚动时,滚动值 + + + + + 是否处于框选状态中 + + + + + 内框offset,内框offset是绝对相对于滚动条的 + + + + + 整个可显示项的边界的offset,包括上下padding部分 + + + + + 鼠标按下时项区域边界的offset,即 _itemsAreaOffset + 用于框选时,跨越可视部队画框 + + + + + 当前所能显示的最大行数 + + + + + + + + + + Gets whether the shift key is down. + + + + + Gets whether the control key is down. + + + + + + + + + + + + + + + + + + + + + + + + + 没有任何项 + + + + + 没有任何项处于可显示状态 + + + + + 整个控件区域 + + + + + 整个可用于绘制项的可视区域 + 去除左右Padding部分,去除滚动条 + + + + + 用于绘制项的区域 + 考虑边距间隔大小和滚动条区域 + + + + + 项的尺寸 + 不放在ListView本身中定义而是放在LayoutManager中定义,是因为不同的布局方式 + 可能会是带长宽的Size做为itemSize,比如平铺的方式 + + + + + 项周围的边距 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 更新整个布局引擎的状态 + + + + + 判断指定的项是否处于可见状态 + + + + + + + 获取项的呈现区域 + + + + + + + + + + + + + + + + + + + + 获取当前所有可见项 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Calculates the maximum number of rows and columns + that can be fully displayed. + + + + + 计算当前可见项的index范围 + + + + + 更新滚动条状态 + + + + + 创建框选框 + + + + + + 根据矩形区域选择项 + + + + + + 应用导航键,如上下左右,返回应用导航键之后的项的坐标 + + + + + 使指定下标的项处于可见状态 + + + + + + 默认渲染器,不绘制项的实际内容,但是绘制DEBUG信息 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 用于子类重写时删除相应的缓存 + + + + + + 绘制项的背景 + + The System.Drawing.Graphics to draw on. + The client coordinates of the item area. + + + + 绘制最终的前景 + + + + + + 绘制选择边框 + + The System.Drawing.Graphics to draw on. + The client coordinates of the selection rectangle. + + + + 绘制项的边框 + + + + + + + + 绘制项 + + + + + + + 绘制项的背景 + + + + + + + 绘制项的内容 + + + + + + + + 绘制背景 + + + + + + 绘制当前所有可见项 + + + + + + Renders the selection rectangle. + + The graphics to draw on. + + + + 默认渲染器,以类似微软ListView的方式按行绘制项,只绘制简单的文本 + + + + + 字的高度是否已初始化 + 在第一次绘制时,测量文本的高度 + + + + + + + + + + + + + + + + + + + + + + + + + 项的背景色 + + + + + 控件背景色 + + + + + 项的边框色 + + + + + 选择框颜色 + + + + + 选择框的边框色 + + + + + 当控件具有焦点时选定项的背景色 + + + + + + + + + + 控件失去焦点时选定项的背景色 + + + + + + + + + + 热点项的背景色 + + + + + + + + + + 图像内边框颜色 + + + + + 图像外边框颜色 + + + + + + + + + + Creates a control with a border. + + + + + Specifies that the control has a border with a sunken edge. + + + + + + + + + + 是否需要在调用 ResumeLayout 时重绘 + + + + + 为项扩展的用于呈现的属性 + + + + + Gets whether the shift key is down. + + + + + Gets whether the control key is down. + + + + + 鼠标左键是否处于按下状态 + + + + + 鼠标右键是否处于按下状态 + + + + + 鼠标最后点击的位置 + + + + + 当前鼠标经过的项 + + + + + + + + + + + + + + + 配色方案 + + + + + 当前布局中项的高度 + + + + + + + + + + 是否没有任何项 + + + + + + + + + + 获取当前具有输入焦点的项 + + + + + 默认的用于呈现为项中文本的Property + + + + + + + + + + 更改了选择的项 + + + + + 双击项 + + + + + + 请求在下次调用 ResumeLayout 时重绘 + + + + + 获取当前选中的所有项 + + + + + + + + + + + + 设置扩展属性供特定LayoutEngine使用 + 如果指定的 ExtendMember 已存在,覆盖之 + 用String.Empty 或 null 做为 propertyName传入,表示删除指定的 member + + + + + + + + + + + + + + + + + + + + + 恢复正常的布局逻辑。 + + + + + + + + + + + 临时挂起控件的布局逻辑。 + + + + + + + + + + 获取当前选中项所绑定的对象 + 如果没有选中项,返回null,如果选中多项,返回选中项集合中的第一个 + + + + + + 根据指定的绑定项对象 + 设置当前列表中选定的项 + + + + + + 获取当前选中的所有项的绑定对象集合 + 如果当前没有选中任何项,返回空集合 + + + + + + 取消所有项的选择 + + + + + + + + + + + + + + + + 获取创建控件句柄时所需要的创建参数 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 更改了选择的项 + + + + + 双击项 + + + + + 项被删除 + + + + + 通过外能事件获取用于绘制项的文本 + + + + + Represents the color palette of the image list view. + + + + + Gets or sets the background color of the ImageListView control. + + + + + Gets or sets the background color of the ImageListViewItem. + + + + + Gets or sets the background color of alternating cells in Details View. + + + + + Gets or sets the border color of the ImageListViewItem. + + + + + Gets or sets the foreground color of the ImageListViewItem. + + + + + Gets or sets the background gradient color1 of the ImageListViewItem if the control is not focused. + + + + + Gets or sets the background gradient color2 of the ImageListViewItem if the control is not focused. + + + + + Gets or sets the border color of the ImageListViewItem if the control is not focused. + + + + + Gets or sets the fore color of the ImageListViewItem if the control is not focused. + + + + + Gets or sets the background gradient color1 if the ImageListViewItem is hovered. + + + + + Gets or sets the background gradient color2 if the ImageListViewItem is hovered. + + + + + Gets or sets the border color of the ImageListViewItem if the item is hovered. + + + + + Gets or sets the color of the insertion caret. + + + + + Gets or sets the background gradient color1 if the ImageListViewItem is selected. + + + + + Gets or sets the background gradient color2 if the ImageListViewItem is selected. + + + + + Gets or sets the border color of the ImageListViewItem if the item is selected. + + + + + Gets or sets the fore color of the ImageListViewItem if the item is selected. + + + + + Gets or sets the background gradient color1 of the column header. + + + + + Gets or sets the background gradient color2 of the column header. + + + + + Gets or sets the background hover gradient color1 of the column header. + + + + + Gets or sets the background hover gradient color2 of the column header. + + + + + Gets or sets the cells foreground color of the column header text. + + + + + Gets or sets the cells background color if column is selected in Details View. + + + + + Gets or sets the color of the separator in Details View. + + + + + Gets or sets the foreground color of the cell text in Details View. + + + + + Gets or sets the foreground color of alternating cells text in Details View. + + + + + Gets or sets the background color of the image pane. + + + + + Gets or sets the separator line color between image pane and thumbnail view. + + + + + Gets or sets the color of labels in pane view. + + + + + Gets or sets the image inner border color for thumbnails and pane. + + + + + Gets or sets the image outer border color for thumbnails and pane. + + + + + Gets or sets the background color1 of the selection rectangle. + + + + + Gets or sets the background color2 of the selection rectangle. + + + + + Gets or sets the color of the selection rectangle border. + + + + + Initializes a new instance of the ImageListViewColor class. + + + + + Initializes a new instance of the ImageListViewColor class + from its string representation. + + String representation of the object. + + + + Copies color values from the given object. + + The source object. + + + + Represents the default color theme. + + + + + Represents the noir color theme. + + + + + Represents the mandarin color theme. + + + + + Sets the color palette to default colors. + + + + + Sets the color palette to mandarin colors. + + + + + Sets the color palette to noir colors. + + + + + Determines whether all color values of the specified + ImageListViewColor are equal to this instance. + + The object to compare with this instance. + true if the two instances have the same color values; + otherwise false. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in + hashing algorithms and data structures like a hash table. + + + + + Returns a string that represents this instance. + + + A string that represents this instance. + + + + + 测试坐标 + + + + + 项的坐标 + + + + + 是否点击了项 + + + + + + + + + + + + + + + + + + + + + + 该项当前的选中状态 + + + + + + + + + + + + + + + + + + + + 所绑定的对象 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 将指定的事件移动到(紧邻)另一个事件之前 + + + + + + + 将指定的事件移动到(紧邻)另一个事件之后 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Modify a WinForms TreeView control to use the new Explorer style theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WM_COPYDATA消息所要求的数据结构 + + + + + + + + + + + + + + + + + + + + + + + + + 通过窗口的标题来查找窗口的句柄 + + + + + + + + 发送 Windows 消息 + + + + + + + + + + 还原 + + + + + 移动 + + + + + 大小 + + + + + 最小化 + + + + + 最大化 + + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 发送消息,只能传递一个自定义的消息ID和消息字符串,想传一个结构,但没成功 + + 目标进程名称,如果有多个,则给每个都发送 + 自定义数据,可以通过这个来决定如何解析下面的strMsg + 传递的消息,是一个字符串 + + + + 接收消息,得到消息字符串 + + System.Windows.Forms.Message m + 接收到的消息字符串 + + + + + + + + + 最大圆角半径 + + + + + 最小矩形边长,用于自动处理圆角大小 + + + + + 绘制一个圆角矩形. + + 当前屏幕的图形对象 + 画笔 + 矩形左上角X坐标 + 矩形左上角Y坐标 + 矩形右下角X坐标 + 矩形右下角Y坐标 + 圆角的半径长度 + + + + 绘制一个圆角矩形. + + 当前屏幕的图形对象 + 画笔 + 要绘制的矩形对象 + 圆角的半径长度 + + + + 绘制一个圆角矩形. + + 当前屏幕的图形对象 + 画笔 + 要绘制的矩形对象 + + + + 填充一个圆角矩形. + + 当前屏幕的图形对象 + 笔刷 + 矩形左上角X坐标 + 矩形左上角Y坐标 + 矩形右下角X坐标 + 矩形右下角Y坐标 + 圆角的半径长度 + + + + 填充一个圆角矩形. + + 当前屏幕的图形对象 + 笔刷 + 要填充的矩形 + 填充区域针对矩形的缩进距离 + 圆角的半径长度 + + + + 填充一个圆角矩形. + + 当前屏幕的图形对象 + 笔刷 + 要填充的矩形 + + + + 使图片单色化 + + + + + + + 获取颜色 + + + + + + + + + + + + + 颜色变化时激发 + + + + + + + + + + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + diff --git a/Bin/混淆_Debug.nrproj b/Bin/混淆_Debug.nrproj new file mode 100644 index 0000000..85e7a16 --- /dev/null +++ b/Bin/混淆_Debug.nrproj @@ -0,0 +1,127 @@ + + Debug\CarSongManage\CarSongManage.exe + + Debug\CarSongManage\ryControls.dll + + + Debug\CarSongManage\ryUpdate.dll + + + Debug\CarSongManage\MyDb_SQLite.dll + + + Debug\CarSongManage\MyDb.dll + + + true + true + false + + + + http://timestamp.verisign.com/scripts/timstamp.dll + http://sha256timestamp.ws.symantec.com/sha256/timestamp + false + true + false + false + true + false + + + <AssemblyLocation>\Secure\<AssemblyFileName> + true + + + true + true + false + false + 9 + true + false + false + false + true + false + false + false + false + false + false + false + false + false + + false + false + false + false + + false + false + false + false + false + true + true + All + + false + + + true + false + Trial_Days + 14 + false + 20180503 + false + 10 + false + 5 + + true + true + + + + true + You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. Your trial period is expired! You need to purchase a license to run this software. + true + Your expiration date is reached! You need to purchase a license file to run this software. + true + You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. Your trial period is expired! You need to purchase a license to run this software. + true + You can only run maximal [max_processes] instances of this software at the same time. + true + This software won't run without a valid license file. Either a valid license file could not be found or your license file is expired. + false + Nag Screen! This message will disappear when a valid license file is installed. You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. You have [minutes_days_left] days left. You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. + -1 + + Lock System + 255255255 + 157211252 + + + false + false + Trial_Days + 1 + false + 20180503 + false + true + true + false + true + ####-####-####-####-#### + false + 10 + false + 5 + + Hr7YPNVEOuGLGJrWzxt2hKWI0xXn4h31i5nGAghNonQ=|<RSAKeyValue><Modulus>twxUWoRvbb2N6CMXQL36TBij9G7nxvU6rTULmVnbS1jYTvPQSKohB2o95vJvdlxjw7KBxYhIFqj9yEn5xvD4GVhj8+MEvG4lNqN1e1FErGin9YYYr4dTZHFe73aG5xxoscKZIg3YYdoBp0lgE2xwfaHyYe03M3mbhQx6axyf7Ak=</Modulus><Exponent>AQAB</Exponent><P>6OP29NbAV7sOKvOFRIeBbnJLh4fOiAjGtqiBlHLyOHt6w1s8N4o4Kr3N2KPVcpj82655KRzRlVDkwQika4eZ9w==</P><Q>yTY83K4a/WpcifMvuAFEuM9wVfXtbQUpV0MSSNgCmWcd6G3+GYShmPUW1gWMv+4H59iiPef1pnXvuzPYnQMp/w==</Q><DP>J/h4Oi1hda01EUoaZVicbkhPjkNQvyhCcrcZBlF0IR2QRFc0TpP6b9uDqNr1l2WKgGnBgbzge7AWksrY7VuooQ==</DP><DQ>PtmhQzFjHts1UqXStwA2bh/lsAQkiJQ/KJG7yWMn1LEAB5Ur9N6X94Y+/tU29NCuSX5Cl2G4OqnGG0yDke/mEw==</DQ><InverseQ>jiKqvwfWSUpKybcT3ucAedpT+kKuB/Qs1xJ0Z6bYOE8EsljxGbq8428Cma5rp33WMP6ybq2HwOddm/73ZFZZKQ==</InverseQ><D>bYP46/cUW8nvHxXvkZKYL/MGFPZNwaFyq7Jy8BrssxXCxOnmkbMH89HCm2ws99mq7qjcL3yr9LLCs5Re1oHRTQT2Vu2hXuGAGVjvHwYPLWGvcYvIuTWoTEw79m+lh/7CYDxfwzwWL095a8D40OvfHauk7xrXDB+qIsEJ7Gkjh0k=</D></RSAKeyValue> + + \ No newline at end of file diff --git a/Bin/混淆_Release.nrproj b/Bin/混淆_Release.nrproj new file mode 100644 index 0000000..eeacd8e --- /dev/null +++ b/Bin/混淆_Release.nrproj @@ -0,0 +1,127 @@ + + Release\CarSongManage\CarSongManage.exe + + Release\CarSongManage\ryControls.dll + + + Release\CarSongManage\ryUpdate.dll + + + Release\CarSongManage\MyDb_SQLite.dll + + + Release\CarSongManage\MyDb.dll + + + true + true + false + + + + http://timestamp.verisign.com/scripts/timstamp.dll + http://sha256timestamp.ws.symantec.com/sha256/timestamp + false + true + false + false + true + false + + + <AssemblyLocation>\Secure\<AssemblyFileName> + true + + + true + true + false + false + 9 + true + false + false + false + true + false + false + false + false + false + false + false + false + false + + false + false + false + false + + false + false + false + false + false + true + true + All + + false + + + true + false + Trial_Days + 14 + false + 20180503 + false + 10 + false + 5 + + true + true + + + + true + You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. Your trial period is expired! You need to purchase a license to run this software. + true + Your expiration date is reached! You need to purchase a license file to run this software. + true + You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. Your trial period is expired! You need to purchase a license to run this software. + true + You can only run maximal [max_processes] instances of this software at the same time. + true + This software won't run without a valid license file. Either a valid license file could not be found or your license file is expired. + false + Nag Screen! This message will disappear when a valid license file is installed. You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. You have [minutes_days_left] days left. You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. + -1 + + Lock System + 255255255 + 157211252 + + + false + false + Trial_Days + 1 + false + 20180503 + false + true + true + false + true + ####-####-####-####-#### + false + 10 + false + 5 + + Hr7YPNVEOuGLGJrWzxt2hKWI0xXn4h31i5nGAghNonQ=|<RSAKeyValue><Modulus>twxUWoRvbb2N6CMXQL36TBij9G7nxvU6rTULmVnbS1jYTvPQSKohB2o95vJvdlxjw7KBxYhIFqj9yEn5xvD4GVhj8+MEvG4lNqN1e1FErGin9YYYr4dTZHFe73aG5xxoscKZIg3YYdoBp0lgE2xwfaHyYe03M3mbhQx6axyf7Ak=</Modulus><Exponent>AQAB</Exponent><P>6OP29NbAV7sOKvOFRIeBbnJLh4fOiAjGtqiBlHLyOHt6w1s8N4o4Kr3N2KPVcpj82655KRzRlVDkwQika4eZ9w==</P><Q>yTY83K4a/WpcifMvuAFEuM9wVfXtbQUpV0MSSNgCmWcd6G3+GYShmPUW1gWMv+4H59iiPef1pnXvuzPYnQMp/w==</Q><DP>J/h4Oi1hda01EUoaZVicbkhPjkNQvyhCcrcZBlF0IR2QRFc0TpP6b9uDqNr1l2WKgGnBgbzge7AWksrY7VuooQ==</DP><DQ>PtmhQzFjHts1UqXStwA2bh/lsAQkiJQ/KJG7yWMn1LEAB5Ur9N6X94Y+/tU29NCuSX5Cl2G4OqnGG0yDke/mEw==</DQ><InverseQ>jiKqvwfWSUpKybcT3ucAedpT+kKuB/Qs1xJ0Z6bYOE8EsljxGbq8428Cma5rp33WMP6ybq2HwOddm/73ZFZZKQ==</InverseQ><D>bYP46/cUW8nvHxXvkZKYL/MGFPZNwaFyq7Jy8BrssxXCxOnmkbMH89HCm2ws99mq7qjcL3yr9LLCs5Re1oHRTQT2Vu2hXuGAGVjvHwYPLWGvcYvIuTWoTEw79m+lh/7CYDxfwzwWL095a8D40OvfHauk7xrXDB+qIsEJ7Gkjh0k=</D></RSAKeyValue> + + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7015218 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,4 @@ +### 2022-02-12更新 +------ +#### CarSongManage V1.0.2202.1201 +- *.[初始版本] diff --git a/README.md b/README.md new file mode 100644 index 0000000..798eecf --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# 车载歌曲维护 + +#### 基础介绍 + +车机与NAS媒体管家是一款专注于管理车机音乐、MV与NAS上的电影电视剧的软件。 + +#### 功能介绍 + +- **歌词转码:**将lrc歌词文件自动转码成符合要求的utf8编码。 +- **歌曲情况:**自动显示歌曲文件对应的写真数量、歌词情况。 +- **同步到U盘:**自动将本地歌曲文件和对应歌词、写真同步到U盘。 +- **音乐软件写真:**自动加载酷我音乐的歌手写真图片,并可以搜索、保存。 +- **电影命名助手:**提供电影文件、字幕、nfo文件,自动命名成统一的格式。 + diff --git a/Source/CarSongManage/.vs/CarSongManage/FileContentIndex/cc429cb8-cc17-40f9-a31c-ef82f0cf8a8b.vsidx b/Source/CarSongManage/.vs/CarSongManage/FileContentIndex/cc429cb8-cc17-40f9-a31c-ef82f0cf8a8b.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..64ea4173abaf0fd984df842900fb5dfa84220868 GIT binary patch literal 156735 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�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 V-A{e21~~Xv_;p^;>i + + + ryControls + + + +