commit 317bea9fd3f677c96a08824118c62a5e3df3e306 Author: 紫林 Date: Thu Sep 19 10:13:09 2019 +0800 TimeClock V1.0.1909.0907 *.[新增]便笺新增支持插入图片 *.[改进]改进便笺切换编辑状态的逻辑,在后台不会切换为编辑状态。 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..58f8c3f --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +Publish/ +Res/ +**/obj +*.pdb +**/dcu +*.dcu +**/Secure \ No newline at end of file diff --git a/Bin/Debug/MyTimeClock/CoreAudio.dll b/Bin/Debug/MyTimeClock/CoreAudio.dll new file mode 100644 index 0000000..525f1e5 Binary files /dev/null and b/Bin/Debug/MyTimeClock/CoreAudio.dll differ diff --git a/Bin/Debug/MyTimeClock/MyDb.dll b/Bin/Debug/MyTimeClock/MyDb.dll new file mode 100644 index 0000000..836aafd Binary files /dev/null and b/Bin/Debug/MyTimeClock/MyDb.dll differ diff --git a/Bin/Debug/MyTimeClock/MyDb.xml b/Bin/Debug/MyTimeClock/MyDb.xml new file mode 100644 index 0000000..6e82313 --- /dev/null +++ b/Bin/Debug/MyTimeClock/MyDb.xml @@ -0,0 +1,3918 @@ + + + + MyDb + + + + + 基于XML实现的权限类 + + + + + 用户名 + + + + + 用户id + + + + + 密码 + + + + + 权限控制Id + + + + + 用户备注 + + + + + 是否是管理员权限 + + + + + 是否是超级管理员权限 + + + + + 设置权限 + + 权限名称 + 权限值 + 返回是否设置成功 + + + + 获取权限 + + 权限名称 + 默认权限值 + 返回权限值 + + + + 获取权限 + + 权限名称 + 返回权限值 + + + + 批量导入权限 + + 权限相关的内容 + 返回是否执行成功 + + + + 导出权限 + + 返回导出文本 + + + + 清除所有权限 + + 返回是否执行成功 + + + + Ini操作类 + + + + + 获取所有节点名称(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节点 + + + + + + 设置管理类,快速添加设置。 + + + + + 设置管理类,快速添加设置。 + + + + + 设置管理类,快速添加设置。 + + + + + + 存储类型 + + + + + 配置存储路径 + + + + + 设置XML内容 + + + + + 添加控件 + + + + + + + + 设置值 + + + + + + + + 添加控件 + + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 添加控件 + + + + + + + + + 读取配置 + + + + + 保存配置 + + + + + 控件信息 + + + + + 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为失败 + + + + 读取指定节点的值 + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取属性值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取所有的节点名称 + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取XML文件的根元素 + + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 新增节点 + + + + + + + + 新增节点并定位到新节点 + + + + + + + + 新增设置节点并定位 + + + + + + 在指定节点前新增节点并定位到新节点 + + + + + + + + + 获取当前节点 + + + + + + 删除节点 + + + + + + 获取XML文本 + + + + + + 获取XML文本 + + + + + + 获取文本 + + + + + + 获取文本 + + + + + + 字符串操作类 + + + + + 字符串转Base64 + + + + + + + Base64转字符串 + + + + + + + 转换指定字符串为布尔类型 + + + + + 转换指定字符串为Double类型 + + + + + 已重载.计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 已重载.计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定布尔类型为Int类型,true为1,false为0 + + + + + 判断指定字符串是否是布尔类型 + + + + + 判断指定字符串是否是Double类型 + + + + + 判断指定字符串是否是Int类型 + + + + + 根据年月日转换成日期 + + + + + + + + + 追加字符 + + + + + 获取2个字符串中间的内容,point1为空表示从首位开始算,point2为空表示算到结尾。 + + + + + 判断字符串是否是数字或英文 + + + + + + + 判断字符串是否匹配,支持?*通配符 + + 待匹配的字符串 + 匹配的通配符 + + + + + 通配符替换 + + + + + + + + + 获取匹配的内容 + + + + + + + + + 对变量的拓展 + + + + + 替换文本(忽略大小写) + + + 需要替换的内容 + 替换后的内容 + + + + + 替换文本(忽略大小写),可支持通配符 + + + + + 是否是通配符表达式,不是,则普通替换,忽略大小写,是,则启用通配符替换 + + + + + 获取符合要求的第一个结果 + + + + 是否是正则 + + + + + 查找字符串,忽略大小写 + + + + + + + + + 查找字符串,忽略大小写 + + + + + + + + 判断字符串是否是数字或英文 + + + + + + + 是否在指定范围内 + + + + + + + + + 是否在指定范围内 + + + + + + + + + 转换指定字符串为Int类型 + + + 最小值 + 最大值 + 如果字符串不在范围内,则使用本默认值 + + + + + 转换指定布尔类型到Int类型,true为1,false为0 + + + + + + + 将指定类型转换成整型 + + + + + + + + 将指定类型转换成整型 + + + + + + + 将指定类型转换成长整型 + + + + + + + + 转换指定类型为Double类型 + + + + + + + + 转换指定类型为Double类型 + + + + + + + 转换DateTime类型到日期时间字符串 + + + + + + + 转换DateTime类型到日期字符串 + + + + + + + 转换DateTime类型到日期星期字符串 + + + + + + + 转换DateTime类型到Unix时间戳 + + + + + + + 转换Unix时间戳到DateTime类型 + + + + + + + 判断字符串是否与内容匹配 + + + + + + + + 将变量值转换成Double类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换到文件大小字符串 + + + + + + + 转换到文件大小字符串 + + + + + + + 转换指定类型为Decimal类型 + + + + + + + + 将变量值转换成Decimal类型 + + + + + + + 将变量值转换成Decimal类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换指定类型为DateTime类型 + + + + + + + + 将变量值转换成DateTime类型 + + + + + + + 转换指定类型为布尔类型 + + + + + + + 追加字符 + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + + + + 判断指定字符串是否是Int类型 + + + + + + + 判断指定字符串是否是Double类型 + + + + + + + 判断是否是布尔类型 + + + + + + + 将字符串转换为Base64类型 + + + + + + + 判断字符串是否在指定长度 + + + + + + + + + 判断能否转换成日期格式 + + + + + + + 文件信息 + + + + + 获取版本号 + + + + + 获取版本号 + + + + + + + 判断是否是管理员方式运行 + + + + + + 音频播放类 + + + + + 临时音频文件 + + + + + 父窗口句柄 + + + + + 声音标签 + + + + 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,否则,返回错误代码 + + + + 删除单个文件。 + + 删除的文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 删除一组文件。 + + 字符串数组,表示一组文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 移动文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + + + + + 移动一个文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 + + + + 移动一组文件到指定的路径下 + + 要移动的文件名数组 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制一组文件到指定的路径 + + 要复制的文件名数组 + 复制到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 重命名一个文件为新名称,建议您使用更方便的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 格式 + + + + + + + 新模态窗体 + + + + + 设置窗体返回的结果值,并关闭窗体。 + + 当前窗体 + 模态变量 + 防止 + + + + 窗体返回的结果事件 + + + + + + + 当打开的窗体返回结果时激发 + + + + + 窗体返回的状态 + + + + + 实例化类 + + 父窗体,如果为null,则取桌面为父窗体 + + + + + 获取最顶级的父窗口 + + + + + + 显示新模态窗体,会暂时禁用父窗体,关闭当前窗体后,父窗体会恢复。 + + + + + 只运行一个实例,打开后,所有窗体都依然有效。 + + + + + + 显示窗体 + + 显示的位置 + + + + 显示在父窗体中间 + + + + + 窗体显示位置 + + + + + 右上角 + + + + + 顶部中间 + + + + + 顶部右边 + + + + + 中间 + + + + + 左下角 + + + + + 底部中间 + + + + + 右下角 + + + + + 父窗体居中 + + + + + 日期时间的操作类 + + + + + 获取当前是周几,周一到周日,分别是1-7. + + + + + + + 获取当前是周几,1-7,分别是返回一到日. + + + + + + + 获取当前是周几,输入日期,根据周几,分别是返回一到日. + + + + + + + 获取一周的开始和结束,开始时间为第一天的0点,结束时间以最后一天的0点为结束时间 + + + + + + + 获取2个日期相差几周 + + + + + + + + 获取2个日期相差几个月 + + + + + + + + 获取一个月的开始 + + + + + + + 判断是否在同一个星期。 + + + + + + + + 判断是否在同一个月。 + + + + + + + + 判断是否在同一天 + + + + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + 是否显示秒 + + + + + 计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 将c# DateTime时间格式转换为Unix时间戳格式 + + 时间 + long + + + + 时间戳转为C#格式时间 + + + + + + + 将c# DateTime时间格式转换为js时间戳格式 + + 时间 + long + + + + JS时间戳转为C#格式时间 + + + + + + + 根据年月日转换成日期 + + + + + + + + + 窗体操作类 + + + + + 设置Comobox的行间距 + + + + + + + 移除关闭按钮。返回值,非零表示成功,零表示失败。 + + 窗口的句柄 + 是否成功 + + + + 把窗体放到最前 + + + + + + 显示窗体 + + + + + + + + 设置窗体是否置顶 + + + + + + + 显示没有焦点的窗口 + + + + + + 根据句柄获取窗口文本 + + + + + + + 根据句柄获取窗口类 + + + + + + + 获取当前活动的窗口句柄 + + + + + + 设置为当前活动窗口 + + + + + + + 根据窗口句柄来获得进程id + + + + + + + 显示窗体 + + + + + + 设置窗体父窗体为桌面,不会随着显示桌面而最小化,但无法设置窗体透明度 + + + + + + 结束进程 + + + + + + + 打开窗体,只打开一个实例(非模态) + + + + + + + 设置注册表操作,部分功能需要管理员权限 + + + + + 访问的注册表位置(64位还是32位) + + + + + 访问的注册表节点 + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + 启动命令 + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + + + + + 把指定文件设置为开机启动或取消开机启动 + + 是否开机启动 + 开机启动名称 + 要开机启动的文件路径 + + + + + 检查是否开机启动 + + 开机启动名称 + 开机启动命令 + + + + + 检查是否开机启动 + + 开机启动名称 + + + + + 判断指定文件是否是开机启动 + + 开机启动名称 + 文件路径 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + 启动命令行 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 采用的IE模式 + + + + + IE7兼容视图 + + + + + IE8 标准模式 + + + + + IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE9 标准模式 + + + + + IE9 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE10 标准模式 + + + + + IE10 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置当前软件的浏览器控件内核版本 + + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + IE内核版本 + + + + + 设置当前软件的浏览器控件内核版本 + + IE内核版本 + + + + + 系统函数 + + + + + 获取键盘和鼠标没有操作的时间 + + + + + + 设置屏幕 Gamma值 + + + + + + + + + 设置屏幕亮度 + + + + + + + 获取系统 + + + + + + 窗体操作类 + + + + + 构造函数 + + + + + + 设置让窗体支持移动 + + + + + 是否允许可调节大小 + + + + + 可调节窗体大小的宽度 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + 使支持拖放属性 + + + + + + 网络操作类 + + + + + 通过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语句 + + + + + + + 根据id号删除数据 + + + + + + + + 创建数据库 + + + + + + + 释放资源 + + + + + SQL字段类型 + + + + + SQL字段类型 + + + + + + + SQL字段类型 + + + + + + + + SQL字段名 + + + + + SQL字段值 + + + + + SQL字段长度 + + + + + 不是真的值,而是用于计算的值 + + + + + SQL快速操作类 + + + + + SQL快速操作类 + + + + + + 表名 + + + + + 操作字段列表 + + + + + 清理使用资源 + + + + + 清理使用资源 + + + + + 操作参数列表 + + + + + 添加字符串字段 + + + + + + + 添加日期字段 + + + + + + + 添加int字段 + + + + + + + 添加double字段 + + + + + + + 添加decimal字段 + + + + + + + 添加bool字段 + + + + + + + 添加用于计算的值 + + + + + + + 添加Int64字段 + + + + + + + 清空内容 + + + + + 数量 + + + + + + + + + + + + + + + 输出多条件搜索。 + + 字段名,多个字段请用逗号分隔。 + 多个条件之间请用空格隔开 + + + + + 获取插入SQL语句 + + + + + + 获取更新SQL语句 + + + + + + 添加参数 + + + + + + + 获取Ole参数 + + + + + + 获取SQL参数 + + + + + + AES加密解密类 + + + + + AES加密算法 + + 明文字符串 + 密钥 + 返回加密后的密文字节数组 + + + + AES解密 + + 密文字节数组 + 密钥 + 返回解密后的字符串 + + + + 加密 + + + + + + + + 解码 + + + + + + + + 转换密钥到合法密钥 + + + + + + + Base64编码类 + + + + + 编码 + + + + + + + 把字符串编码成Base64字符串 + + + + + + + + 解码 + + + + + + + MD5和SHA1操作类 + + + + + 获取MD5 + + + + + + + 获取MD5 + + + + + + + 获取SHA1 + + + + + + + 获取SHA1 + + + + + + 使用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/ + + + + 某个月第n个星期几 + + + + + 获取农历 + + + + + + + 获取农历 + + + + + + + 获得某农历年的闰月,返回 1~12 对应一月到十二月,返回 0 表示无闰月 + + + + + + + {* 日月食类型, 无, 日食, 月全食, 月偏食 } + + + + + {* 月相, 无, 朔, 望} + + + + + 获得某公历年月日的农历日数和该日月相以及日月食类型和时刻 + + + + + + + + + + + + 获得某公历年月日的农历月数 + + + + + + + + + 获取阳历日期对应的农历日期 + + + + + + + + + + + + + 获得某公历年月日的农历月日和是否闰月的信息 + + + + + + + + + + + + 获得等效标准日数对应的某公历日,倒推而来 + + + + + + + + + + + 获得某农历年月日(加是否闰月)的公历年月日 + 该函数采用反向二分法查找 + + + + + + + + + + + + + 获取农历某一个月的总天数 + + + + + + + + + 获取农历年份,范围约1901-2101年 + + + + + + + 获取农历年份,范围约0-9999年 + + + + + + + + + 获取农历月份,范围约1901-2101年 + + + + + + + 获取农历月份,范围约0-9999年 + + + + + + + 获取中文表示的农历月份 + + + + + + + 获取农历日,范围约1901-2101年 + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + 获取节气,范围约1901-2101年 + + + + + + + 获取节气,范围约0-9999年 + + + + + + + 返回y年第n个节气(如小寒为1)的日差天数值(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伏 + + + + + 节气的时间。 + + + + + 节气名。 + + + + + Win32 API + + + + + 系统通道ID + + + + + 用户通道ID + + + + + 设置父窗口 + + + + + + + + + 功能键 + + + + + 无 + + + + + Alt键 + + + + + Ctrl键 + + + + + Shift键 + + + + + Win键 + + + + + 热键类 + + + + + 热键类 + + + + + + 热键注销 + + + + + 释放热键 + + + + + 注册热键 + + + + + + + + + 删除热键 + + + + + + + 删除所有热键 + + + + + 热键事件 + + + + + + 当使用热键时发生的事件 + + + + + 热键消息过滤 + + + + + + + 热键类型 + + + + + 热键id + + + + + 功能键 + + + + + 普通键 + + + + + 热键类型 + + + + + + + diff --git a/Bin/Debug/MyTimeClock/MyDb_SQLite.dll b/Bin/Debug/MyTimeClock/MyDb_SQLite.dll new file mode 100644 index 0000000..d86f9ee Binary files /dev/null and b/Bin/Debug/MyTimeClock/MyDb_SQLite.dll differ diff --git a/Bin/Debug/MyTimeClock/MyTimeClock.exe b/Bin/Debug/MyTimeClock/MyTimeClock.exe new file mode 100644 index 0000000..00d1298 Binary files /dev/null and b/Bin/Debug/MyTimeClock/MyTimeClock.exe differ diff --git a/Bin/Debug/MyTimeClock/NAudio.dll b/Bin/Debug/MyTimeClock/NAudio.dll new file mode 100644 index 0000000..9425d40 Binary files /dev/null and b/Bin/Debug/MyTimeClock/NAudio.dll differ diff --git a/Bin/Debug/MyTimeClock/NAudio.xml b/Bin/Debug/MyTimeClock/NAudio.xml new file mode 100644 index 0000000..4d26c0e --- /dev/null +++ b/Bin/Debug/MyTimeClock/NAudio.xml @@ -0,0 +1,22883 @@ + + + + NAudio + + + + + a-law decoder + based on code from: + http://hazelware.luggle.com/tutorials/mulawcompression.html + + + + + only 512 bytes required, so just use a lookup + + + + + Converts an a-law encoded byte to a 16 bit linear sample + + a-law encoded byte + Linear sample + + + + A-law encoder + + + + + Encodes a single 16 bit sample to a-law + + 16 bit PCM sample + a-law encoded byte + + + + SpanDSP - a series of DSP components for telephony + + g722_decode.c - The ITU G.722 codec, decode part. + + Written by Steve Underwood <steveu@coppice.org> + + Copyright (C) 2005 Steve Underwood + Ported to C# by Mark Heath 2011 + + Despite my general liking of the GPL, I place my own contributions + to this code in the public domain for the benefit of all mankind - + even the slimy ones who might try to proprietize my work and use it + to my detriment. + + Based in part on a single channel G.722 codec which is: + Copyright (c) CMU 1993 + Computer Science, Speech Group + Chengxiang Lu and Alex Hauptmann + + + + + hard limits to 16 bit samples + + + + + Decodes a buffer of G722 + + Codec state + Output buffer (to contain decompressed PCM samples) + + Number of bytes in input G722 data to decode + Number of samples written into output buffer + + + + Encodes a buffer of G722 + + Codec state + Output buffer (to contain encoded G722) + PCM 16 bit samples to encode + Number of samples in the input buffer to encode + Number of encoded bytes written into output buffer + + + + Stores state to be used between calls to Encode or Decode + + + + + ITU Test Mode + TRUE if the operating in the special ITU test mode, with the band split filters disabled. + + + + + TRUE if the G.722 data is packed + + + + + 8kHz Sampling + TRUE if encode from 8k samples/second + + + + + Bits Per Sample + 6 for 48000kbps, 7 for 56000kbps, or 8 for 64000kbps. + + + + + Signal history for the QMF (x) + + + + + Band + + + + + In bit buffer + + + + + Number of bits in InBuffer + + + + + Out bit buffer + + + + + Number of bits in OutBuffer + + + + + Creates a new instance of G722 Codec State for a + new encode or decode session + + Bitrate (typically 64000) + Special options + + + + Band data for G722 Codec + + + + s + + + sp + + + sz + + + r + + + a + + + ap + + + p + + + d + + + b + + + bp + + + sg + + + nb + + + det + + + + G722 Flags + + + + + None + + + + + Using a G722 sample rate of 8000 + + + + + Packed + + + + + mu-law decoder + based on code from: + http://hazelware.luggle.com/tutorials/mulawcompression.html + + + + + only 512 bytes required, so just use a lookup + + + + + Converts a mu-law encoded byte to a 16 bit linear sample + + mu-law encoded byte + Linear sample + + + + mu-law encoder + based on code from: + http://hazelware.luggle.com/tutorials/mulawcompression.html + + + + + Encodes a single 16 bit sample to mu-law + + 16 bit PCM sample + mu-law encoded byte + + + + Audio Capture Client + + + + + Gets a pointer to the buffer + + Pointer to the buffer + + + + Gets a pointer to the buffer + + Number of frames to read + Buffer flags + Pointer to the buffer + + + + Gets the size of the next packet + + + + + Release buffer + + Number of frames written + + + + Release the COM object + + + + + Windows CoreAudio AudioClient + + + + + Retrieves the stream format that the audio engine uses for its internal processing of shared-mode streams. + Can be called before initialize + + + + + Initializes the Audio Client + + Share Mode + Stream Flags + Buffer Duration + Periodicity + Wave Format + Audio Session GUID (can be null) + + + + Retrieves the size (maximum capacity) of the audio buffer associated with the endpoint. (must initialize first) + + + + + Retrieves the maximum latency for the current stream and can be called any time after the stream has been initialized. + + + + + Retrieves the number of frames of padding in the endpoint buffer (must initialize first) + + + + + Retrieves the length of the periodic interval separating successive processing passes by the audio engine on the data in the endpoint buffer. + (can be called before initialize) + + + + + Gets the minimum device period + (can be called before initialize) + + + + + Returns the AudioStreamVolume service for this AudioClient. + + + This returns the AudioStreamVolume object ONLY for shared audio streams. + + + This is thrown when an exclusive audio stream is being used. + + + + + Gets the AudioClockClient service + + + + + Gets the AudioRenderClient service + + + + + Gets the AudioCaptureClient service + + + + + Determines whether if the specified output format is supported + + The share mode. + The desired format. + True if the format is supported + + + + Determines if the specified output format is supported in shared mode + + Share Mode + Desired Format + Output The closest match format. + True if the format is supported + + + + Starts the audio stream + + + + + Stops the audio stream. + + + + + Set the Event Handle for buffer synchro. + + The Wait Handle to setup + + + + Resets the audio stream + Reset is a control method that the client calls to reset a stopped audio stream. + Resetting the stream flushes all pending data and resets the audio clock stream + position to 0. This method fails if it is called on a stream that is not stopped + + + + + Dispose + + + + + Audio Client Buffer Flags + + + + + None + + + + + AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY + + + + + AUDCLNT_BUFFERFLAGS_SILENT + + + + + AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR + + + + + The AudioClientProperties structure is used to set the parameters that describe the properties of the client's audio stream. + + http://msdn.microsoft.com/en-us/library/windows/desktop/hh968105(v=vs.85).aspx + + + + The size of the buffer for the audio stream. + + + + + Boolean value to indicate whether or not the audio stream is hardware-offloaded + + + + + An enumeration that is used to specify the category of the audio stream. + + + + + A bit-field describing the characteristics of the stream. Supported in Windows 8.1 and later. + + + + + AUDCLNT_SHAREMODE + + + + + AUDCLNT_SHAREMODE_SHARED, + + + + + AUDCLNT_SHAREMODE_EXCLUSIVE + + + + + AUDCLNT_STREAMFLAGS + + + + + None + + + + + AUDCLNT_STREAMFLAGS_CROSSPROCESS + + + + + AUDCLNT_STREAMFLAGS_LOOPBACK + + + + + AUDCLNT_STREAMFLAGS_EVENTCALLBACK + + + + + AUDCLNT_STREAMFLAGS_NOPERSIST + + + + + Defines values that describe the characteristics of an audio stream. + + + + + No stream options. + + + + + The audio stream is a 'raw' stream that bypasses all signal processing except for endpoint specific, always-on processing in the APO, driver, and hardware. + + + + + Audio Clock Client + + + + + Characteristics + + + + + Frequency + + + + + Get Position + + + + + Adjusted Position + + + + + Can Adjust Position + + + + + Dispose + + + + + Audio Endpoint Volume Channel + + + + + GUID to pass to AudioEndpointVolumeCallback + + + + + Volume Level + + + + + Volume Level Scalar + + + + + Audio Endpoint Volume Channels + + + + + Channel Count + + + + + Indexer - get a specific channel + + + + + Audio Endpoint Volume Notifiaction Delegate + + Audio Volume Notification Data + + + + Audio Endpoint Volume Step Information + + + + + Step + + + + + StepCount + + + + + Audio Endpoint Volume Volume Range + + + + + Minimum Decibels + + + + + Maximum Decibels + + + + + Increment Decibels + + + + + Audio Meter Information Channels + + + + + Metering Channel Count + + + + + Get Peak value + + Channel index + Peak value + + + + Audio Render Client + + + + + Gets a pointer to the buffer + + Number of frames requested + Pointer to the buffer + + + + Release buffer + + Number of frames written + Buffer flags + + + + Release the COM object + + + + + AudioSessionControl object for information + regarding an audio session + + + + + Constructor. + + + + + + Dispose + + + + + Finalizer + + + + + Audio meter information of the audio session. + + + + + Simple audio volume of the audio session (for volume and mute status). + + + + + The current state of the audio session. + + + + + The name of the audio session. + + + + + the path to the icon shown in the mixer. + + + + + The session identifier of the audio session. + + + + + The session instance identifier of the audio session. + + + + + The process identifier of the audio session. + + + + + Is the session a system sounds session. + + + + + the grouping param for an audio session grouping + + + + + + For chanigng the grouping param and supplying the context of said change + + + + + + + Registers an even client for callbacks + + + + + + Unregisters an event client from receiving callbacks + + + + + + AudioSessionEvents callback implementation + + + + + Constructor. + + + + + + Notifies the client that the display name for the session has changed. + + The new display name for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the display icon for the session has changed. + + The path for the new display icon for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the volume level or muting state of the session has changed. + + The new volume level for the audio session. + The new muting state. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the volume level of an audio channel in the session submix has changed. + + The channel count. + An array of volumnes cooresponding with each channel index. + The number of the channel whose volume level changed. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the grouping parameter for the session has changed. + + The new grouping parameter for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the stream-activity state of the session has changed. + + The new session state. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the session has been disconnected. + + The reason that the audio session was disconnected. + An HRESULT code indicating whether the operation succeeded of failed. + + + + AudioSessionManager + + Designed to manage audio sessions and in particuar the + SimpleAudioVolume interface to adjust a session volume + + + + + Session created delegate + + + + + Occurs when audio session has been added (for example run another program that use audio playback). + + + + + SimpleAudioVolume object + for adjusting the volume for the user session + + + + + AudioSessionControl object + for registring for callbacks and other session information + + + + + Refresh session of current device. + + + + + Returns list of sessions of current device. + + + + + Dispose. + + + + + Finalizer. + + + + + Specifies the category of an audio stream. + + + + + Other audio stream. + + + + + Media that will only stream when the app is in the foreground. + + + + + Media that can be streamed when the app is in the background. + + + + + Real-time communications, such as VOIP or chat. + + + + + Alert sounds. + + + + + Sound effects. + + + + + Game sound effects. + + + + + Background audio for games. + + + + + Manages the AudioStreamVolume for the . + + + + + Verify that the channel index is valid. + + + + + + + Return the current stream volumes for all channels + + An array of volume levels between 0.0 and 1.0 for each channel in the audio stream. + + + + Returns the current number of channels in this audio stream. + + + + + Return the current volume for the requested channel. + + The 0 based index into the channels. + The volume level for the channel between 0.0 and 1.0. + + + + Set the volume level for each channel of the audio stream. + + An array of volume levels (between 0.0 and 1.0) one for each channel. + + A volume level MUST be supplied for reach channel in the audio stream. + + + Thrown when does not contain elements. + + + + + Sets the volume level for one channel in the audio stream. + + The 0-based index into the channels to adjust the volume of. + The volume level between 0.0 and 1.0 for this channel of the audio stream. + + + + Dispose + + + + + Release/cleanup objects during Dispose/finalization. + + True if disposing and false if being finalized. + + + + Audio Volume Notification Data + + + + + Event Context + + + + + Muted + + + + + Guid that raised the event + + + + + Master Volume + + + + + Channels + + + + + Channel Volume + + + + + Audio Volume Notification Data + + + + + + + + + + Audio Client WASAPI Error Codes (HResult) + + + + + AUDCLNT_E_NOT_INITIALIZED + + + + + AUDCLNT_E_UNSUPPORTED_FORMAT + + + + + AUDCLNT_E_DEVICE_IN_USE + + + + + AUDCLNT_E_RESOURCES_INVALIDATED + + + + + Defined in AudioClient.h + + + + + Defined in AudioClient.h + + + + + Windows CoreAudio IAudioSessionControl interface + Defined in AudioPolicy.h + + + + + Retrieves the current state of the audio session. + + Receives the current session state. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the display name for the audio session. + + Receives a string that contains the display name. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Assigns a display name to the current audio session. + + A string that contains the new display name for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the path for the display icon for the audio session. + + Receives a string that specifies the fully qualified path of the file that contains the icon. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Assigns a display icon to the current session. + + A string that specifies the fully qualified path of the file that contains the new icon. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the grouping parameter of the audio session. + + Receives the grouping parameter ID. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Assigns a session to a grouping of sessions. + + The new grouping parameter ID. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Registers the client to receive notifications of session events, including changes in the session state. + + A client-implemented interface. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Deletes a previous registration by the client to receive notifications. + + A client-implemented interface. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Windows CoreAudio IAudioSessionControl interface + Defined in AudioPolicy.h + + + + + Retrieves the current state of the audio session. + + Receives the current session state. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the display name for the audio session. + + Receives a string that contains the display name. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Assigns a display name to the current audio session. + + A string that contains the new display name for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the path for the display icon for the audio session. + + Receives a string that specifies the fully qualified path of the file that contains the icon. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Assigns a display icon to the current session. + + A string that specifies the fully qualified path of the file that contains the new icon. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the grouping parameter of the audio session. + + Receives the grouping parameter ID. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Assigns a session to a grouping of sessions. + + The new grouping parameter ID. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Registers the client to receive notifications of session events, including changes in the session state. + + A client-implemented interface. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Deletes a previous registration by the client to receive notifications. + + A client-implemented interface. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the identifier for the audio session. + + Receives the session identifier. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the identifier of the audio session instance. + + Receives the identifier of a particular instance. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the process identifier of the audio session. + + Receives the process identifier of the audio session. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Indicates whether the session is a system sounds session. + + An HRESULT code indicating whether the operation succeeded of failed. + + + + Enables or disables the default stream attenuation experience (auto-ducking) provided by the system. + + A variable that enables or disables system auto-ducking. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Defines constants that indicate the current state of an audio session. + + + MSDN Reference: http://msdn.microsoft.com/en-us/library/dd370792.aspx + + + + + The audio session is inactive. + + + + + The audio session is active. + + + + + The audio session has expired. + + + + + Defines constants that indicate a reason for an audio session being disconnected. + + + MSDN Reference: Unknown + + + + + The user removed the audio endpoint device. + + + + + The Windows audio service has stopped. + + + + + The stream format changed for the device that the audio session is connected to. + + + + + The user logged off the WTS session that the audio session was running in. + + + + + The WTS session that the audio session was running in was disconnected. + + + + + The (shared-mode) audio session was disconnected to make the audio endpoint device available for an exclusive-mode connection. + + + + + Windows CoreAudio IAudioSessionControl interface + Defined in AudioPolicy.h + + + + + Notifies the client that the display name for the session has changed. + + The new display name for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the display icon for the session has changed. + + The path for the new display icon for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the volume level or muting state of the session has changed. + + The new volume level for the audio session. + The new muting state. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the volume level of an audio channel in the session submix has changed. + + The channel count. + An array of volumnes cooresponding with each channel index. + The number of the channel whose volume level changed. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the grouping parameter for the session has changed. + + The new grouping parameter for the session. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the stream-activity state of the session has changed. + + The new session state. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Notifies the client that the session has been disconnected. + + The reason that the audio session was disconnected. + An HRESULT code indicating whether the operation succeeded of failed. + + + + interface to receive session related events + + + + + notification of volume changes including muting of audio session + + the current volume + the current mute state, true muted, false otherwise + + + + notification of display name changed + + the current display name + + + + notification of icon path changed + + the current icon path + + + + notification of the client that the volume level of an audio channel in the session submix has changed + + The channel count. + An array of volumnes cooresponding with each channel index. + The number of the channel whose volume level changed. + + + + notification of the client that the grouping parameter for the session has changed + + >The new grouping parameter for the session. + + + + notification of the client that the stream-activity state of the session has changed + + The new session state. + + + + notification of the client that the session has been disconnected + + The reason that the audio session was disconnected. + + + + Windows CoreAudio IAudioSessionManager interface + Defined in AudioPolicy.h + + + + + Retrieves an audio session control. + + A new or existing session ID. + Audio session flags. + Receives an interface for the audio session. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves a simple audio volume control. + + A new or existing session ID. + Audio session flags. + Receives an interface for the audio session. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves an audio session control. + + A new or existing session ID. + Audio session flags. + Receives an interface for the audio session. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves a simple audio volume control. + + A new or existing session ID. + Audio session flags. + Receives an interface for the audio session. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Windows CoreAudio IAudioSessionNotification interface + Defined in AudioPolicy.h + + + + + + + session being added + An HRESULT code indicating whether the operation succeeded of failed. + + + + Windows CoreAudio ISimpleAudioVolume interface + Defined in AudioClient.h + + + + + Sets the master volume level for the audio session. + + The new volume level expressed as a normalized value between 0.0 and 1.0. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the client volume level for the audio session. + + Receives the volume level expressed as a normalized value between 0.0 and 1.0. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Sets the muting state for the audio session. + + The new muting state. + A user context value that is passed to the notification callback. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Retrieves the current muting state for the audio session. + + Receives the muting state. + An HRESULT code indicating whether the operation succeeded of failed. + + + + Representation of binary large object container. + + + + + Length of binary object. + + + + + Pointer to buffer storing data. + + + + + is defined in WTypes.h + + + + + Windows CoreAudio IAudioClient interface + Defined in AudioClient.h + + + + + The GetBufferSize method retrieves the size (maximum capacity) of the endpoint buffer. + + + + + The GetService method accesses additional services from the audio client object. + + The interface ID for the requested service. + Pointer to a pointer variable into which the method writes the address of an instance of the requested interface. + + + + defined in MMDeviceAPI.h + + + + + IMMNotificationClient + + + + + Device State Changed + + + + + Device Added + + + + + Device Removed + + + + + Default Device Changed + + + + + Property Value Changed + + + + + + + is defined in propsys.h + + + + + implements IMMDeviceEnumerator + + + + + MMDevice STGM enumeration + + + + + Read-only access mode. + + + + + Write-only access mode. + + + + + Read-write access mode. + + + + + from Propidl.h. + http://msdn.microsoft.com/en-us/library/aa380072(VS.85).aspx + contains a union so we have to do an explicit layout + + + + + Value type tag. + + + + + Reserved1. + + + + + Reserved2. + + + + + Reserved3. + + + + + cVal. + + + + + bVal. + + + + + iVal. + + + + + uiVal. + + + + + lVal. + + + + + ulVal. + + + + + intVal. + + + + + uintVal. + + + + + hVal. + + + + + uhVal. + + + + + fltVal. + + + + + dblVal. + + + + + boolVal. + + + + + scode. + + + + + Date time. + + + + + Binary large object. + + + + + Pointer value. + + + + + Creates a new PropVariant containing a long value + + + + + Helper method to gets blob data + + + + + Interprets a blob as an array of structs + + + + + Gets the type of data in this PropVariant + + + + + Property value + + + + + allows freeing up memory, might turn this into a Dispose method? + + + + + Clears with a known pointer + + + + + Multimedia Device Collection + + + + + Device count + + + + + Get device by index + + Device index + Device at the specified index + + + + Get Enumerator + + Device enumerator + + + + Property Keys + + + + + PKEY_DeviceInterface_FriendlyName + + + + + PKEY_AudioEndpoint_FormFactor + + + + + PKEY_AudioEndpoint_ControlPanelPageProvider + + + + + PKEY_AudioEndpoint_Association + + + + + PKEY_AudioEndpoint_PhysicalSpeakers + + + + + PKEY_AudioEndpoint_GUID + + + + + PKEY_AudioEndpoint_Disable_SysFx + + + + + PKEY_AudioEndpoint_FullRangeSpeakers + + + + + PKEY_AudioEndpoint_Supports_EventDriven_Mode + + + + + PKEY_AudioEndpoint_JackSubType + + + + + PKEY_AudioEngine_DeviceFormat + + + + + PKEY_AudioEngine_OEMFormat + + + + + PKEY _Devie_FriendlyName + + + + + PKEY _Device_IconPath + + + + + Device description property. + + + + + Id of controller device for endpoint device property. + + + + + Device interface key property. + + + + + Collection of sessions. + + + + + Returns session at index. + + + + + + + Number of current sessions. + + + + + Windows CoreAudio SimpleAudioVolume + + + + + Creates a new Audio endpoint volume + + ISimpleAudioVolume COM interface + + + + Dispose + + + + + Finalizer + + + + + Allows the user to adjust the volume from + 0.0 to 1.0 + + + + + Mute + + + + + Represents state of a capture device + + + + + Not recording + + + + + Beginning to record + + + + + Recording in progress + + + + + Requesting stop + + + + + Audio Capture using Wasapi + See http://msdn.microsoft.com/en-us/library/dd370800%28VS.85%29.aspx + + + + + Indicates recorded data is available + + + + + Indicates that all recorded data has now been received. + + + + + Initialises a new instance of the WASAPI capture class + + + + + Initialises a new instance of the WASAPI capture class + + Capture device to use + + + + Initializes a new instance of the class. + + The capture device. + true if sync is done with event. false use sleep. + + + + Initializes a new instance of the class. + + The capture device. + true if sync is done with event. false use sleep. + Length of the audio buffer in milliseconds. A lower value means lower latency but increased CPU usage. + + + + Share Mode - set before calling StartRecording + + + + + Current Capturing State + + + + + Capturing wave format + + + + + Gets the default audio capture device + + The default audio capture device + + + + To allow overrides to specify different flags (e.g. loopback) + + + + + Start Capturing + + + + + Stop Capturing (requests a stop, wait for RecordingStopped event to know it has finished) + + + + + Dispose + + + + + Audio Endpoint Volume + + + + + GUID to pass to AudioEndpointVolumeCallback + + + + + On Volume Notification + + + + + Volume Range + + + + + Hardware Support + + + + + Step Information + + + + + Channels + + + + + Master Volume Level + + + + + Master Volume Level Scalar + + + + + Mute + + + + + Volume Step Up + + + + + Volume Step Down + + + + + Creates a new Audio endpoint volume + + IAudioEndpointVolume COM interface + + + + Dispose + + + + + Finalizer + + + + + Audio Meter Information + + + + + Peak Values + + + + + Hardware Support + + + + + Master Peak Value + + + + + Device State + + + + + DEVICE_STATE_ACTIVE + + + + + DEVICE_STATE_DISABLED + + + + + DEVICE_STATE_NOTPRESENT + + + + + DEVICE_STATE_UNPLUGGED + + + + + DEVICE_STATEMASK_ALL + + + + + Endpoint Hardware Support + + + + + Volume + + + + + Mute + + + + + Meter + + + + + The EDataFlow enumeration defines constants that indicate the direction + in which audio data flows between an audio endpoint device and an application + + + + + Audio rendering stream. + Audio data flows from the application to the audio endpoint device, which renders the stream. + + + + + Audio capture stream. Audio data flows from the audio endpoint device that captures the stream, + to the application + + + + + Audio rendering or capture stream. Audio data can flow either from the application to the audio + endpoint device, or from the audio endpoint device to the application. + + + + + PROPERTYKEY is defined in wtypes.h + + + + + Format ID + + + + + Property ID + + + + + + + + + + + The ERole enumeration defines constants that indicate the role + that the system has assigned to an audio endpoint device + + + + + Games, system notification sounds, and voice commands. + + + + + Music, movies, narration, and live music recording + + + + + Voice communications (talking to another person). + + + + + MM Device + + + + + Initializes the device's property store. + + The storage-access mode to open store for. + Administrative client is required for Write and ReadWrite modes. + + + + Audio Client + + + + + Audio Meter Information + + + + + Audio Endpoint Volume + + + + + AudioSessionManager instance + + + + + Properties + + + + + Friendly name for the endpoint + + + + + Friendly name of device + + + + + Icon path of device + + + + + Device ID + + + + + Data Flow + + + + + Device State + + + + + To string + + + + + Dispose + + + + + Finalizer + + + + + MM Device Enumerator + + + + + Creates a new MM Device Enumerator + + + + + Enumerate Audio Endpoints + + Desired DataFlow + State Mask + Device Collection + + + + Get Default Endpoint + + Data Flow + Role + Device + + + + Check to see if a default audio end point exists without needing an exception. + + Data Flow + Role + True if one exists, and false if one does not exist. + + + + Get device by ID + + Device ID + Device + + + + Registers a call back for Device Events + + Object implementing IMMNotificationClient type casted as IMMNotificationClient interface + + + + + Unregisters a call back for Device Events + + Object implementing IMMNotificationClient type casted as IMMNotificationClient interface + + + + + + + + Called to dispose/finalize contained objects. + + True if disposing, false if called from a finalizer. + + + + Property Store class, only supports reading properties at the moment. + + + + + Property Count + + + + + Gets property by index + + Property index + The property + + + + Contains property guid + + Looks for a specific key + True if found + + + + Indexer by guid + + Property Key + Property or null if not found + + + + Gets property key at sepecified index + + Index + Property key + + + + Gets property value at specified index + + Index + Property value + + + + Sets property value at specified key. + + Key of property to set. + Value to write. + + + + Saves a property change. + + + + + Creates a new property store + + IPropertyStore COM interface + + + + Property Store Property + + + + + Property Key + + + + + Property Value + + + + + Envelope generator (ADSR) + + + + + Envelope State + + + + + Idle + + + + + Attack + + + + + Decay + + + + + Sustain + + + + + Release + + + + + Creates and Initializes an Envelope Generator + + + + + Attack Rate (seconds * SamplesPerSecond) + + + + + Decay Rate (seconds * SamplesPerSecond) + + + + + Release Rate (seconds * SamplesPerSecond) + + + + + Sustain Level (1 = 100%) + + + + + Sets the attack curve + + + + + Sets the decay release curve + + + + + Read the next volume multiplier from the envelope generator + + A volume multiplier + + + + Trigger the gate + + If true, enter attack phase, if false enter release phase (unless already idle) + + + + Current envelope state + + + + + Reset to idle state + + + + + Get the current output level + + + + + Fully managed resampler, based on Cockos WDL Resampler + + + + + Creates a new Resampler + + + + + sets the mode + if sinc set, it overrides interp or filtercnt + + + + + Sets the filter parameters + used for filtercnt>0 but not sinc + + + + + Set feed mode + + if true, that means the first parameter to ResamplePrepare will specify however much input you have, not how much you want + + + + Reset + + + + + Prepare + note that it is safe to call ResamplePrepare without calling ResampleOut (the next call of ResamplePrepare will function as normal) + nb inbuffer was WDL_ResampleSample **, returning a place to put the in buffer, so we return a buffer and offset + + req_samples is output samples desired if !wantInputDriven, or if wantInputDriven is input samples that we have + + + + returns number of samples desired (put these into *inbuffer) + + + + SMB Pitch Shifter + + + + + Pitch Shift + + + + + Pitch Shift + + + + + Short Time Fourier Transform + + + + + BiQuad filter + + + + + Passes a single sample through the filter + + Input sample + Output sample + + + + Set this up as a low pass filter + + Sample Rate + Cut-off Frequency + Bandwidth + + + + Set this up as a peaking EQ + + Sample Rate + Centre Frequency + Bandwidth (Q) + Gain in decibels + + + + Set this as a high pass filter + + + + + Create a low pass filter + + + + + Create a High pass filter + + + + + Create a bandpass filter with constant skirt gain + + + + + Create a bandpass filter with constant peak gain + + + + + Creates a notch filter + + + + + Creaes an all pass filter + + + + + Create a Peaking EQ + + + + + H(s) = A * (s^2 + (sqrt(A)/Q)*s + A)/(A*s^2 + (sqrt(A)/Q)*s + 1) + + + + a "shelf slope" parameter (for shelving EQ only). + When S = 1, the shelf slope is as steep as it can be and remain monotonically + increasing or decreasing gain with frequency. The shelf slope, in dB/octave, + remains proportional to S for all other values for a fixed f0/Fs and dBgain. + Gain in decibels + + + + H(s) = A * (A*s^2 + (sqrt(A)/Q)*s + 1)/(s^2 + (sqrt(A)/Q)*s + A) + + + + + + + + + + Type to represent complex number + + + + + Real Part + + + + + Imaginary Part + + + + + Summary description for FastFourierTransform. + + + + + This computes an in-place complex-to-complex FFT + x and y are the real and imaginary arrays of 2^m points. + + + + + Applies a Hamming Window + + Index into frame + Frame size (e.g. 1024) + Multiplier for Hamming window + + + + Applies a Hann Window + + Index into frame + Frame size (e.g. 1024) + Multiplier for Hann window + + + + Applies a Blackman-Harris Window + + Index into frame + Frame size (e.g. 1024) + Multiplier for Blackmann-Harris window + + + + Summary description for ImpulseResponseConvolution. + + + + + A very simple mono convolution algorithm + + + This will be very slow + + + + + This is actually a downwards normalize for data that will clip + + + + + http://tech.ebu.ch/docs/tech/tech3306-2009.pdf + + + + + WaveFormat + + + + + Data Chunk Position + + + + + Data Chunk Length + + + + + Riff Chunks + + + + + Represents an entry in a Cakewalk drum map + + + + + User customisable note name + + + + + Input MIDI note number + + + + + Output MIDI note number + + + + + Output port + + + + + Output MIDI Channel + + + + + Velocity adjustment + + + + + Velocity scaling - in percent + + + + + Describes this drum map entry + + + + + Represents a Cakewalk Drum Map file (.map) + + + + + Parses a Cakewalk Drum Map file + + Path of the .map file + + + + The drum mappings in this drum map + + + + + Describes this drum map + + + + + MP3 Frame decompressor using the Windows Media MP3 Decoder DMO object + + + + + Initializes a new instance of the DMO MP3 Frame decompressor + + + + + + Converted PCM WaveFormat + + + + + Decompress a single frame of MP3 + + + + + Alerts us that a reposition has occured so the MP3 decoder needs to reset its state + + + + + Dispose of this obejct and clean up resources + + + + + Audio Subtype GUIDs + http://msdn.microsoft.com/en-us/library/windows/desktop/aa372553%28v=vs.85%29.aspx + + + + + Advanced Audio Coding (AAC). + + + + + Not used + + + + + Dolby AC-3 audio over Sony/Philips Digital Interface (S/PDIF). + + + + + Encrypted audio data used with secure audio path. + + + + + Digital Theater Systems (DTS) audio. + + + + + Uncompressed IEEE floating-point audio. + + + + + MPEG Audio Layer-3 (MP3). + + + + + MPEG-1 audio payload. + + + + + Windows Media Audio 9 Voice codec. + + + + + Uncompressed PCM audio. + + + + + Windows Media Audio 9 Professional codec over S/PDIF. + + + + + Windows Media Audio 9 Lossless codec or Windows Media Audio 9.1 codec. + + + + + Windows Media Audio 8 codec, Windows Media Audio 9 codec, or Windows Media Audio 9.1 codec. + + + + + Windows Media Audio 9 Professional codec or Windows Media Audio 9.1 Professional codec. + + + + + Dolby Digital (AC-3). + + + + + MPEG-4 and AAC Audio Types + http://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx + Reference : wmcodecdsp.h + + + + + Dolby Audio Types + http://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx + Reference : wmcodecdsp.h + + + + + Dolby Audio Types + http://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx + Reference : wmcodecdsp.h + + + + + μ-law coding + http://msdn.microsoft.com/en-us/library/windows/desktop/dd390971(v=vs.85).aspx + Reference : Ksmedia.h + + + + + Adaptive delta pulse code modulation (ADPCM) + http://msdn.microsoft.com/en-us/library/windows/desktop/dd390971(v=vs.85).aspx + Reference : Ksmedia.h + + + + + Dolby Digital Plus formatted for HDMI output. + http://msdn.microsoft.com/en-us/library/windows/hardware/ff538392(v=vs.85).aspx + Reference : internet + + + + + MSAudio1 - unknown meaning + Reference : wmcodecdsp.h + + + + + IMA ADPCM ACM Wrapper + + + + + WMSP2 - unknown meaning + Reference: wmsdkidl.h + + + + + Creates an instance of either the sink writer or the source reader. + + + + + Creates an instance of the sink writer or source reader, given a URL. + + + + + Creates an instance of the sink writer or source reader, given an IUnknown pointer. + + + + + CLSID_MFReadWriteClassFactory + + + + + Media Foundation Errors + + + + RANGES + 14000 - 14999 = General Media Foundation errors + 15000 - 15999 = ASF parsing errors + 16000 - 16999 = Media Source errors + 17000 - 17999 = MEDIAFOUNDATION Network Error Events + 18000 - 18999 = MEDIAFOUNDATION WMContainer Error Events + 19000 - 19999 = MEDIAFOUNDATION Media Sink Error Events + 20000 - 20999 = Renderer errors + 21000 - 21999 = Topology Errors + 25000 - 25999 = Timeline Errors + 26000 - 26999 = Unused + 28000 - 28999 = Transform errors + 29000 - 29999 = Content Protection errors + 40000 - 40999 = Clock errors + 41000 - 41999 = MF Quality Management Errors + 42000 - 42999 = MF Transcode API Errors + + + + + MessageId: MF_E_PLATFORM_NOT_INITIALIZED + + MessageText: + + Platform not initialized. Please call MFStartup().%0 + + + + + MessageId: MF_E_BUFFERTOOSMALL + + MessageText: + + The buffer was too small to carry out the requested action.%0 + + + + + MessageId: MF_E_INVALIDREQUEST + + MessageText: + + The request is invalid in the current state.%0 + + + + + MessageId: MF_E_INVALIDSTREAMNUMBER + + MessageText: + + The stream number provided was invalid.%0 + + + + + MessageId: MF_E_INVALIDMEDIATYPE + + MessageText: + + The data specified for the media type is invalid, inconsistent, or not supported by this object.%0 + + + + + MessageId: MF_E_NOTACCEPTING + + MessageText: + + The callee is currently not accepting further input.%0 + + + + + MessageId: MF_E_NOT_INITIALIZED + + MessageText: + + This object needs to be initialized before the requested operation can be carried out.%0 + + + + + MessageId: MF_E_UNSUPPORTED_REPRESENTATION + + MessageText: + + The requested representation is not supported by this object.%0 + + + + + MessageId: MF_E_NO_MORE_TYPES + + MessageText: + + An object ran out of media types to suggest therefore the requested chain of streaming objects cannot be completed.%0 + + + + + MessageId: MF_E_UNSUPPORTED_SERVICE + + MessageText: + + The object does not support the specified service.%0 + + + + + MessageId: MF_E_UNEXPECTED + + MessageText: + + An unexpected error has occurred in the operation requested.%0 + + + + + MessageId: MF_E_INVALIDNAME + + MessageText: + + Invalid name.%0 + + + + + MessageId: MF_E_INVALIDTYPE + + MessageText: + + Invalid type.%0 + + + + + MessageId: MF_E_INVALID_FILE_FORMAT + + MessageText: + + The file does not conform to the relevant file format specification. + + + + + MessageId: MF_E_INVALIDINDEX + + MessageText: + + Invalid index.%0 + + + + + MessageId: MF_E_INVALID_TIMESTAMP + + MessageText: + + An invalid timestamp was given.%0 + + + + + MessageId: MF_E_UNSUPPORTED_SCHEME + + MessageText: + + The scheme of the given URL is unsupported.%0 + + + + + MessageId: MF_E_UNSUPPORTED_BYTESTREAM_TYPE + + MessageText: + + The byte stream type of the given URL is unsupported.%0 + + + + + MessageId: MF_E_UNSUPPORTED_TIME_FORMAT + + MessageText: + + The given time format is unsupported.%0 + + + + + MessageId: MF_E_NO_SAMPLE_TIMESTAMP + + MessageText: + + The Media Sample does not have a timestamp.%0 + + + + + MessageId: MF_E_NO_SAMPLE_DURATION + + MessageText: + + The Media Sample does not have a duration.%0 + + + + + MessageId: MF_E_INVALID_STREAM_DATA + + MessageText: + + The request failed because the data in the stream is corrupt.%0\n. + + + + + MessageId: MF_E_RT_UNAVAILABLE + + MessageText: + + Real time services are not available.%0 + + + + + MessageId: MF_E_UNSUPPORTED_RATE + + MessageText: + + The specified rate is not supported.%0 + + + + + MessageId: MF_E_THINNING_UNSUPPORTED + + MessageText: + + This component does not support stream-thinning.%0 + + + + + MessageId: MF_E_REVERSE_UNSUPPORTED + + MessageText: + + The call failed because no reverse playback rates are available.%0 + + + + + MessageId: MF_E_UNSUPPORTED_RATE_TRANSITION + + MessageText: + + The requested rate transition cannot occur in the current state.%0 + + + + + MessageId: MF_E_RATE_CHANGE_PREEMPTED + + MessageText: + + The requested rate change has been pre-empted and will not occur.%0 + + + + + MessageId: MF_E_NOT_FOUND + + MessageText: + + The specified object or value does not exist.%0 + + + + + MessageId: MF_E_NOT_AVAILABLE + + MessageText: + + The requested value is not available.%0 + + + + + MessageId: MF_E_NO_CLOCK + + MessageText: + + The specified operation requires a clock and no clock is available.%0 + + + + + MessageId: MF_S_MULTIPLE_BEGIN + + MessageText: + + This callback and state had already been passed in to this event generator earlier.%0 + + + + + MessageId: MF_E_MULTIPLE_BEGIN + + MessageText: + + This callback has already been passed in to this event generator.%0 + + + + + MessageId: MF_E_MULTIPLE_SUBSCRIBERS + + MessageText: + + Some component is already listening to events on this event generator.%0 + + + + + MessageId: MF_E_TIMER_ORPHANED + + MessageText: + + This timer was orphaned before its callback time arrived.%0 + + + + + MessageId: MF_E_STATE_TRANSITION_PENDING + + MessageText: + + A state transition is already pending.%0 + + + + + MessageId: MF_E_UNSUPPORTED_STATE_TRANSITION + + MessageText: + + The requested state transition is unsupported.%0 + + + + + MessageId: MF_E_UNRECOVERABLE_ERROR_OCCURRED + + MessageText: + + An unrecoverable error has occurred.%0 + + + + + MessageId: MF_E_SAMPLE_HAS_TOO_MANY_BUFFERS + + MessageText: + + The provided sample has too many buffers.%0 + + + + + MessageId: MF_E_SAMPLE_NOT_WRITABLE + + MessageText: + + The provided sample is not writable.%0 + + + + + MessageId: MF_E_INVALID_KEY + + MessageText: + + The specified key is not valid. + + + + + MessageId: MF_E_BAD_STARTUP_VERSION + + MessageText: + + You are calling MFStartup with the wrong MF_VERSION. Mismatched bits? + + + + + MessageId: MF_E_UNSUPPORTED_CAPTION + + MessageText: + + The caption of the given URL is unsupported.%0 + + + + + MessageId: MF_E_INVALID_POSITION + + MessageText: + + The operation on the current offset is not permitted.%0 + + + + + MessageId: MF_E_ATTRIBUTENOTFOUND + + MessageText: + + The requested attribute was not found.%0 + + + + + MessageId: MF_E_PROPERTY_TYPE_NOT_ALLOWED + + MessageText: + + The specified property type is not allowed in this context.%0 + + + + + MessageId: MF_E_PROPERTY_TYPE_NOT_SUPPORTED + + MessageText: + + The specified property type is not supported.%0 + + + + + MessageId: MF_E_PROPERTY_EMPTY + + MessageText: + + The specified property is empty.%0 + + + + + MessageId: MF_E_PROPERTY_NOT_EMPTY + + MessageText: + + The specified property is not empty.%0 + + + + + MessageId: MF_E_PROPERTY_VECTOR_NOT_ALLOWED + + MessageText: + + The vector property specified is not allowed in this context.%0 + + + + + MessageId: MF_E_PROPERTY_VECTOR_REQUIRED + + MessageText: + + A vector property is required in this context.%0 + + + + + MessageId: MF_E_OPERATION_CANCELLED + + MessageText: + + The operation is cancelled.%0 + + + + + MessageId: MF_E_BYTESTREAM_NOT_SEEKABLE + + MessageText: + + The provided bytestream was expected to be seekable and it is not.%0 + + + + + MessageId: MF_E_DISABLED_IN_SAFEMODE + + MessageText: + + The Media Foundation platform is disabled when the system is running in Safe Mode.%0 + + + + + MessageId: MF_E_CANNOT_PARSE_BYTESTREAM + + MessageText: + + The Media Source could not parse the byte stream.%0 + + + + + MessageId: MF_E_SOURCERESOLVER_MUTUALLY_EXCLUSIVE_FLAGS + + MessageText: + + Mutually exclusive flags have been specified to source resolver. This flag combination is invalid.%0 + + + + + MessageId: MF_E_MEDIAPROC_WRONGSTATE + + MessageText: + + MediaProc is in the wrong state%0 + + + + + MessageId: MF_E_RT_THROUGHPUT_NOT_AVAILABLE + + MessageText: + + Real time I/O service can not provide requested throughput.%0 + + + + + MessageId: MF_E_RT_TOO_MANY_CLASSES + + MessageText: + + The workqueue cannot be registered with more classes.%0 + + + + + MessageId: MF_E_RT_WOULDBLOCK + + MessageText: + + This operation cannot succeed because another thread owns this object.%0 + + + + + MessageId: MF_E_NO_BITPUMP + + MessageText: + + Internal. Bitpump not found.%0 + + + + + MessageId: MF_E_RT_OUTOFMEMORY + + MessageText: + + No more RT memory available.%0 + + + + + MessageId: MF_E_RT_WORKQUEUE_CLASS_NOT_SPECIFIED + + MessageText: + + An MMCSS class has not been set for this work queue.%0 + + + + + MessageId: MF_E_INSUFFICIENT_BUFFER + + MessageText: + + Insufficient memory for response.%0 + + + + + MessageId: MF_E_CANNOT_CREATE_SINK + + MessageText: + + Activate failed to create mediasink. Call OutputNode::GetUINT32(MF_TOPONODE_MAJORTYPE) for more information. %0 + + + + + MessageId: MF_E_BYTESTREAM_UNKNOWN_LENGTH + + MessageText: + + The length of the provided bytestream is unknown.%0 + + + + + MessageId: MF_E_SESSION_PAUSEWHILESTOPPED + + MessageText: + + The media session cannot pause from a stopped state.%0 + + + + + MessageId: MF_S_ACTIVATE_REPLACED + + MessageText: + + The activate could not be created in the remote process for some reason it was replaced with empty one.%0 + + + + + MessageId: MF_E_FORMAT_CHANGE_NOT_SUPPORTED + + MessageText: + + The data specified for the media type is supported, but would require a format change, which is not supported by this object.%0 + + + + + MessageId: MF_E_INVALID_WORKQUEUE + + MessageText: + + The operation failed because an invalid combination of workqueue ID and flags was specified.%0 + + + + + MessageId: MF_E_DRM_UNSUPPORTED + + MessageText: + + No DRM support is available.%0 + + + + + MessageId: MF_E_UNAUTHORIZED + + MessageText: + + This operation is not authorized.%0 + + + + + MessageId: MF_E_OUT_OF_RANGE + + MessageText: + + The value is not in the specified or valid range.%0 + + + + + MessageId: MF_E_INVALID_CODEC_MERIT + + MessageText: + + The registered codec merit is not valid.%0 + + + + + MessageId: MF_E_HW_MFT_FAILED_START_STREAMING + + MessageText: + + Hardware MFT failed to start streaming due to lack of hardware resources.%0 + + + + + MessageId: MF_S_ASF_PARSEINPROGRESS + + MessageText: + + Parsing is still in progress and is not yet complete.%0 + + + + + MessageId: MF_E_ASF_PARSINGINCOMPLETE + + MessageText: + + Not enough data have been parsed to carry out the requested action.%0 + + + + + MessageId: MF_E_ASF_MISSINGDATA + + MessageText: + + There is a gap in the ASF data provided.%0 + + + + + MessageId: MF_E_ASF_INVALIDDATA + + MessageText: + + The data provided are not valid ASF.%0 + + + + + MessageId: MF_E_ASF_OPAQUEPACKET + + MessageText: + + The packet is opaque, so the requested information cannot be returned.%0 + + + + + MessageId: MF_E_ASF_NOINDEX + + MessageText: + + The requested operation failed since there is no appropriate ASF index.%0 + + + + + MessageId: MF_E_ASF_OUTOFRANGE + + MessageText: + + The value supplied is out of range for this operation.%0 + + + + + MessageId: MF_E_ASF_INDEXNOTLOADED + + MessageText: + + The index entry requested needs to be loaded before it can be available.%0 + + + + + MessageId: MF_E_ASF_TOO_MANY_PAYLOADS + + MessageText: + + The packet has reached the maximum number of payloads.%0 + + + + + MessageId: MF_E_ASF_UNSUPPORTED_STREAM_TYPE + + MessageText: + + Stream type is not supported.%0 + + + + + MessageId: MF_E_ASF_DROPPED_PACKET + + MessageText: + + One or more ASF packets were dropped.%0 + + + + + MessageId: MF_E_NO_EVENTS_AVAILABLE + + MessageText: + + There are no events available in the queue.%0 + + + + + MessageId: MF_E_INVALID_STATE_TRANSITION + + MessageText: + + A media source cannot go from the stopped state to the paused state.%0 + + + + + MessageId: MF_E_END_OF_STREAM + + MessageText: + + The media stream cannot process any more samples because there are no more samples in the stream.%0 + + + + + MessageId: MF_E_SHUTDOWN + + MessageText: + + The request is invalid because Shutdown() has been called.%0 + + + + + MessageId: MF_E_MP3_NOTFOUND + + MessageText: + + The MP3 object was not found.%0 + + + + + MessageId: MF_E_MP3_OUTOFDATA + + MessageText: + + The MP3 parser ran out of data before finding the MP3 object.%0 + + + + + MessageId: MF_E_MP3_NOTMP3 + + MessageText: + + The file is not really a MP3 file.%0 + + + + + MessageId: MF_E_MP3_NOTSUPPORTED + + MessageText: + + The MP3 file is not supported.%0 + + + + + MessageId: MF_E_NO_DURATION + + MessageText: + + The Media stream has no duration.%0 + + + + + MessageId: MF_E_INVALID_FORMAT + + MessageText: + + The Media format is recognized but is invalid.%0 + + + + + MessageId: MF_E_PROPERTY_NOT_FOUND + + MessageText: + + The property requested was not found.%0 + + + + + MessageId: MF_E_PROPERTY_READ_ONLY + + MessageText: + + The property is read only.%0 + + + + + MessageId: MF_E_PROPERTY_NOT_ALLOWED + + MessageText: + + The specified property is not allowed in this context.%0 + + + + + MessageId: MF_E_MEDIA_SOURCE_NOT_STARTED + + MessageText: + + The media source is not started.%0 + + + + + MessageId: MF_E_UNSUPPORTED_FORMAT + + MessageText: + + The Media format is recognized but not supported.%0 + + + + + MessageId: MF_E_MP3_BAD_CRC + + MessageText: + + The MPEG frame has bad CRC.%0 + + + + + MessageId: MF_E_NOT_PROTECTED + + MessageText: + + The file is not protected.%0 + + + + + MessageId: MF_E_MEDIA_SOURCE_WRONGSTATE + + MessageText: + + The media source is in the wrong state%0 + + + + + MessageId: MF_E_MEDIA_SOURCE_NO_STREAMS_SELECTED + + MessageText: + + No streams are selected in source presentation descriptor.%0 + + + + + MessageId: MF_E_CANNOT_FIND_KEYFRAME_SAMPLE + + MessageText: + + No key frame sample was found.%0 + + + + + MessageId: MF_E_NETWORK_RESOURCE_FAILURE + + MessageText: + + An attempt to acquire a network resource failed.%0 + + + + + MessageId: MF_E_NET_WRITE + + MessageText: + + Error writing to the network.%0 + + + + + MessageId: MF_E_NET_READ + + MessageText: + + Error reading from the network.%0 + + + + + MessageId: MF_E_NET_REQUIRE_NETWORK + + MessageText: + + Internal. Entry cannot complete operation without network.%0 + + + + + MessageId: MF_E_NET_REQUIRE_ASYNC + + MessageText: + + Internal. Async op is required.%0 + + + + + MessageId: MF_E_NET_BWLEVEL_NOT_SUPPORTED + + MessageText: + + Internal. Bandwidth levels are not supported.%0 + + + + + MessageId: MF_E_NET_STREAMGROUPS_NOT_SUPPORTED + + MessageText: + + Internal. Stream groups are not supported.%0 + + + + + MessageId: MF_E_NET_MANUALSS_NOT_SUPPORTED + + MessageText: + + Manual stream selection is not supported.%0 + + + + + MessageId: MF_E_NET_INVALID_PRESENTATION_DESCRIPTOR + + MessageText: + + Invalid presentation descriptor.%0 + + + + + MessageId: MF_E_NET_CACHESTREAM_NOT_FOUND + + MessageText: + + Cannot find cache stream.%0 + + + + + MessageId: MF_I_MANUAL_PROXY + + MessageText: + + The proxy setting is manual.%0 + + + + duplicate removed + MessageId=17011 Severity=Informational Facility=MEDIAFOUNDATION SymbolicName=MF_E_INVALID_REQUEST + Language=English + The request is invalid in the current state.%0 + . + + MessageId: MF_E_NET_REQUIRE_INPUT + + MessageText: + + Internal. Entry cannot complete operation without input.%0 + + + + + MessageId: MF_E_NET_REDIRECT + + MessageText: + + The client redirected to another server.%0 + + + + + MessageId: MF_E_NET_REDIRECT_TO_PROXY + + MessageText: + + The client is redirected to a proxy server.%0 + + + + + MessageId: MF_E_NET_TOO_MANY_REDIRECTS + + MessageText: + + The client reached maximum redirection limit.%0 + + + + + MessageId: MF_E_NET_TIMEOUT + + MessageText: + + The server, a computer set up to offer multimedia content to other computers, could not handle your request for multimedia content in a timely manner. Please try again later.%0 + + + + + MessageId: MF_E_NET_CLIENT_CLOSE + + MessageText: + + The control socket is closed by the client.%0 + + + + + MessageId: MF_E_NET_BAD_CONTROL_DATA + + MessageText: + + The server received invalid data from the client on the control connection.%0 + + + + + MessageId: MF_E_NET_INCOMPATIBLE_SERVER + + MessageText: + + The server is not a compatible streaming media server.%0 + + + + + MessageId: MF_E_NET_UNSAFE_URL + + MessageText: + + Url.%0 + + + + + MessageId: MF_E_NET_CACHE_NO_DATA + + MessageText: + + Data is not available.%0 + + + + + MessageId: MF_E_NET_EOL + + MessageText: + + End of line.%0 + + + + + MessageId: MF_E_NET_BAD_REQUEST + + MessageText: + + The request could not be understood by the server.%0 + + + + + MessageId: MF_E_NET_INTERNAL_SERVER_ERROR + + MessageText: + + The server encountered an unexpected condition which prevented it from fulfilling the request.%0 + + + + + MessageId: MF_E_NET_SESSION_NOT_FOUND + + MessageText: + + Session not found.%0 + + + + + MessageId: MF_E_NET_NOCONNECTION + + MessageText: + + There is no connection established with the Windows Media server. The operation failed.%0 + + + + + MessageId: MF_E_NET_CONNECTION_FAILURE + + MessageText: + + The network connection has failed.%0 + + + + + MessageId: MF_E_NET_INCOMPATIBLE_PUSHSERVER + + MessageText: + + The Server service that received the HTTP push request is not a compatible version of Windows Media Services (WMS). This error may indicate the push request was received by IIS instead of WMS. Ensure WMS is started and has the HTTP Server control protocol properly enabled and try again.%0 + + + + + MessageId: MF_E_NET_SERVER_ACCESSDENIED + + MessageText: + + The Windows Media server is denying access. The username and/or password might be incorrect.%0 + + + + + MessageId: MF_E_NET_PROXY_ACCESSDENIED + + MessageText: + + The proxy server is denying access. The username and/or password might be incorrect.%0 + + + + + MessageId: MF_E_NET_CANNOTCONNECT + + MessageText: + + Unable to establish a connection to the server.%0 + + + + + MessageId: MF_E_NET_INVALID_PUSH_TEMPLATE + + MessageText: + + The specified push template is invalid.%0 + + + + + MessageId: MF_E_NET_INVALID_PUSH_PUBLISHING_POINT + + MessageText: + + The specified push publishing point is invalid.%0 + + + + + MessageId: MF_E_NET_BUSY + + MessageText: + + The requested resource is in use.%0 + + + + + MessageId: MF_E_NET_RESOURCE_GONE + + MessageText: + + The Publishing Point or file on the Windows Media Server is no longer available.%0 + + + + + MessageId: MF_E_NET_ERROR_FROM_PROXY + + MessageText: + + The proxy experienced an error while attempting to contact the media server.%0 + + + + + MessageId: MF_E_NET_PROXY_TIMEOUT + + MessageText: + + The proxy did not receive a timely response while attempting to contact the media server.%0 + + + + + MessageId: MF_E_NET_SERVER_UNAVAILABLE + + MessageText: + + The server is currently unable to handle the request due to a temporary overloading or maintenance of the server.%0 + + + + + MessageId: MF_E_NET_TOO_MUCH_DATA + + MessageText: + + The encoding process was unable to keep up with the amount of supplied data.%0 + + + + + MessageId: MF_E_NET_SESSION_INVALID + + MessageText: + + Session not found.%0 + + + + + MessageId: MF_E_OFFLINE_MODE + + MessageText: + + The requested URL is not available in offline mode.%0 + + + + + MessageId: MF_E_NET_UDP_BLOCKED + + MessageText: + + A device in the network is blocking UDP traffic.%0 + + + + + MessageId: MF_E_NET_UNSUPPORTED_CONFIGURATION + + MessageText: + + The specified configuration value is not supported.%0 + + + + + MessageId: MF_E_NET_PROTOCOL_DISABLED + + MessageText: + + The networking protocol is disabled.%0 + + + + + MessageId: MF_E_ALREADY_INITIALIZED + + MessageText: + + This object has already been initialized and cannot be re-initialized at this time.%0 + + + + + MessageId: MF_E_BANDWIDTH_OVERRUN + + MessageText: + + The amount of data passed in exceeds the given bitrate and buffer window.%0 + + + + + MessageId: MF_E_LATE_SAMPLE + + MessageText: + + The sample was passed in too late to be correctly processed.%0 + + + + + MessageId: MF_E_FLUSH_NEEDED + + MessageText: + + The requested action cannot be carried out until the object is flushed and the queue is emptied.%0 + + + + + MessageId: MF_E_INVALID_PROFILE + + MessageText: + + The profile is invalid.%0 + + + + + MessageId: MF_E_INDEX_NOT_COMMITTED + + MessageText: + + The index that is being generated needs to be committed before the requested action can be carried out.%0 + + + + + MessageId: MF_E_NO_INDEX + + MessageText: + + The index that is necessary for the requested action is not found.%0 + + + + + MessageId: MF_E_CANNOT_INDEX_IN_PLACE + + MessageText: + + The requested index cannot be added in-place to the specified ASF content.%0 + + + + + MessageId: MF_E_MISSING_ASF_LEAKYBUCKET + + MessageText: + + The ASF leaky bucket parameters must be specified in order to carry out this request.%0 + + + + + MessageId: MF_E_INVALID_ASF_STREAMID + + MessageText: + + The stream id is invalid. The valid range for ASF stream id is from 1 to 127.%0 + + + + + MessageId: MF_E_STREAMSINK_REMOVED + + MessageText: + + The requested Stream Sink has been removed and cannot be used.%0 + + + + + MessageId: MF_E_STREAMSINKS_OUT_OF_SYNC + + MessageText: + + The various Stream Sinks in this Media Sink are too far out of sync for the requested action to take place.%0 + + + + + MessageId: MF_E_STREAMSINKS_FIXED + + MessageText: + + Stream Sinks cannot be added to or removed from this Media Sink because its set of streams is fixed.%0 + + + + + MessageId: MF_E_STREAMSINK_EXISTS + + MessageText: + + The given Stream Sink already exists.%0 + + + + + MessageId: MF_E_SAMPLEALLOCATOR_CANCELED + + MessageText: + + Sample allocations have been canceled.%0 + + + + + MessageId: MF_E_SAMPLEALLOCATOR_EMPTY + + MessageText: + + The sample allocator is currently empty, due to outstanding requests.%0 + + + + + MessageId: MF_E_SINK_ALREADYSTOPPED + + MessageText: + + When we try to sopt a stream sink, it is already stopped %0 + + + + + MessageId: MF_E_ASF_FILESINK_BITRATE_UNKNOWN + + MessageText: + + The ASF file sink could not reserve AVIO because the bitrate is unknown.%0 + + + + + MessageId: MF_E_SINK_NO_STREAMS + + MessageText: + + No streams are selected in sink presentation descriptor.%0 + + + + + MessageId: MF_S_SINK_NOT_FINALIZED + + MessageText: + + The sink has not been finalized before shut down. This may cause sink generate a corrupted content.%0 + + + + + MessageId: MF_E_METADATA_TOO_LONG + + MessageText: + + A metadata item was too long to write to the output container.%0 + + + + + MessageId: MF_E_SINK_NO_SAMPLES_PROCESSED + + MessageText: + + The operation failed because no samples were processed by the sink.%0 + + + + + MessageId: MF_E_VIDEO_REN_NO_PROCAMP_HW + + MessageText: + + There is no available procamp hardware with which to perform color correction.%0 + + + + + MessageId: MF_E_VIDEO_REN_NO_DEINTERLACE_HW + + MessageText: + + There is no available deinterlacing hardware with which to deinterlace the video stream.%0 + + + + + MessageId: MF_E_VIDEO_REN_COPYPROT_FAILED + + MessageText: + + A video stream requires copy protection to be enabled, but there was a failure in attempting to enable copy protection.%0 + + + + + MessageId: MF_E_VIDEO_REN_SURFACE_NOT_SHARED + + MessageText: + + A component is attempting to access a surface for sharing that is not shared.%0 + + + + + MessageId: MF_E_VIDEO_DEVICE_LOCKED + + MessageText: + + A component is attempting to access a shared device that is already locked by another component.%0 + + + + + MessageId: MF_E_NEW_VIDEO_DEVICE + + MessageText: + + The device is no longer available. The handle should be closed and a new one opened.%0 + + + + + MessageId: MF_E_NO_VIDEO_SAMPLE_AVAILABLE + + MessageText: + + A video sample is not currently queued on a stream that is required for mixing.%0 + + + + + MessageId: MF_E_NO_AUDIO_PLAYBACK_DEVICE + + MessageText: + + No audio playback device was found.%0 + + + + + MessageId: MF_E_AUDIO_PLAYBACK_DEVICE_IN_USE + + MessageText: + + The requested audio playback device is currently in use.%0 + + + + + MessageId: MF_E_AUDIO_PLAYBACK_DEVICE_INVALIDATED + + MessageText: + + The audio playback device is no longer present.%0 + + + + + MessageId: MF_E_AUDIO_SERVICE_NOT_RUNNING + + MessageText: + + The audio service is not running.%0 + + + + + MessageId: MF_E_TOPO_INVALID_OPTIONAL_NODE + + MessageText: + + The topology contains an invalid optional node. Possible reasons are incorrect number of outputs and inputs or optional node is at the beginning or end of a segment. %0 + + + + + MessageId: MF_E_TOPO_CANNOT_FIND_DECRYPTOR + + MessageText: + + No suitable transform was found to decrypt the content. %0 + + + + + MessageId: MF_E_TOPO_CODEC_NOT_FOUND + + MessageText: + + No suitable transform was found to encode or decode the content. %0 + + + + + MessageId: MF_E_TOPO_CANNOT_CONNECT + + MessageText: + + Unable to find a way to connect nodes%0 + + + + + MessageId: MF_E_TOPO_UNSUPPORTED + + MessageText: + + Unsupported operations in topoloader%0 + + + + + MessageId: MF_E_TOPO_INVALID_TIME_ATTRIBUTES + + MessageText: + + The topology or its nodes contain incorrectly set time attributes%0 + + + + + MessageId: MF_E_TOPO_LOOPS_IN_TOPOLOGY + + MessageText: + + The topology contains loops, which are unsupported in media foundation topologies%0 + + + + + MessageId: MF_E_TOPO_MISSING_PRESENTATION_DESCRIPTOR + + MessageText: + + A source stream node in the topology does not have a presentation descriptor%0 + + + + + MessageId: MF_E_TOPO_MISSING_STREAM_DESCRIPTOR + + MessageText: + + A source stream node in the topology does not have a stream descriptor%0 + + + + + MessageId: MF_E_TOPO_STREAM_DESCRIPTOR_NOT_SELECTED + + MessageText: + + A stream descriptor was set on a source stream node but it was not selected on the presentation descriptor%0 + + + + + MessageId: MF_E_TOPO_MISSING_SOURCE + + MessageText: + + A source stream node in the topology does not have a source%0 + + + + + MessageId: MF_E_TOPO_SINK_ACTIVATES_UNSUPPORTED + + MessageText: + + The topology loader does not support sink activates on output nodes.%0 + + + + + MessageId: MF_E_SEQUENCER_UNKNOWN_SEGMENT_ID + + MessageText: + + The sequencer cannot find a segment with the given ID.%0\n. + + + + + MessageId: MF_S_SEQUENCER_CONTEXT_CANCELED + + MessageText: + + The context was canceled.%0\n. + + + + + MessageId: MF_E_NO_SOURCE_IN_CACHE + + MessageText: + + Cannot find source in source cache.%0\n. + + + + + MessageId: MF_S_SEQUENCER_SEGMENT_AT_END_OF_STREAM + + MessageText: + + Cannot update topology flags.%0\n. + + + + + MessageId: MF_E_TRANSFORM_TYPE_NOT_SET + + MessageText: + + A valid type has not been set for this stream or a stream that it depends on.%0 + + + + + MessageId: MF_E_TRANSFORM_STREAM_CHANGE + + MessageText: + + A stream change has occurred. Output cannot be produced until the streams have been renegotiated.%0 + + + + + MessageId: MF_E_TRANSFORM_INPUT_REMAINING + + MessageText: + + The transform cannot take the requested action until all of the input data it currently holds is processed or flushed.%0 + + + + + MessageId: MF_E_TRANSFORM_PROFILE_MISSING + + MessageText: + + The transform requires a profile but no profile was supplied or found.%0 + + + + + MessageId: MF_E_TRANSFORM_PROFILE_INVALID_OR_CORRUPT + + MessageText: + + The transform requires a profile but the supplied profile was invalid or corrupt.%0 + + + + + MessageId: MF_E_TRANSFORM_PROFILE_TRUNCATED + + MessageText: + + The transform requires a profile but the supplied profile ended unexpectedly while parsing.%0 + + + + + MessageId: MF_E_TRANSFORM_PROPERTY_PID_NOT_RECOGNIZED + + MessageText: + + The property ID does not match any property supported by the transform.%0 + + + + + MessageId: MF_E_TRANSFORM_PROPERTY_VARIANT_TYPE_WRONG + + MessageText: + + The variant does not have the type expected for this property ID.%0 + + + + + MessageId: MF_E_TRANSFORM_PROPERTY_NOT_WRITEABLE + + MessageText: + + An attempt was made to set the value on a read-only property.%0 + + + + + MessageId: MF_E_TRANSFORM_PROPERTY_ARRAY_VALUE_WRONG_NUM_DIM + + MessageText: + + The array property value has an unexpected number of dimensions.%0 + + + + + MessageId: MF_E_TRANSFORM_PROPERTY_VALUE_SIZE_WRONG + + MessageText: + + The array or blob property value has an unexpected size.%0 + + + + + MessageId: MF_E_TRANSFORM_PROPERTY_VALUE_OUT_OF_RANGE + + MessageText: + + The property value is out of range for this transform.%0 + + + + + MessageId: MF_E_TRANSFORM_PROPERTY_VALUE_INCOMPATIBLE + + MessageText: + + The property value is incompatible with some other property or mediatype set on the transform.%0 + + + + + MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_OUTPUT_MEDIATYPE + + MessageText: + + The requested operation is not supported for the currently set output mediatype.%0 + + + + + MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_INPUT_MEDIATYPE + + MessageText: + + The requested operation is not supported for the currently set input mediatype.%0 + + + + + MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_MEDIATYPE_COMBINATION + + MessageText: + + The requested operation is not supported for the currently set combination of mediatypes.%0 + + + + + MessageId: MF_E_TRANSFORM_CONFLICTS_WITH_OTHER_CURRENTLY_ENABLED_FEATURES + + MessageText: + + The requested feature is not supported in combination with some other currently enabled feature.%0 + + + + + MessageId: MF_E_TRANSFORM_NEED_MORE_INPUT + + MessageText: + + The transform cannot produce output until it gets more input samples.%0 + + + + + MessageId: MF_E_TRANSFORM_NOT_POSSIBLE_FOR_CURRENT_SPKR_CONFIG + + MessageText: + + The requested operation is not supported for the current speaker configuration.%0 + + + + + MessageId: MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING + + MessageText: + + The transform cannot accept mediatype changes in the middle of processing.%0 + + + + + MessageId: MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT + + MessageText: + + The caller should not propagate this event to downstream components.%0 + + + + + MessageId: MF_E_UNSUPPORTED_D3D_TYPE + + MessageText: + + The input type is not supported for D3D device.%0 + + + + + MessageId: MF_E_TRANSFORM_ASYNC_LOCKED + + MessageText: + + The caller does not appear to support this transform's asynchronous capabilities.%0 + + + + + MessageId: MF_E_TRANSFORM_CANNOT_INITIALIZE_ACM_DRIVER + + MessageText: + + An audio compression manager driver could not be initialized by the transform.%0 + + + + + MessageId: MF_E_LICENSE_INCORRECT_RIGHTS + + MessageText: + + You are not allowed to open this file. Contact the content provider for further assistance.%0 + + + + + MessageId: MF_E_LICENSE_OUTOFDATE + + MessageText: + + The license for this media file has expired. Get a new license or contact the content provider for further assistance.%0 + + + + + MessageId: MF_E_LICENSE_REQUIRED + + MessageText: + + You need a license to perform the requested operation on this media file.%0 + + + + + MessageId: MF_E_DRM_HARDWARE_INCONSISTENT + + MessageText: + + The licenses for your media files are corrupted. Contact Microsoft product support.%0 + + + + + MessageId: MF_E_NO_CONTENT_PROTECTION_MANAGER + + MessageText: + + The APP needs to provide IMFContentProtectionManager callback to access the protected media file.%0 + + + + + MessageId: MF_E_LICENSE_RESTORE_NO_RIGHTS + + MessageText: + + Client does not have rights to restore licenses.%0 + + + + + MessageId: MF_E_BACKUP_RESTRICTED_LICENSE + + MessageText: + + Licenses are restricted and hence can not be backed up.%0 + + + + + MessageId: MF_E_LICENSE_RESTORE_NEEDS_INDIVIDUALIZATION + + MessageText: + + License restore requires machine to be individualized.%0 + + + + + MessageId: MF_S_PROTECTION_NOT_REQUIRED + + MessageText: + + Protection for stream is not required.%0 + + + + + MessageId: MF_E_COMPONENT_REVOKED + + MessageText: + + Component is revoked.%0 + + + + + MessageId: MF_E_TRUST_DISABLED + + MessageText: + + Trusted functionality is currently disabled on this component.%0 + + + + + MessageId: MF_E_WMDRMOTA_NO_ACTION + + MessageText: + + No Action is set on WMDRM Output Trust Authority.%0 + + + + + MessageId: MF_E_WMDRMOTA_ACTION_ALREADY_SET + + MessageText: + + Action is already set on WMDRM Output Trust Authority.%0 + + + + + MessageId: MF_E_WMDRMOTA_DRM_HEADER_NOT_AVAILABLE + + MessageText: + + DRM Heaader is not available.%0 + + + + + MessageId: MF_E_WMDRMOTA_DRM_ENCRYPTION_SCHEME_NOT_SUPPORTED + + MessageText: + + Current encryption scheme is not supported.%0 + + + + + MessageId: MF_E_WMDRMOTA_ACTION_MISMATCH + + MessageText: + + Action does not match with current configuration.%0 + + + + + MessageId: MF_E_WMDRMOTA_INVALID_POLICY + + MessageText: + + Invalid policy for WMDRM Output Trust Authority.%0 + + + + + MessageId: MF_E_POLICY_UNSUPPORTED + + MessageText: + + The policies that the Input Trust Authority requires to be enforced are unsupported by the outputs.%0 + + + + + MessageId: MF_E_OPL_NOT_SUPPORTED + + MessageText: + + The OPL that the license requires to be enforced are not supported by the Input Trust Authority.%0 + + + + + MessageId: MF_E_TOPOLOGY_VERIFICATION_FAILED + + MessageText: + + The topology could not be successfully verified.%0 + + + + + MessageId: MF_E_SIGNATURE_VERIFICATION_FAILED + + MessageText: + + Signature verification could not be completed successfully for this component.%0 + + + + + MessageId: MF_E_DEBUGGING_NOT_ALLOWED + + MessageText: + + Running this process under a debugger while using protected content is not allowed.%0 + + + + + MessageId: MF_E_CODE_EXPIRED + + MessageText: + + MF component has expired.%0 + + + + + MessageId: MF_E_GRL_VERSION_TOO_LOW + + MessageText: + + The current GRL on the machine does not meet the minimum version requirements.%0 + + + + + MessageId: MF_E_GRL_RENEWAL_NOT_FOUND + + MessageText: + + The current GRL on the machine does not contain any renewal entries for the specified revocation.%0 + + + + + MessageId: MF_E_GRL_EXTENSIBLE_ENTRY_NOT_FOUND + + MessageText: + + The current GRL on the machine does not contain any extensible entries for the specified extension GUID.%0 + + + + + MessageId: MF_E_KERNEL_UNTRUSTED + + MessageText: + + The kernel isn't secure for high security level content.%0 + + + + + MessageId: MF_E_PEAUTH_UNTRUSTED + + MessageText: + + The response from protected environment driver isn't valid.%0 + + + + + MessageId: MF_E_NON_PE_PROCESS + + MessageText: + + A non-PE process tried to talk to PEAuth.%0 + + + + + MessageId: MF_E_REBOOT_REQUIRED + + MessageText: + + We need to reboot the machine.%0 + + + + + MessageId: MF_S_WAIT_FOR_POLICY_SET + + MessageText: + + Protection for this stream is not guaranteed to be enforced until the MEPolicySet event is fired.%0 + + + + + MessageId: MF_S_VIDEO_DISABLED_WITH_UNKNOWN_SOFTWARE_OUTPUT + + MessageText: + + This video stream is disabled because it is being sent to an unknown software output.%0 + + + + + MessageId: MF_E_GRL_INVALID_FORMAT + + MessageText: + + The GRL file is not correctly formed, it may have been corrupted or overwritten.%0 + + + + + MessageId: MF_E_GRL_UNRECOGNIZED_FORMAT + + MessageText: + + The GRL file is in a format newer than those recognized by this GRL Reader.%0 + + + + + MessageId: MF_E_ALL_PROCESS_RESTART_REQUIRED + + MessageText: + + The GRL was reloaded and required all processes that can run protected media to restart.%0 + + + + + MessageId: MF_E_PROCESS_RESTART_REQUIRED + + MessageText: + + The GRL was reloaded and the current process needs to restart.%0 + + + + + MessageId: MF_E_USERMODE_UNTRUSTED + + MessageText: + + The user space is untrusted for protected content play.%0 + + + + + MessageId: MF_E_PEAUTH_SESSION_NOT_STARTED + + MessageText: + + PEAuth communication session hasn't been started.%0 + + + + + MessageId: MF_E_PEAUTH_PUBLICKEY_REVOKED + + MessageText: + + PEAuth's public key is revoked.%0 + + + + + MessageId: MF_E_GRL_ABSENT + + MessageText: + + The GRL is absent.%0 + + + + + MessageId: MF_S_PE_TRUSTED + + MessageText: + + The Protected Environment is trusted.%0 + + + + + MessageId: MF_E_PE_UNTRUSTED + + MessageText: + + The Protected Environment is untrusted.%0 + + + + + MessageId: MF_E_PEAUTH_NOT_STARTED + + MessageText: + + The Protected Environment Authorization service (PEAUTH) has not been started.%0 + + + + + MessageId: MF_E_INCOMPATIBLE_SAMPLE_PROTECTION + + MessageText: + + The sample protection algorithms supported by components are not compatible.%0 + + + + + MessageId: MF_E_PE_SESSIONS_MAXED + + MessageText: + + No more protected environment sessions can be supported.%0 + + + + + MessageId: MF_E_HIGH_SECURITY_LEVEL_CONTENT_NOT_ALLOWED + + MessageText: + + WMDRM ITA does not allow protected content with high security level for this release.%0 + + + + + MessageId: MF_E_TEST_SIGNED_COMPONENTS_NOT_ALLOWED + + MessageText: + + WMDRM ITA cannot allow the requested action for the content as one or more components is not properly signed.%0 + + + + + MessageId: MF_E_ITA_UNSUPPORTED_ACTION + + MessageText: + + WMDRM ITA does not support the requested action.%0 + + + + + MessageId: MF_E_ITA_ERROR_PARSING_SAP_PARAMETERS + + MessageText: + + WMDRM ITA encountered an error in parsing the Secure Audio Path parameters.%0 + + + + + MessageId: MF_E_POLICY_MGR_ACTION_OUTOFBOUNDS + + MessageText: + + The Policy Manager action passed in is invalid.%0 + + + + + MessageId: MF_E_BAD_OPL_STRUCTURE_FORMAT + + MessageText: + + The structure specifying Output Protection Level is not the correct format.%0 + + + + + MessageId: MF_E_ITA_UNRECOGNIZED_ANALOG_VIDEO_PROTECTION_GUID + + MessageText: + + WMDRM ITA does not recognize the Explicite Analog Video Output Protection guid specified in the license.%0 + + + + + MessageId: MF_E_NO_PMP_HOST + + MessageText: + + IMFPMPHost object not available.%0 + + + + + MessageId: MF_E_ITA_OPL_DATA_NOT_INITIALIZED + + MessageText: + + WMDRM ITA could not initialize the Output Protection Level data.%0 + + + + + MessageId: MF_E_ITA_UNRECOGNIZED_ANALOG_VIDEO_OUTPUT + + MessageText: + + WMDRM ITA does not recognize the Analog Video Output specified by the OTA.%0 + + + + + MessageId: MF_E_ITA_UNRECOGNIZED_DIGITAL_VIDEO_OUTPUT + + MessageText: + + WMDRM ITA does not recognize the Digital Video Output specified by the OTA.%0 + + + + + MessageId: MF_E_CLOCK_INVALID_CONTINUITY_KEY + + MessageText: + + The continuity key supplied is not currently valid.%0 + + + + + MessageId: MF_E_CLOCK_NO_TIME_SOURCE + + MessageText: + + No Presentation Time Source has been specified.%0 + + + + + MessageId: MF_E_CLOCK_STATE_ALREADY_SET + + MessageText: + + The clock is already in the requested state.%0 + + + + + MessageId: MF_E_CLOCK_NOT_SIMPLE + + MessageText: + + The clock has too many advanced features to carry out the request.%0 + + + + + MessageId: MF_S_CLOCK_STOPPED + + MessageText: + + Timer::SetTimer returns this success code if called happened while timer is stopped. Timer is not going to be dispatched until clock is running%0 + + + + + MessageId: MF_E_NO_MORE_DROP_MODES + + MessageText: + + The component does not support any more drop modes.%0 + + + + + MessageId: MF_E_NO_MORE_QUALITY_LEVELS + + MessageText: + + The component does not support any more quality levels.%0 + + + + + MessageId: MF_E_DROPTIME_NOT_SUPPORTED + + MessageText: + + The component does not support drop time functionality.%0 + + + + + MessageId: MF_E_QUALITYKNOB_WAIT_LONGER + + MessageText: + + Quality Manager needs to wait longer before bumping the Quality Level up.%0 + + + + + MessageId: MF_E_QM_INVALIDSTATE + + MessageText: + + Quality Manager is in an invalid state. Quality Management is off at this moment.%0 + + + + + MessageId: MF_E_TRANSCODE_NO_CONTAINERTYPE + + MessageText: + + No transcode output container type is specified.%0 + + + + + MessageId: MF_E_TRANSCODE_PROFILE_NO_MATCHING_STREAMS + + MessageText: + + The profile does not have a media type configuration for any selected source streams.%0 + + + + + MessageId: MF_E_TRANSCODE_NO_MATCHING_ENCODER + + MessageText: + + Cannot find an encoder MFT that accepts the user preferred output type.%0 + + + + + MessageId: MF_E_ALLOCATOR_NOT_INITIALIZED + + MessageText: + + Memory allocator is not initialized.%0 + + + + + MessageId: MF_E_ALLOCATOR_NOT_COMMITED + + MessageText: + + Memory allocator is not committed yet.%0 + + + + + MessageId: MF_E_ALLOCATOR_ALREADY_COMMITED + + MessageText: + + Memory allocator has already been committed.%0 + + + + + MessageId: MF_E_STREAM_ERROR + + MessageText: + + An error occurred in media stream.%0 + + + + + MessageId: MF_E_INVALID_STREAM_STATE + + MessageText: + + Stream is not in a state to handle the request.%0 + + + + + MessageId: MF_E_HW_STREAM_NOT_CONNECTED + + MessageText: + + Hardware stream is not connected yet.%0 + + + + + Major Media Types + http://msdn.microsoft.com/en-us/library/windows/desktop/aa367377%28v=vs.85%29.aspx + + + + + Default + + + + + Audio + + + + + Video + + + + + Protected Media + + + + + Synchronized Accessible Media Interchange (SAMI) captions. + + + + + Script stream + + + + + Still image stream. + + + + + HTML stream. + + + + + Binary stream. + + + + + A stream that contains data files. + + + + + IMFActivate, defined in mfobjects.h + + + + + Retrieves the value associated with a key. + + + + + Retrieves the data type of the value associated with a key. + + + + + Queries whether a stored attribute value equals a specified PROPVARIANT. + + + + + Compares the attributes on this object with the attributes on another object. + + + + + Retrieves a UINT32 value associated with a key. + + + + + Retrieves a UINT64 value associated with a key. + + + + + Retrieves a double value associated with a key. + + + + + Retrieves a GUID value associated with a key. + + + + + Retrieves the length of a string value associated with a key. + + + + + Retrieves a wide-character string associated with a key. + + + + + Retrieves a wide-character string associated with a key. This method allocates the memory for the string. + + + + + Retrieves the length of a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. This method allocates the memory for the array. + + + + + Retrieves an interface pointer associated with a key. + + + + + Associates an attribute value with a key. + + + + + Removes a key/value pair from the object's attribute list. + + + + + Removes all key/value pairs from the object's attribute list. + + + + + Associates a UINT32 value with a key. + + + + + Associates a UINT64 value with a key. + + + + + Associates a double value with a key. + + + + + Associates a GUID value with a key. + + + + + Associates a wide-character string with a key. + + + + + Associates a byte array with a key. + + + + + Associates an IUnknown pointer with a key. + + + + + Locks the attribute store so that no other thread can access it. + + + + + Unlocks the attribute store. + + + + + Retrieves the number of attributes that are set on this object. + + + + + Retrieves an attribute at the specified index. + + + + + Copies all of the attributes from this object into another attribute store. + + + + + Creates the object associated with this activation object. + + + + + Shuts down the created object. + + + + + Detaches the created object from the activation object. + + + + + Represents a generic collection of IUnknown pointers. + + + + + Retrieves the number of objects in the collection. + + + + + Retrieves an object in the collection. + + + + + Adds an object to the collection. + + + + + Removes an object from the collection. + + + + + Removes an object from the collection. + + + + + Removes all items from the collection. + + + + + IMFMediaEvent - Represents an event generated by a Media Foundation object. Use this interface to get information about the event. + http://msdn.microsoft.com/en-us/library/windows/desktop/ms702249%28v=vs.85%29.aspx + Mfobjects.h + + + + + Retrieves the value associated with a key. + + + + + Retrieves the data type of the value associated with a key. + + + + + Queries whether a stored attribute value equals a specified PROPVARIANT. + + + + + Compares the attributes on this object with the attributes on another object. + + + + + Retrieves a UINT32 value associated with a key. + + + + + Retrieves a UINT64 value associated with a key. + + + + + Retrieves a double value associated with a key. + + + + + Retrieves a GUID value associated with a key. + + + + + Retrieves the length of a string value associated with a key. + + + + + Retrieves a wide-character string associated with a key. + + + + + Retrieves a wide-character string associated with a key. This method allocates the memory for the string. + + + + + Retrieves the length of a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. This method allocates the memory for the array. + + + + + Retrieves an interface pointer associated with a key. + + + + + Associates an attribute value with a key. + + + + + Removes a key/value pair from the object's attribute list. + + + + + Removes all key/value pairs from the object's attribute list. + + + + + Associates a UINT32 value with a key. + + + + + Associates a UINT64 value with a key. + + + + + Associates a double value with a key. + + + + + Associates a GUID value with a key. + + + + + Associates a wide-character string with a key. + + + + + Associates a byte array with a key. + + + + + Associates an IUnknown pointer with a key. + + + + + Locks the attribute store so that no other thread can access it. + + + + + Unlocks the attribute store. + + + + + Retrieves the number of attributes that are set on this object. + + + + + Retrieves an attribute at the specified index. + + + + + Copies all of the attributes from this object into another attribute store. + + + + + Retrieves the event type. + + + virtual HRESULT STDMETHODCALLTYPE GetType( + /* [out] */ __RPC__out MediaEventType *pmet) = 0; + + + + + Retrieves the extended type of the event. + + + virtual HRESULT STDMETHODCALLTYPE GetExtendedType( + /* [out] */ __RPC__out GUID *pguidExtendedType) = 0; + + + + + Retrieves an HRESULT that specifies the event status. + + + virtual HRESULT STDMETHODCALLTYPE GetStatus( + /* [out] */ __RPC__out HRESULT *phrStatus) = 0; + + + + + Retrieves the value associated with the event, if any. + + + virtual HRESULT STDMETHODCALLTYPE GetValue( + /* [out] */ __RPC__out PROPVARIANT *pvValue) = 0; + + + + + Implemented by the Microsoft Media Foundation sink writer object. + + + + + Adds a stream to the sink writer. + + + + + Sets the input format for a stream on the sink writer. + + + + + Initializes the sink writer for writing. + + + + + Delivers a sample to the sink writer. + + + + + Indicates a gap in an input stream. + + + + + Places a marker in the specified stream. + + + + + Notifies the media sink that a stream has reached the end of a segment. + + + + + Flushes one or more streams. + + + + + (Finalize) Completes all writing operations on the sink writer. + + + + + Queries the underlying media sink or encoder for an interface. + + + + + Gets statistics about the performance of the sink writer. + + + + + IMFTransform, defined in mftransform.h + + + + + Retrieves the minimum and maximum number of input and output streams. + + + virtual HRESULT STDMETHODCALLTYPE GetStreamLimits( + /* [out] */ __RPC__out DWORD *pdwInputMinimum, + /* [out] */ __RPC__out DWORD *pdwInputMaximum, + /* [out] */ __RPC__out DWORD *pdwOutputMinimum, + /* [out] */ __RPC__out DWORD *pdwOutputMaximum) = 0; + + + + + Retrieves the current number of input and output streams on this MFT. + + + virtual HRESULT STDMETHODCALLTYPE GetStreamCount( + /* [out] */ __RPC__out DWORD *pcInputStreams, + /* [out] */ __RPC__out DWORD *pcOutputStreams) = 0; + + + + + Retrieves the stream identifiers for the input and output streams on this MFT. + + + virtual HRESULT STDMETHODCALLTYPE GetStreamIDs( + DWORD dwInputIDArraySize, + /* [size_is][out] */ __RPC__out_ecount_full(dwInputIDArraySize) DWORD *pdwInputIDs, + DWORD dwOutputIDArraySize, + /* [size_is][out] */ __RPC__out_ecount_full(dwOutputIDArraySize) DWORD *pdwOutputIDs) = 0; + + + + + Gets the buffer requirements and other information for an input stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo( + DWORD dwInputStreamID, + /* [out] */ __RPC__out MFT_INPUT_STREAM_INFO *pStreamInfo) = 0; + + + + + Gets the buffer requirements and other information for an output stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo( + DWORD dwOutputStreamID, + /* [out] */ __RPC__out MFT_OUTPUT_STREAM_INFO *pStreamInfo) = 0; + + + + + Gets the global attribute store for this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE GetAttributes( + /* [out] */ __RPC__deref_out_opt IMFAttributes **pAttributes) = 0; + + + + + Retrieves the attribute store for an input stream on this MFT. + + + virtual HRESULT STDMETHODCALLTYPE GetInputStreamAttributes( + DWORD dwInputStreamID, + /* [out] */ __RPC__deref_out_opt IMFAttributes **pAttributes) = 0; + + + + + Retrieves the attribute store for an output stream on this MFT. + + + virtual HRESULT STDMETHODCALLTYPE GetOutputStreamAttributes( + DWORD dwOutputStreamID, + /* [out] */ __RPC__deref_out_opt IMFAttributes **pAttributes) = 0; + + + + + Removes an input stream from this MFT. + + + virtual HRESULT STDMETHODCALLTYPE DeleteInputStream( + DWORD dwStreamID) = 0; + + + + + Adds one or more new input streams to this MFT. + + + virtual HRESULT STDMETHODCALLTYPE AddInputStreams( + DWORD cStreams, + /* [in] */ __RPC__in DWORD *adwStreamIDs) = 0; + + + + + Gets an available media type for an input stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE GetInputAvailableType( + DWORD dwInputStreamID, + DWORD dwTypeIndex, + /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0; + + + + + Retrieves an available media type for an output stream on this MFT. + + + virtual HRESULT STDMETHODCALLTYPE GetOutputAvailableType( + DWORD dwOutputStreamID, + DWORD dwTypeIndex, + /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0; + + + + + Sets, tests, or clears the media type for an input stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE SetInputType( + DWORD dwInputStreamID, + /* [in] */ __RPC__in_opt IMFMediaType *pType, + DWORD dwFlags) = 0; + + + + + Sets, tests, or clears the media type for an output stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE SetOutputType( + DWORD dwOutputStreamID, + /* [in] */ __RPC__in_opt IMFMediaType *pType, + DWORD dwFlags) = 0; + + + + + Gets the current media type for an input stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType( + DWORD dwInputStreamID, + /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0; + + + + + Gets the current media type for an output stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType( + DWORD dwOutputStreamID, + /* [out] */ __RPC__deref_out_opt IMFMediaType **ppType) = 0; + + + + + Queries whether an input stream on this Media Foundation transform (MFT) can accept more data. + + + virtual HRESULT STDMETHODCALLTYPE GetInputStatus( + DWORD dwInputStreamID, + /* [out] */ __RPC__out DWORD *pdwFlags) = 0; + + + + + Queries whether the Media Foundation transform (MFT) is ready to produce output data. + + + virtual HRESULT STDMETHODCALLTYPE GetOutputStatus( + /* [out] */ __RPC__out DWORD *pdwFlags) = 0; + + + + + Sets the range of time stamps the client needs for output. + + + virtual HRESULT STDMETHODCALLTYPE SetOutputBounds( + LONGLONG hnsLowerBound, + LONGLONG hnsUpperBound) = 0; + + + + + Sends an event to an input stream on this Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE ProcessEvent( + DWORD dwInputStreamID, + /* [in] */ __RPC__in_opt IMFMediaEvent *pEvent) = 0; + + + + + Sends a message to the Media Foundation transform (MFT). + + + virtual HRESULT STDMETHODCALLTYPE ProcessMessage( + MFT_MESSAGE_TYPE eMessage, + ULONG_PTR ulParam) = 0; + + + + + Delivers data to an input stream on this Media Foundation transform (MFT). + + + virtual /* [local] */ HRESULT STDMETHODCALLTYPE ProcessInput( + DWORD dwInputStreamID, + IMFSample *pSample, + DWORD dwFlags) = 0; + + + + + Generates output from the current input data. + + + virtual /* [local] */ HRESULT STDMETHODCALLTYPE ProcessOutput( + DWORD dwFlags, + DWORD cOutputBufferCount, + /* [size_is][out][in] */ MFT_OUTPUT_DATA_BUFFER *pOutputSamples, + /* [out] */ DWORD *pdwStatus) = 0; + + + + + See mfobjects.h + + + + + Unknown event type. + + + + + Signals a serious error. + + + + + Custom event type. + + + + + A non-fatal error occurred during streaming. + + + + + Session Unknown + + + + + Raised after the IMFMediaSession::SetTopology method completes asynchronously + + + + + Raised by the Media Session when the IMFMediaSession::ClearTopologies method completes asynchronously. + + + + + Raised when the IMFMediaSession::Start method completes asynchronously. + + + + + Raised when the IMFMediaSession::Pause method completes asynchronously. + + + + + Raised when the IMFMediaSession::Stop method completes asynchronously. + + + + + Raised when the IMFMediaSession::Close method completes asynchronously. + + + + + Raised by the Media Session when it has finished playing the last presentation in the playback queue. + + + + + Raised by the Media Session when the playback rate changes. + + + + + Raised by the Media Session when it completes a scrubbing request. + + + + + Raised by the Media Session when the session capabilities change. + + + + + Raised by the Media Session when the status of a topology changes. + + + + + Raised by the Media Session when a new presentation starts. + + + + + Raised by a media source a new presentation is ready. + + + + + License acquisition is about to begin. + + + + + License acquisition is complete. + + + + + Individualization is about to begin. + + + + + Individualization is complete. + + + + + Signals the progress of a content enabler object. + + + + + A content enabler object's action is complete. + + + + + Raised by a trusted output if an error occurs while enforcing the output policy. + + + + + Contains status information about the enforcement of an output policy. + + + + + A media source started to buffer data. + + + + + A media source stopped buffering data. + + + + + The network source started opening a URL. + + + + + The network source finished opening a URL. + + + + + Raised by a media source at the start of a reconnection attempt. + + + + + Raised by a media source at the end of a reconnection attempt. + + + + + Raised by the enhanced video renderer (EVR) when it receives a user event from the presenter. + + + + + Raised by the Media Session when the format changes on a media sink. + + + + + Source Unknown + + + + + Raised when a media source starts without seeking. + + + + + Raised by a media stream when the source starts without seeking. + + + + + Raised when a media source seeks to a new position. + + + + + Raised by a media stream after a call to IMFMediaSource::Start causes a seek in the stream. + + + + + Raised by a media source when it starts a new stream. + + + + + Raised by a media source when it restarts or seeks a stream that is already active. + + + + + Raised by a media source when the IMFMediaSource::Stop method completes asynchronously. + + + + + Raised by a media stream when the IMFMediaSource::Stop method completes asynchronously. + + + + + Raised by a media source when the IMFMediaSource::Pause method completes asynchronously. + + + + + Raised by a media stream when the IMFMediaSource::Pause method completes asynchronously. + + + + + Raised by a media source when a presentation ends. + + + + + Raised by a media stream when the stream ends. + + + + + Raised when a media stream delivers a new sample. + + + + + Signals that a media stream does not have data available at a specified time. + + + + + Raised by a media stream when it starts or stops thinning the stream. + + + + + Raised by a media stream when the media type of the stream changes. + + + + + Raised by a media source when the playback rate changes. + + + + + Raised by the sequencer source when a segment is completed and is followed by another segment. + + + + + Raised by a media source when the source's characteristics change. + + + + + Raised by a media source to request a new playback rate. + + + + + Raised by a media source when it updates its metadata. + + + + + Raised by the sequencer source when the IMFSequencerSource::UpdateTopology method completes asynchronously. + + + + + Sink Unknown + + + + + Raised by a stream sink when it completes the transition to the running state. + + + + + Raised by a stream sink when it completes the transition to the stopped state. + + + + + Raised by a stream sink when it completes the transition to the paused state. + + + + + Raised by a stream sink when the rate has changed. + + + + + Raised by a stream sink to request a new media sample from the pipeline. + + + + + Raised by a stream sink after the IMFStreamSink::PlaceMarker method is called. + + + + + Raised by a stream sink when the stream has received enough preroll data to begin rendering. + + + + + Raised by a stream sink when it completes a scrubbing request. + + + + + Raised by a stream sink when the sink's media type is no longer valid. + + + + + Raised by the stream sinks of the EVR if the video device changes. + + + + + Provides feedback about playback quality to the quality manager. + + + + + Raised when a media sink becomes invalid. + + + + + The audio session display name changed. + + + + + The volume or mute state of the audio session changed + + + + + The audio device was removed. + + + + + The Windows audio server system was shut down. + + + + + The grouping parameters changed for the audio session. + + + + + The audio session icon changed. + + + + + The default audio format for the audio device changed. + + + + + The audio session was disconnected from a Windows Terminal Services session + + + + + The audio session was preempted by an exclusive-mode connection. + + + + + Trust Unknown + + + + + The output policy for a stream changed. + + + + + Content protection message + + + + + The IMFOutputTrustAuthority::SetPolicy method completed. + + + + + DRM License Backup Completed + + + + + DRM License Backup Progress + + + + + DRM License Restore Completed + + + + + DRM License Restore Progress + + + + + DRM License Acquisition Completed + + + + + DRM Individualization Completed + + + + + DRM Individualization Progress + + + + + DRM Proximity Completed + + + + + DRM License Store Cleaned + + + + + DRM Revocation Download Completed + + + + + Transform Unknown + + + + + Sent by an asynchronous MFT to request a new input sample. + + + + + Sent by an asynchronous MFT when new output data is available from the MFT. + + + + + Sent by an asynchronous Media Foundation transform (MFT) when a drain operation is complete. + + + + + Sent by an asynchronous MFT in response to an MFT_MESSAGE_COMMAND_MARKER message. + + + + + Media Foundation attribute guids + http://msdn.microsoft.com/en-us/library/windows/desktop/ms696989%28v=vs.85%29.aspx + + + + + Specifies whether an MFT performs asynchronous processing. + + + + + Enables the use of an asynchronous MFT. + + + + + Contains flags for an MFT activation object. + + + + + Specifies the category for an MFT. + + + + + Contains the class identifier (CLSID) of an MFT. + + + + + Contains the registered input types for a Media Foundation transform (MFT). + + + + + Contains the registered output types for a Media Foundation transform (MFT). + + + + + Contains the symbolic link for a hardware-based MFT. + + + + + Contains the display name for a hardware-based MFT. + + + + + Contains a pointer to the stream attributes of the connected stream on a hardware-based MFT. + + + + + Specifies whether a hardware-based MFT is connected to another hardware-based MFT. + + + + + Specifies the preferred output format for an encoder. + + + + + Specifies whether an MFT is registered only in the application's process. + + + + + Contains configuration properties for an encoder. + + + + + Specifies whether a hardware device source uses the system time for time stamps. + + + + + Contains an IMFFieldOfUseMFTUnlock pointer, which can be used to unlock the MFT. + + + + + Contains the merit value of a hardware codec. + + + + + Specifies whether a decoder is optimized for transcoding rather than for playback. + + + + + Contains a pointer to the proxy object for the application's presentation descriptor. + + + + + Contains a pointer to the presentation descriptor from the protected media path (PMP). + + + + + Specifies the duration of a presentation, in 100-nanosecond units. + + + + + Specifies the total size of the source file, in bytes. + + + + + Specifies the audio encoding bit rate for the presentation, in bits per second. + + + + + Specifies the video encoding bit rate for the presentation, in bits per second. + + + + + Specifies the MIME type of the content. + + + + + Specifies when a presentation was last modified. + + + + + The identifier of the playlist element in the presentation. + + + + + Contains the preferred RFC 1766 language of the media source. + + + + + The time at which the presentation must begin, relative to the start of the media source. + + + + + Specifies whether the audio streams in the presentation have a variable bit rate. + + + + + Media type Major Type + + + + + Media Type subtype + + + + + Audio block alignment + + + + + Audio average bytes per second + + + + + Audio number of channels + + + + + Audio samples per second + + + + + Audio bits per sample + + + + + Enables the source reader or sink writer to use hardware-based Media Foundation transforms (MFTs). + + + + + Contains additional format data for a media type. + + + + + Specifies for a media type whether each sample is independent of the other samples in the stream. + + + + + Specifies for a media type whether the samples have a fixed size. + + + + + Contains a DirectShow format GUID for a media type. + + + + + Specifies the preferred legacy format structure to use when converting an audio media type. + + + + + Specifies for a media type whether the media data is compressed. + + + + + Approximate data rate of the video stream, in bits per second, for a video media type. + + + + + Specifies the payload type of an Advanced Audio Coding (AAC) stream. + 0 - The stream contains raw_data_block elements only + 1 - Audio Data Transport Stream (ADTS). The stream contains an adts_sequence, as defined by MPEG-2. + 2 - Audio Data Interchange Format (ADIF). The stream contains an adif_sequence, as defined by MPEG-2. + 3 - The stream contains an MPEG-4 audio transport stream with a synchronization layer (LOAS) and a multiplex layer (LATM). + + + + + Specifies the audio profile and level of an Advanced Audio Coding (AAC) stream, as defined by ISO/IEC 14496-3. + + + + + Main interface for using Media Foundation with NAudio + + + + + initializes MediaFoundation - only needs to be called once per process + + + + + Enumerate the installed MediaFoundation transforms in the specified category + + A category from MediaFoundationTransformCategories + + + + + uninitializes MediaFoundation + + + + + Creates a Media type + + + + + Creates a media type from a WaveFormat + + + + + Creates a memory buffer of the specified size + + Memory buffer size in bytes + The memory buffer + + + + Creates a sample object + + The sample object + + + + Creates a new attributes store + + Initial size + The attributes store + + + + Creates a media foundation byte stream based on a stream object + (usable with WinRT streams) + + The input stream + A media foundation byte stream + + + + Creates a source reader based on a byte stream + + The byte stream + A media foundation source reader + + + + Interop definitions for MediaFoundation + thanks to Lucian Wischik for the initial work on many of these definitions (also various interfaces) + n.b. the goal is to make as much of this internal as possible, and provide + better .NET APIs using the MediaFoundationApi class instead + + + + + Initializes Microsoft Media Foundation. + + + + + Shuts down the Microsoft Media Foundation platform + + + + + Creates an empty media type. + + + + + Initializes a media type from a WAVEFORMATEX structure. + + + + + Converts a Media Foundation audio media type to a WAVEFORMATEX structure. + + TODO: try making second parameter out WaveFormatExtraData + + + + Creates the source reader from a URL. + + + + + Creates the source reader from a byte stream. + + + + + Creates the sink writer from a URL or byte stream. + + + + + Creates a Microsoft Media Foundation byte stream that wraps an IRandomAccessStream object. + + + + + Gets a list of Microsoft Media Foundation transforms (MFTs) that match specified search criteria. + + + + + Creates an empty media sample. + + + + + Allocates system memory and creates a media buffer to manage it. + + + + + Creates an empty attribute store. + + + + + Gets a list of output formats from an audio encoder. + + + + + All streams + + + + + First audio stream + + + + + First video stream + + + + + Media source + + + + + Media Foundation SDK Version + + + + + Media Foundation API Version + + + + + Media Foundation Version + + + + + Provides a generic way to store key/value pairs on an object. + http://msdn.microsoft.com/en-gb/library/windows/desktop/ms704598%28v=vs.85%29.aspx + + + + + Retrieves the value associated with a key. + + + + + Retrieves the data type of the value associated with a key. + + + + + Queries whether a stored attribute value equals a specified PROPVARIANT. + + + + + Compares the attributes on this object with the attributes on another object. + + + + + Retrieves a UINT32 value associated with a key. + + + + + Retrieves a UINT64 value associated with a key. + + + + + Retrieves a double value associated with a key. + + + + + Retrieves a GUID value associated with a key. + + + + + Retrieves the length of a string value associated with a key. + + + + + Retrieves a wide-character string associated with a key. + + + + + Retrieves a wide-character string associated with a key. This method allocates the memory for the string. + + + + + Retrieves the length of a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. This method allocates the memory for the array. + + + + + Retrieves an interface pointer associated with a key. + + + + + Associates an attribute value with a key. + + + + + Removes a key/value pair from the object's attribute list. + + + + + Removes all key/value pairs from the object's attribute list. + + + + + Associates a UINT32 value with a key. + + + + + Associates a UINT64 value with a key. + + + + + Associates a double value with a key. + + + + + Associates a GUID value with a key. + + + + + Associates a wide-character string with a key. + + + + + Associates a byte array with a key. + + + + + Associates an IUnknown pointer with a key. + + + + + Locks the attribute store so that no other thread can access it. + + + + + Unlocks the attribute store. + + + + + Retrieves the number of attributes that are set on this object. + + + + + Retrieves an attribute at the specified index. + + + + + Copies all of the attributes from this object into another attribute store. + + + + + IMFByteStream + http://msdn.microsoft.com/en-gb/library/windows/desktop/ms698720%28v=vs.85%29.aspx + + + + + Retrieves the characteristics of the byte stream. + virtual HRESULT STDMETHODCALLTYPE GetCapabilities(/*[out]*/ __RPC__out DWORD *pdwCapabilities) = 0; + + + + + Retrieves the length of the stream. + virtual HRESULT STDMETHODCALLTYPE GetLength(/*[out]*/ __RPC__out QWORD *pqwLength) = 0; + + + + + Sets the length of the stream. + virtual HRESULT STDMETHODCALLTYPE SetLength(/*[in]*/ QWORD qwLength) = 0; + + + + + Retrieves the current read or write position in the stream. + virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition(/*[out]*/ __RPC__out QWORD *pqwPosition) = 0; + + + + + Sets the current read or write position. + virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition(/*[in]*/ QWORD qwPosition) = 0; + + + + + Queries whether the current position has reached the end of the stream. + virtual HRESULT STDMETHODCALLTYPE IsEndOfStream(/*[out]*/ __RPC__out BOOL *pfEndOfStream) = 0; + + + + + Reads data from the stream. + virtual HRESULT STDMETHODCALLTYPE Read(/*[size_is][out]*/ __RPC__out_ecount_full(cb) BYTE *pb, /*[in]*/ ULONG cb, /*[out]*/ __RPC__out ULONG *pcbRead) = 0; + + + + + Begins an asynchronous read operation from the stream. + virtual /*[local]*/ HRESULT STDMETHODCALLTYPE BeginRead(/*[out]*/ _Out_writes_bytes_(cb) BYTE *pb, /*[in]*/ ULONG cb, /*[in]*/ IMFAsyncCallback *pCallback, /*[in]*/ IUnknown *punkState) = 0; + + + + + Completes an asynchronous read operation. + virtual /*[local]*/ HRESULT STDMETHODCALLTYPE EndRead(/*[in]*/ IMFAsyncResult *pResult, /*[out]*/ _Out_ ULONG *pcbRead) = 0; + + + + + Writes data to the stream. + virtual HRESULT STDMETHODCALLTYPE Write(/*[size_is][in]*/ __RPC__in_ecount_full(cb) const BYTE *pb, /*[in]*/ ULONG cb, /*[out]*/ __RPC__out ULONG *pcbWritten) = 0; + + + + + Begins an asynchronous write operation to the stream. + virtual /*[local]*/ HRESULT STDMETHODCALLTYPE BeginWrite(/*[in]*/ _In_reads_bytes_(cb) const BYTE *pb, /*[in]*/ ULONG cb, /*[in]*/ IMFAsyncCallback *pCallback, /*[in]*/ IUnknown *punkState) = 0; + + + + + Completes an asynchronous write operation. + virtual /*[local]*/ HRESULT STDMETHODCALLTYPE EndWrite(/*[in]*/ IMFAsyncResult *pResult, /*[out]*/ _Out_ ULONG *pcbWritten) = 0; + + + + + Moves the current position in the stream by a specified offset. + virtual HRESULT STDMETHODCALLTYPE Seek(/*[in]*/ MFBYTESTREAM_SEEK_ORIGIN SeekOrigin, /*[in]*/ LONGLONG llSeekOffset, /*[in]*/ DWORD dwSeekFlags, /*[out]*/ __RPC__out QWORD *pqwCurrentPosition) = 0; + + + + + Clears any internal buffers used by the stream. + virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0; + + + + + Closes the stream and releases any resources associated with the stream. + virtual HRESULT STDMETHODCALLTYPE Close( void) = 0; + + + + + IMFMediaBuffer + http://msdn.microsoft.com/en-gb/library/windows/desktop/ms696261%28v=vs.85%29.aspx + + + + + Gives the caller access to the memory in the buffer. + + + + + Unlocks a buffer that was previously locked. + + + + + Retrieves the length of the valid data in the buffer. + + + + + Sets the length of the valid data in the buffer. + + + + + Retrieves the allocated size of the buffer. + + + + + Represents a description of a media format. + http://msdn.microsoft.com/en-us/library/windows/desktop/ms704850%28v=vs.85%29.aspx + + + + + Retrieves the value associated with a key. + + + + + Retrieves the data type of the value associated with a key. + + + + + Queries whether a stored attribute value equals a specified PROPVARIANT. + + + + + Compares the attributes on this object with the attributes on another object. + + + + + Retrieves a UINT32 value associated with a key. + + + + + Retrieves a UINT64 value associated with a key. + + + + + Retrieves a double value associated with a key. + + + + + Retrieves a GUID value associated with a key. + + + + + Retrieves the length of a string value associated with a key. + + + + + Retrieves a wide-character string associated with a key. + + + + + Retrieves a wide-character string associated with a key. This method allocates the memory for the string. + + + + + Retrieves the length of a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. This method allocates the memory for the array. + + + + + Retrieves an interface pointer associated with a key. + + + + + Associates an attribute value with a key. + + + + + Removes a key/value pair from the object's attribute list. + + + + + Removes all key/value pairs from the object's attribute list. + + + + + Associates a UINT32 value with a key. + + + + + Associates a UINT64 value with a key. + + + + + Associates a double value with a key. + + + + + Associates a GUID value with a key. + + + + + Associates a wide-character string with a key. + + + + + Associates a byte array with a key. + + + + + Associates an IUnknown pointer with a key. + + + + + Locks the attribute store so that no other thread can access it. + + + + + Unlocks the attribute store. + + + + + Retrieves the number of attributes that are set on this object. + + + + + Retrieves an attribute at the specified index. + + + + + Copies all of the attributes from this object into another attribute store. + + + + + Retrieves the major type of the format. + + + + + Queries whether the media type is a compressed format. + + + + + Compares two media types and determines whether they are identical. + + + + + Retrieves an alternative representation of the media type. + + + + + Frees memory that was allocated by the GetRepresentation method. + + + + + http://msdn.microsoft.com/en-gb/library/windows/desktop/ms702192%28v=vs.85%29.aspx + + + + + Retrieves the value associated with a key. + + + + + Retrieves the data type of the value associated with a key. + + + + + Queries whether a stored attribute value equals a specified PROPVARIANT. + + + + + Compares the attributes on this object with the attributes on another object. + + + + + Retrieves a UINT32 value associated with a key. + + + + + Retrieves a UINT64 value associated with a key. + + + + + Retrieves a double value associated with a key. + + + + + Retrieves a GUID value associated with a key. + + + + + Retrieves the length of a string value associated with a key. + + + + + Retrieves a wide-character string associated with a key. + + + + + Retrieves a wide-character string associated with a key. This method allocates the memory for the string. + + + + + Retrieves the length of a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. + + + + + Retrieves a byte array associated with a key. This method allocates the memory for the array. + + + + + Retrieves an interface pointer associated with a key. + + + + + Associates an attribute value with a key. + + + + + Removes a key/value pair from the object's attribute list. + + + + + Removes all key/value pairs from the object's attribute list. + + + + + Associates a UINT32 value with a key. + + + + + Associates a UINT64 value with a key. + + + + + Associates a double value with a key. + + + + + Associates a GUID value with a key. + + + + + Associates a wide-character string with a key. + + + + + Associates a byte array with a key. + + + + + Associates an IUnknown pointer with a key. + + + + + Locks the attribute store so that no other thread can access it. + + + + + Unlocks the attribute store. + + + + + Retrieves the number of attributes that are set on this object. + + + + + Retrieves an attribute at the specified index. + + + + + Copies all of the attributes from this object into another attribute store. + + + + + Retrieves flags associated with the sample. + + + + + Sets flags associated with the sample. + + + + + Retrieves the presentation time of the sample. + + + + + Sets the presentation time of the sample. + + + + + Retrieves the duration of the sample. + + + + + Sets the duration of the sample. + + + + + Retrieves the number of buffers in the sample. + + + + + Retrieves a buffer from the sample. + + + + + Converts a sample with multiple buffers into a sample with a single buffer. + + + + + Adds a buffer to the end of the list of buffers in the sample. + + + + + Removes a buffer at a specified index from the sample. + + + + + Removes all buffers from the sample. + + + + + Retrieves the total length of the valid data in all of the buffers in the sample. + + + + + Copies the sample data to a buffer. + + + + + IMFSourceReader interface + http://msdn.microsoft.com/en-us/library/windows/desktop/dd374655%28v=vs.85%29.aspx + + + + + Queries whether a stream is selected. + + + + + Selects or deselects one or more streams. + + + + + Gets a format that is supported natively by the media source. + + + + + Gets the current media type for a stream. + + + + + Sets the media type for a stream. + + + + + Seeks to a new position in the media source. + + + + + Reads the next sample from the media source. + + + + + Flushes one or more streams. + + + + + Queries the underlying media source or decoder for an interface. + + + + + Gets an attribute from the underlying media source. + + + + + Contains flags that indicate the status of the IMFSourceReader::ReadSample method + http://msdn.microsoft.com/en-us/library/windows/desktop/dd375773(v=vs.85).aspx + + + + + No Error + + + + + An error occurred. If you receive this flag, do not make any further calls to IMFSourceReader methods. + + + + + The source reader reached the end of the stream. + + + + + One or more new streams were created + + + + + The native format has changed for one or more streams. The native format is the format delivered by the media source before any decoders are inserted. + + + + + The current media has type changed for one or more streams. To get the current media type, call the IMFSourceReader::GetCurrentMediaType method. + + + + + There is a gap in the stream. This flag corresponds to an MEStreamTick event from the media source. + + + + + All transforms inserted by the application have been removed for a particular stream. + + + + + Media Foundation Transform Categories + + + + + MFT_CATEGORY_VIDEO_DECODER + + + + + MFT_CATEGORY_VIDEO_ENCODER + + + + + MFT_CATEGORY_VIDEO_EFFECT + + + + + MFT_CATEGORY_MULTIPLEXER + + + + + MFT_CATEGORY_DEMULTIPLEXER + + + + + MFT_CATEGORY_AUDIO_DECODER + + + + + MFT_CATEGORY_AUDIO_ENCODER + + + + + MFT_CATEGORY_AUDIO_EFFECT + + + + + MFT_CATEGORY_VIDEO_PROCESSOR + + + + + MFT_CATEGORY_OTHER + + + + + Contains information about an input stream on a Media Foundation transform (MFT) + + + + + Maximum amount of time between an input sample and the corresponding output sample, in 100-nanosecond units. + + + + + Bitwise OR of zero or more flags from the _MFT_INPUT_STREAM_INFO_FLAGS enumeration. + + + + + The minimum size of each input buffer, in bytes. + + + + + Maximum amount of input data, in bytes, that the MFT holds to perform lookahead. + + + + + The memory alignment required for input buffers. If the MFT does not require a specific alignment, the value is zero. + + + + + Contains information about an output buffer for a Media Foundation transform. + + + + + Output stream identifier. + + + + + Pointer to the IMFSample interface. + + + + + Before calling ProcessOutput, set this member to zero. + + + + + Before calling ProcessOutput, set this member to NULL. + + + + + Contains information about an output stream on a Media Foundation transform (MFT). + + + + + Bitwise OR of zero or more flags from the _MFT_OUTPUT_STREAM_INFO_FLAGS enumeration. + + + + + Minimum size of each output buffer, in bytes. + + + + + The memory alignment required for output buffers. + + + + + Defines messages for a Media Foundation transform (MFT). + + + + + Requests the MFT to flush all stored data. + + + + + Requests the MFT to drain any stored data. + + + + + Sets or clears the Direct3D Device Manager for DirectX Video Accereration (DXVA). + + + + + Drop samples - requires Windows 7 + + + + + Command Tick - requires Windows 8 + + + + + Notifies the MFT that streaming is about to begin. + + + + + Notifies the MFT that streaming is about to end. + + + + + Notifies the MFT that an input stream has ended. + + + + + Notifies the MFT that the first sample is about to be processed. + + + + + Marks a point in the stream. This message applies only to asynchronous MFTs. Requires Windows 7 + + + + + Contains media type information for registering a Media Foundation transform (MFT). + + + + + The major media type. + + + + + The Media Subtype + + + + + Contains statistics about the performance of the sink writer. + + + + + The size of the structure, in bytes. + + + + + The time stamp of the most recent sample given to the sink writer. + + + + + The time stamp of the most recent sample to be encoded. + + + + + The time stamp of the most recent sample given to the media sink. + + + + + The time stamp of the most recent stream tick. + + + + + The system time of the most recent sample request from the media sink. + + + + + The number of samples received. + + + + + The number of samples encoded. + + + + + The number of samples given to the media sink. + + + + + The number of stream ticks received. + + + + + The amount of data, in bytes, currently waiting to be processed. + + + + + The total amount of data, in bytes, that has been sent to the media sink. + + + + + The number of pending sample requests. + + + + + The average rate, in media samples per 100-nanoseconds, at which the application sent samples to the sink writer. + + + + + The average rate, in media samples per 100-nanoseconds, at which the sink writer sent samples to the encoder + + + + + The average rate, in media samples per 100-nanoseconds, at which the sink writer sent samples to the media sink. + + + + + Contains flags for registering and enumeration Media Foundation transforms (MFTs). + + + + + None + + + + + The MFT performs synchronous data processing in software. + + + + + The MFT performs asynchronous data processing in software. + + + + + The MFT performs hardware-based data processing, using either the AVStream driver or a GPU-based proxy MFT. + + + + + The MFT that must be unlocked by the application before use. + + + + + For enumeration, include MFTs that were registered in the caller's process. + + + + + The MFT is optimized for transcoding rather than playback. + + + + + For enumeration, sort and filter the results. + + + + + Bitwise OR of all the flags, excluding MFT_ENUM_FLAG_SORTANDFILTER. + + + + + Indicates the status of an input stream on a Media Foundation transform (MFT). + + + + + None + + + + + The input stream can receive more data at this time. + + + + + Describes an input stream on a Media Foundation transform (MFT). + + + + + No flags set + + + + + Each media sample (IMFSample interface) of input data must contain complete, unbroken units of data. + + + + + Each media sample that the client provides as input must contain exactly one unit of data, as defined for the MFT_INPUT_STREAM_WHOLE_SAMPLES flag. + + + + + All input samples must be the same size. + + + + + MTF Input Stream Holds buffers + + + + + The MFT does not hold input samples after the IMFTransform::ProcessInput method returns. + + + + + This input stream can be removed by calling IMFTransform::DeleteInputStream. + + + + + This input stream is optional. + + + + + The MFT can perform in-place processing. + + + + + Defines flags for the IMFTransform::ProcessOutput method. + + + + + None + + + + + The MFT can still generate output from this stream without receiving any more input. + + + + + The format has changed on this output stream, or there is a new preferred format for this stream. + + + + + The MFT has removed this output stream. + + + + + There is no sample ready for this stream. + + + + + Indicates whether a Media Foundation transform (MFT) can produce output data. + + + + + None + + + + + There is a sample available for at least one output stream. + + + + + Describes an output stream on a Media Foundation transform (MFT). + + + + + No flags set + + + + + Each media sample (IMFSample interface) of output data from the MFT contains complete, unbroken units of data. + + + + + Each output sample contains exactly one unit of data, as defined for the MFT_OUTPUT_STREAM_WHOLE_SAMPLES flag. + + + + + All output samples are the same size. + + + + + The MFT can discard the output data from this output stream, if requested by the client. + + + + + This output stream is optional. + + + + + The MFT provides the output samples for this stream, either by allocating them internally or by operating directly on the input samples. + + + + + The MFT can either provide output samples for this stream or it can use samples that the client allocates. + + + + + The MFT does not require the client to process the output for this stream. + + + + + The MFT might remove this output stream during streaming. + + + + + Defines flags for processing output samples in a Media Foundation transform (MFT). + + + + + None + + + + + Do not produce output for streams in which the pSample member of the MFT_OUTPUT_DATA_BUFFER structure is NULL. + + + + + Regenerates the last output sample. + + + + + Process Output Status flags + + + + + None + + + + + The Media Foundation transform (MFT) has created one or more new output streams. + + + + + Defines flags for the setting or testing the media type on a Media Foundation transform (MFT). + + + + + None + + + + + Test the proposed media type, but do not set it. + + + + + Media Type helper class, simplifying working with IMFMediaType + (will probably change in the future, to inherit from an attributes class) + Currently does not release the COM object, so you must do that yourself + + + + + Wraps an existing IMFMediaType object + + The IMFMediaType object + + + + Creates and wraps a new IMFMediaType object + + + + + Creates and wraps a new IMFMediaType object based on a WaveFormat + + WaveFormat + + + + Tries to get a UINT32 value, returning a default value if it doesn't exist + + Attribute key + Default value + Value or default if key doesn't exist + + + + The Sample Rate (valid for audio media types) + + + + + The number of Channels (valid for audio media types) + + + + + The number of bits per sample (n.b. not always valid for compressed audio types) + + + + + The average bytes per second (valid for audio media types) + + + + + The Media Subtype. For audio, is a value from the AudioSubtypes class + + + + + The Major type, e.g. audio or video (from the MediaTypes class) + + + + + Access to the actual IMFMediaType object + Use to pass to MF APIs or Marshal.ReleaseComObject when you are finished with it + + + + + An abstract base class for simplifying working with Media Foundation Transforms + You need to override the method that actually creates and configures the transform + + + + + The Source Provider + + + + + The Output WaveFormat + + + + + Constructs a new MediaFoundationTransform wrapper + Will read one second at a time + + The source provider for input data to the transform + The desired output format + + + + To be implemented by overriding classes. Create the transform object, set up its input and output types, + and configure any custom properties in here + + An object implementing IMFTrasform + + + + Disposes this MediaFoundation transform + + + + + Disposes this Media Foundation Transform + + + + + Destructor + + + + + The output WaveFormat of this Media Foundation Transform + + + + + Reads data out of the source, passing it through the transform + + Output buffer + Offset within buffer to write to + Desired byte count + Number of bytes read + + + + Attempts to read from the transform + Some useful info here: + http://msdn.microsoft.com/en-gb/library/windows/desktop/aa965264%28v=vs.85%29.aspx#process_data + + + + + + Indicate that the source has been repositioned and completely drain out the transforms buffers + + + + + Represents a MIDI meta event with raw data + + + + + Raw data contained in the meta event + + + + + Creates a meta event with raw data + + + + + Creates a deep clone of this MIDI event. + + + + + Describes this meta event + + + + + + + + + + MIDI In Message Information + + + + + Create a new MIDI In Message EventArgs + + + + + + + The Raw message received from the MIDI In API + + + + + The raw message interpreted as a MidiEvent + + + + + The timestamp in milliseconds for this message + + + + + Represents a MIDI Channel AfterTouch Event. + + + + + Creates a new ChannelAfterTouchEvent from raw MIDI data + + A binary reader + + + + Creates a new Channel After-Touch Event + + Absolute time + Channel + After-touch pressure + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + The aftertouch pressure value + + + + + Represents a MIDI control change event + + + + + Reads a control change event from a MIDI stream + + Binary reader on the MIDI stream + + + + Creates a control change event + + Time + MIDI Channel Number + The MIDI Controller + Controller value + + + + Describes this control change event + + A string describing this event + + + + + + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + The controller number + + + + + The controller value + + + + + Represents a MIDI key signature event event + + + + + Reads a new track sequence number event from a MIDI stream + + The MIDI stream + the data length + + + + Creates a new Key signature event with the specified data + + + + + Creates a deep clone of this MIDI event. + + + + + Number of sharps or flats + + + + + Major or Minor key + + + + + Describes this event + + String describing the event + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI meta event + + + + + Gets the type of this meta event + + + + + Empty constructor + + + + + Custom constructor for use by derived types, who will manage the data themselves + + Meta event type + Meta data length + Absolute time + + + + Creates a deep clone of this MIDI event. + + + + + Reads a meta-event from a stream + + A binary reader based on the stream of MIDI data + A new MetaEvent object + + + + Describes this meta event + + + + + + + + + + MIDI MetaEvent Type + + + + Track sequence number + + + Text event + + + Copyright + + + Sequence track name + + + Track instrument name + + + Lyric + + + Marker + + + Cue point + + + Program (patch) name + + + Device (port) name + + + MIDI Channel (not official?) + + + MIDI Port (not official?) + + + End track + + + Set tempo + + + SMPTE offset + + + Time signature + + + Key signature + + + Sequencer specific + + + + MIDI command codes + + + + Note Off + + + Note On + + + Key After-touch + + + Control change + + + Patch change + + + Channel after-touch + + + Pitch wheel change + + + Sysex message + + + Eox (comes at end of a sysex message) + + + Timing clock (used when synchronization is required) + + + Start sequence + + + Continue sequence + + + Stop sequence + + + Auto-Sensing + + + Meta-event + + + + MidiController enumeration + http://www.midi.org/techspecs/midimessages.php#3 + + + + Bank Select (MSB) + + + Modulation (MSB) + + + Breath Controller + + + Foot controller (MSB) + + + Main volume + + + Pan + + + Expression + + + Bank Select LSB + + + Sustain + + + Portamento On/Off + + + Sostenuto On/Off + + + Soft Pedal On/Off + + + Legato Footswitch + + + Reset all controllers + + + All notes off + + + + Represents an individual MIDI event + + + + The MIDI command code + + + + Creates a MidiEvent from a raw message received using + the MME MIDI In APIs + + The short MIDI message + A new MIDI Event + + + + Constructs a MidiEvent from a BinaryStream + + The binary stream of MIDI data + The previous MIDI event (pass null for first event) + A new MidiEvent + + + + Converts this MIDI event to a short message (32 bit integer) that + can be sent by the Windows MIDI out short message APIs + Cannot be implemented for all MIDI messages + + A short message + + + + Default constructor + + + + + Creates a MIDI event with specified parameters + + Absolute time of this event + MIDI channel number + MIDI command code + + + + Creates a deep clone of this MIDI event. + + + + + The MIDI Channel Number for this event (1-16) + + + + + The Delta time for this event + + + + + The absolute time for this event + + + + + The command code for this event + + + + + Whether this is a note off event + + + + + Whether this is a note on event + + + + + Determines if this is an end track event + + + + + Displays a summary of the MIDI event + + A string containing a brief description of this MIDI event + + + + Utility function that can read a variable length integer from a binary stream + + The binary stream + The integer read + + + + Writes a variable length integer to a binary stream + + Binary stream + The value to write + + + + Exports this MIDI event's data + Overriden in derived classes, but they should call this version + + Absolute time used to calculate delta. + Is updated ready for the next delta calculation + Stream to write to + + + + A helper class to manage collection of MIDI events + It has the ability to organise them in tracks + + + + + Creates a new Midi Event collection + + Initial file type + Delta Ticks Per Quarter Note + + + + The number of tracks + + + + + The absolute time that should be considered as time zero + Not directly used here, but useful for timeshifting applications + + + + + The number of ticks per quarter note + + + + + Gets events on a specified track + + Track number + The list of events + + + + Gets events on a specific track + + Track number + The list of events + + + + Adds a new track + + The new track event list + + + + Adds a new track + + Initial events to add to the new track + The new track event list + + + + Removes a track + + Track number to remove + + + + Clears all events + + + + + The MIDI file type + + + + + Adds an event to the appropriate track depending on file type + + The event to be added + The original (or desired) track number + When adding events in type 0 mode, the originalTrack parameter + is ignored. If in type 1 mode, it will use the original track number to + store the new events. If the original track was 0 and this is a channel based + event, it will create new tracks if necessary and put it on the track corresponding + to its channel number + + + + Sorts, removes empty tracks and adds end track markers + + + + + Gets an enumerator for the lists of track events + + + + + Gets an enumerator for the lists of track events + + + + + Utility class for comparing MidiEvent objects + + + + + Compares two MidiEvents + Sorts by time, with EndTrack always sorted to the end + + + + + Class able to read a MIDI file + + + + + Opens a MIDI file for reading + + Name of MIDI file + + + + MIDI File format + + + + + Opens a MIDI file for reading + + Name of MIDI file + If true will error on non-paired note events + + + + Opens a MIDI file stream for reading + + The input stream containing a MIDI file + If true will error on non-paired note events + + + + The collection of events in this MIDI file + + + + + Number of tracks in this MIDI file + + + + + Delta Ticks Per Quarter Note + + + + + Describes the MIDI file + + A string describing the MIDI file and its events + + + + Exports a MIDI file + + Filename to export to + Events to export + + + + Represents a MIDI in device + + + + + Called when a MIDI message is received + + + + + An invalid MIDI message + + + + + Gets the number of MIDI input devices available in the system + + + + + Opens a specified MIDI in device + + The device number + + + + Closes this MIDI in device + + + + + Closes this MIDI in device + + + + + Start the MIDI in device + + + + + Stop the MIDI in device + + + + + Reset the MIDI in device + + + + + Gets the MIDI in device info + + + + + Closes the MIDI out device + + True if called from Dispose + + + + Cleanup + + + + + MIDI In Device Capabilities + + + + + wMid + + + + + wPid + + + + + vDriverVersion + + + + + Product Name + + + + + Support - Reserved + + + + + Gets the manufacturer of this device + + + + + Gets the product identifier (manufacturer specific) + + + + + Gets the product name + + + + + MIM_OPEN + + + + + MIM_CLOSE + + + + + MIM_DATA + + + + + MIM_LONGDATA + + + + + MIM_ERROR + + + + + MIM_LONGERROR + + + + + MIM_MOREDATA + + + + + MOM_OPEN + + + + + MOM_CLOSE + + + + + MOM_DONE + + + + + Represents a MIDI message + + + + + Creates a new MIDI message + + Status + Data parameter 1 + Data parameter 2 + + + + Creates a new MIDI message from a raw message + + A packed MIDI message from an MMIO function + + + + Creates a Note On message + + Note number (0 to 127) + Volume (0 to 127) + MIDI channel (1 to 16) + A new MidiMessage object + + + + Creates a Note Off message + + Note number + Volume + MIDI channel (1-16) + A new MidiMessage object + + + + Creates a patch change message + + The patch number + The MIDI channel number (1-16) + A new MidiMessageObject + + + + Creates a Control Change message + + The controller number to change + The value to set the controller to + The MIDI channel number (1-16) + A new MidiMessageObject + + + + Returns the raw MIDI message data + + + + + Represents a MIDI out device + + + + + Gets the number of MIDI devices available in the system + + + + + Gets the MIDI Out device info + + + + + Opens a specified MIDI out device + + The device number + + + + Closes this MIDI out device + + + + + Closes this MIDI out device + + + + + Gets or sets the volume for this MIDI out device + + + + + Resets the MIDI out device + + + + + Sends a MIDI out message + + Message + Parameter 1 + Parameter 2 + + + + Sends a MIDI message to the MIDI out device + + The message to send + + + + Closes the MIDI out device + + True if called from Dispose + + + + Send a long message, for example sysex. + + The bytes to send. + + + + Cleanup + + + + + class representing the capabilities of a MIDI out device + MIDIOUTCAPS: http://msdn.microsoft.com/en-us/library/dd798467%28VS.85%29.aspx + + + + + MIDICAPS_VOLUME + + + + + separate left-right volume control + MIDICAPS_LRVOLUME + + + + + MIDICAPS_CACHE + + + + + MIDICAPS_STREAM + driver supports midiStreamOut directly + + + + + Gets the manufacturer of this device + + + + + Gets the product identifier (manufacturer specific) + + + + + Gets the product name + + + + + Returns the number of supported voices + + + + + Gets the polyphony of the device + + + + + Returns true if the device supports all channels + + + + + Queries whether a particular channel is supported + + Channel number to test + True if the channel is supported + + + + Returns true if the device supports patch caching + + + + + Returns true if the device supports separate left and right volume + + + + + Returns true if the device supports MIDI stream out + + + + + Returns true if the device supports volume control + + + + + Returns the type of technology used by this MIDI out device + + + + + Represents the different types of technology used by a MIDI out device + + from mmsystem.h + + + The device is a MIDI port + + + The device is a MIDI synth + + + The device is a square wave synth + + + The device is an FM synth + + + The device is a MIDI mapper + + + The device is a WaveTable synth + + + The device is a software synth + + + + Represents a note MIDI event + + + + + Reads a NoteEvent from a stream of MIDI data + + Binary Reader for the stream + + + + Creates a MIDI Note Event with specified parameters + + Absolute time of this event + MIDI channel number + MIDI command code + MIDI Note Number + MIDI Note Velocity + + + + + + + + + The MIDI note number + + + + + The note velocity + + + + + The note name + + + + + Describes the Note Event + + Note event as a string + + + + + + + + + Represents a MIDI note on event + + + + + Reads a new Note On event from a stream of MIDI data + + Binary reader on the MIDI data stream + + + + Creates a NoteOn event with specified parameters + + Absolute time of this event + MIDI channel number + MIDI note number + MIDI note velocity + MIDI note duration + + + + Creates a deep clone of this MIDI event. + + + + + The associated Note off event + + + + + Get or set the Note Number, updating the off event at the same time + + + + + Get or set the channel, updating the off event at the same time + + + + + The duration of this note + + + There must be a note off event + + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI patch change event + + + + + Gets the default MIDI instrument names + + + + + Reads a new patch change event from a MIDI stream + + Binary reader for the MIDI stream + + + + Creates a new patch change event + + Time of the event + Channel number + Patch number + + + + The Patch Number + + + + + Describes this patch change event + + String describing the patch change event + + + + Gets as a short message for sending with the midiOutShortMsg API + + short message + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI pitch wheel change event + + + + + Reads a pitch wheel change event from a MIDI stream + + The MIDI stream to read from + + + + Creates a new pitch wheel change event + + Absolute event time + Channel + Pitch wheel value + + + + Describes this pitch wheel change event + + String describing this pitch wheel change event + + + + Pitch Wheel Value 0 is minimum, 0x2000 (8192) is default, 0x3FFF (16383) is maximum + + + + + Gets a short message + + Integer to sent as short message + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a Sequencer Specific event + + + + + Reads a new sequencer specific event from a MIDI stream + + The MIDI stream + The data length + + + + Creates a new Sequencer Specific event + + The sequencer specific data + Absolute time of this event + + + + Creates a deep clone of this MIDI event. + + + + + The contents of this sequencer specific + + + + + Describes this MIDI text event + + A string describing this event + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Creates a new time signature event + + + + + Reads a new time signature event from a MIDI stream + + The MIDI stream + The data length + + + + Creates a deep clone of this MIDI event. + + + + + Hours + + + + + Minutes + + + + + Seconds + + + + + Frames + + + + + SubFrames + + + + + Describes this time signature event + + A string describing this event + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI sysex message + + + + + Reads a sysex message from a MIDI stream + + Stream of MIDI data + a new sysex message + + + + Creates a deep clone of this MIDI event. + + + + + Describes this sysex message + + A string describing the sysex message + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI tempo event + + + + + Reads a new tempo event from a MIDI stream + + The MIDI stream + the data length + + + + Creates a new tempo event with specified settings + + Microseconds per quarter note + Absolute time + + + + Creates a deep clone of this MIDI event. + + + + + Describes this tempo event + + String describing the tempo event + + + + Microseconds per quarter note + + + + + Tempo + + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI text event + + + + + Reads a new text event from a MIDI stream + + The MIDI stream + The data length + + + + Creates a new TextEvent + + The text in this type + MetaEvent type (must be one that is + associated with text data) + Absolute time of this event + + + + Creates a deep clone of this MIDI event. + + + + + The contents of this text event + + + + + The raw contents of this text event + + + + + Describes this MIDI text event + + A string describing this event + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI time signature event + + + + + Reads a new time signature event from a MIDI stream + + The MIDI stream + The data length + + + + Creates a new TimeSignatureEvent + + Time at which to create this event + Numerator + Denominator + Ticks in Metronome Click + No of 32nd Notes in Quarter Click + + + + Creates a deep clone of this MIDI event. + + + + + Numerator (number of beats in a bar) + + + + + Denominator (Beat unit), + 1 means 2, 2 means 4 (crochet), 3 means 8 (quaver), 4 means 16 and 5 means 32 + + + + + Ticks in a metronome click + + + + + Number of 32nd notes in a quarter note + + + + + The time signature + + + + + Describes this time signature event + + A string describing this event + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Represents a MIDI track sequence number event event + + + + + Creates a new track sequence number event + + + + + Reads a new track sequence number event from a MIDI stream + + The MIDI stream + the data length + + + + Creates a deep clone of this MIDI event. + + + + + Describes this event + + String describing the event + + + + Calls base class export first, then exports the data + specific to this event + MidiEvent.Export + + + + + Chunk Identifier helpers + + + + + Chunk identifier to Int32 (replaces mmioStringToFOURCC) + + four character chunk identifier + Chunk identifier as int 32 + + + + Allows us to add descriptions to interop members + + + + + The description + + + + + Field description + + + + + String representation + + + + + + these will become extension methods once we move to .NET 3.5 + + + + + Checks if the buffer passed in is entirely full of nulls + + + + + Converts to a string containing the buffer described in hex + + + + + Decodes the buffer using the specified encoding, stopping at the first null + + + + + Concatenates the given arrays into a single array. + + The arrays to concatenate + The concatenated resulting array. + + + + Helper to get descriptions + + + + + Describes the Guid by looking for a FieldDescription attribute on the specified class + + + + + Support for Marshal Methods in both UWP and .NET 3.5 + + + + + SizeOf a structure + + + + + Offset of a field in a structure + + + + + Pointer to Structure + + + + + WavePosition extension methods + + + + + Get Position as timespan + + + + + Methods for converting between IEEE 80-bit extended double precision + and standard C# double precision. + + + + + Converts a C# double precision number to an 80-bit + IEEE extended double precision number (occupying 10 bytes). + + The double precision number to convert to IEEE extended. + An array of 10 bytes containing the IEEE extended number. + + + + Converts an IEEE 80-bit extended precision number to a + C# double precision number. + + The 80-bit IEEE extended number (as an array of 10 bytes). + A C# double precision number that is a close representation of the IEEE extended number. + + + + General purpose native methods for internal NAudio use + + + + + Helper methods for working with audio buffers + + + + + Ensures the buffer is big enough + + + + + + + + Ensures the buffer is big enough + + + + + + + + An encoding for use with file types that have one byte per character + + + + + The one and only instance of this class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A very basic circular buffer implementation + + + + + Create a new circular buffer + + Max buffer size in bytes + + + + Write data to the buffer + + Data to write + Offset into data + Number of bytes to write + number of bytes written + + + + Read from the buffer + + Buffer to read into + Offset into read buffer + Bytes to read + Number of bytes actually read + + + + Maximum length of this circular buffer + + + + + Number of bytes currently stored in the circular buffer + + + + + Resets the buffer + + + + + Advances the buffer, discarding bytes + + Bytes to advance + + + + A util class for conversions + + + + + linear to dB conversion + + linear value + decibel value + + + + dB to linear conversion + + decibel value + linear value + + + + HResult + + + + + S_OK + + + + + S_FALSE + + + + + E_INVALIDARG (from winerror.h) + + + + + MAKE_HRESULT macro + + + + + Helper to deal with the fact that in Win Store apps, + the HResult property name has changed + + COM Exception + The HResult + + + + Pass-through stream that ignores Dispose + Useful for dealing with MemoryStreams that you want to re-use + + + + + The source stream all other methods fall through to + + + + + If true the Dispose will be ignored, if false, will pass through to the SourceStream + Set to true by default + + + + + Creates a new IgnoreDisposeStream + + The source stream + + + + Can Read + + + + + Can Seek + + + + + Can write to the underlying stream + + + + + Flushes the underlying stream + + + + + Gets the length of the underlying stream + + + + + Gets or sets the position of the underlying stream + + + + + Reads from the underlying stream + + + + + Seeks on the underlying stream + + + + + Sets the length of the underlying stream + + + + + Writes to the underlying stream + + + + + Dispose - by default (IgnoreDispose = true) will do nothing, + leaving the underlying stream undisposed + + + + + In-place and stable implementation of MergeSort + + + + + MergeSort a list of comparable items + + + + + MergeSort a list + + + + + A thread-safe Progress Log Control + + + + + Creates a new progress log control + + + + + The contents of the log as text + + + + + Log a message + + + + + Clear the log + + + + + 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. + + + + + ASIO 64 bit value + Unfortunately the ASIO API was implemented it before compiler supported consistently 64 bit + integer types. By using the structure the data layout on a little-endian system like the + Intel x86 architecture will result in a "non native" storage of the 64 bit data. The most + significant 32 bit are stored first in memory, the least significant bits are stored in the + higher memory space. However each 32 bit is stored in the native little-endian fashion + + + + + most significant bits (Bits 32..63) + + + + + least significant bits (Bits 0..31) + + + + + ASIO Callbacks + + + + + ASIO Buffer Switch Callback + + + + + ASIO Sample Rate Did Change Callback + + + + + ASIO Message Callback + + + + + ASIO Buffer Switch Time Info Callback + + + + + Buffer switch callback + void (*bufferSwitch) (long doubleBufferIndex, AsioBool directProcess); + + + + + Sample Rate Changed callback + void (*sampleRateDidChange) (AsioSampleRate sRate); + + + + + ASIO Message callback + long (*asioMessage) (long selector, long value, void* message, double* opt); + + + + + ASIO Buffer Switch Time Info Callback + AsioTime* (*bufferSwitchTimeInfo) (AsioTime* params, long doubleBufferIndex, AsioBool directProcess); + + + + + ASIO Channel Info + + + + + on input, channel index + + + + + Is Input + + + + + Is Active + + + + + Channel Info + + + + + ASIO Sample Type + + + + + Name + + + + + ASIODriverCapability holds all the information from the AsioDriver. + Use ASIODriverExt to get the Capabilities + + + + + Drive Name + + + + + Number of Input Channels + + + + + Number of Output Channels + + + + + Input Latency + + + + + Output Latency + + + + + Buffer Minimum Size + + + + + Buffer Maximum Size + + + + + Buffer Preferred Size + + + + + Buffer Granularity + + + + + Sample Rate + + + + + Input Channel Info + + + + + Output Channel Info + + + + + ASIO Error Codes + + + + + This value will be returned whenever the call succeeded + + + + + unique success return value for ASIOFuture calls + + + + + hardware input or output is not present or available + + + + + hardware is malfunctioning (can be returned by any ASIO function) + + + + + input parameter invalid + + + + + hardware is in a bad mode or used in a bad mode + + + + + hardware is not running when sample position is inquired + + + + + sample clock or rate cannot be determined or is not present + + + + + not enough memory for completing the request + + + + + ASIO Message Selector + + + + + selector in <value>, returns 1L if supported, + + + + + returns engine (host) asio implementation version, + + + + + request driver reset. if accepted, this + + + + + not yet supported, will currently always return 0L. + + + + + the driver went out of sync, such that + + + + + the drivers latencies have changed. The engine + + + + + if host returns true here, it will expect the + + + + + supports timecode + + + + + unused - value: number of commands, message points to mmc commands + + + + + kAsioSupportsXXX return 1 if host supports this + + + + + unused and undefined + + + + + unused and undefined + + + + + unused and undefined + + + + + unused and undefined + + + + + driver detected an overload + + + + + ASIO Sample Type + + + + + Int 16 MSB + + + + + Int 24 MSB (used for 20 bits as well) + + + + + Int 32 MSB + + + + + IEEE 754 32 bit float + + + + + IEEE 754 64 bit double float + + + + + 32 bit data with 16 bit alignment + + + + + 32 bit data with 18 bit alignment + + + + + 32 bit data with 20 bit alignment + + + + + 32 bit data with 24 bit alignment + + + + + Int 16 LSB + + + + + Int 24 LSB + used for 20 bits as well + + + + + Int 32 LSB + + + + + IEEE 754 32 bit float, as found on Intel x86 architecture + + + + + IEEE 754 64 bit double float, as found on Intel x86 architecture + + + + + 32 bit data with 16 bit alignment + + + + + 32 bit data with 18 bit alignment + + + + + 32 bit data with 20 bit alignment + + + + + 32 bit data with 24 bit alignment + + + + + DSD 1 bit data, 8 samples per byte. First sample in Least significant bit. + + + + + DSD 1 bit data, 8 samples per byte. First sample in Most significant bit. + + + + + DSD 8 bit data, 1 sample per byte. No Endianness required. + + + + + Main AsioDriver Class. To use this class, you need to query first the GetAsioDriverNames() and + then use the GetAsioDriverByName to instantiate the correct AsioDriver. + This is the first AsioDriver binding fully implemented in C#! + + Contributor: Alexandre Mutel - email: alexandre_mutel at yahoo.fr + + + + + Gets the ASIO driver names installed. + + a list of driver names. Use this name to GetAsioDriverByName + + + + Instantiate a AsioDriver given its name. + + The name of the driver + an AsioDriver instance + + + + Instantiate the ASIO driver by GUID. + + The GUID. + an AsioDriver instance + + + + Inits the AsioDriver.. + + The sys handle. + + + + + Gets the name of the driver. + + + + + + Gets the driver version. + + + + + + Gets the error message. + + + + + + Starts this instance. + + + + + Stops this instance. + + + + + Gets the number of channels. + + The num input channels. + The num output channels. + + + + Gets the latencies (n.b. does not throw an exception) + + The input latency. + The output latency. + + + + Gets the size of the buffer. + + Size of the min. + Size of the max. + Size of the preferred. + The granularity. + + + + Determines whether this instance can use the specified sample rate. + + The sample rate. + + true if this instance [can sample rate] the specified sample rate; otherwise, false. + + + + + Gets the sample rate. + + + + + + Sets the sample rate. + + The sample rate. + + + + Gets the clock sources. + + The clocks. + The num sources. + + + + Sets the clock source. + + The reference. + + + + Gets the sample position. + + The sample pos. + The time stamp. + + + + Gets the channel info. + + The channel number. + if set to true [true for input info]. + Channel Info + + + + Creates the buffers. + + The buffer infos. + The num channels. + Size of the buffer. + The callbacks. + + + + Disposes the buffers. + + + + + Controls the panel. + + + + + Futures the specified selector. + + The selector. + The opt. + + + + Notifies OutputReady to the AsioDriver. + + + + + + Releases this instance. + + + + + Handles the exception. Throws an exception based on the error. + + The error to check. + Method name + + + + Inits the vTable method from GUID. This is a tricky part of this class. + + The ASIO GUID. + + + + Internal VTable structure to store all the delegates to the C++ COM method. + + + + + Callback used by the AsioDriverExt to get wave data + + + + + AsioDriverExt is a simplified version of the AsioDriver. It provides an easier + way to access the capabilities of the Driver and implement the callbacks necessary + for feeding the driver. + Implementation inspired from Rob Philpot's with a managed C++ ASIO wrapper BlueWave.Interop.Asio + http://www.codeproject.com/KB/mcpp/Asio.Net.aspx + + Contributor: Alexandre Mutel - email: alexandre_mutel at yahoo.fr + + + + + Initializes a new instance of the class based on an already + instantiated AsioDriver instance. + + A AsioDriver already instantiated. + + + + Allows adjustment of which is the first output channel we write to + + Output Channel offset + Input Channel offset + + + + Gets the driver used. + + The ASIOdriver. + + + + Starts playing the buffers. + + + + + Stops playing the buffers. + + + + + Shows the control panel. + + + + + Releases this instance. + + + + + Determines whether the specified sample rate is supported. + + The sample rate. + + true if [is sample rate supported]; otherwise, false. + + + + + Sets the sample rate. + + The sample rate. + + + + Gets or sets the fill buffer callback. + + The fill buffer callback. + + + + Gets the capabilities of the AsioDriver. + + The capabilities. + + + + Creates the buffers for playing. + + The number of outputs channels. + The number of input channel. + if set to true [use max buffer size] else use Prefered size + + + + Builds the capabilities internally. + + + + + Callback called by the AsioDriver on fill buffer demand. Redirect call to external callback. + + Index of the double buffer. + if set to true [direct process]. + + + + Callback called by the AsioDriver on event "Samples rate changed". + + The sample rate. + + + + Asio message call back. + + The selector. + The value. + The message. + The opt. + + + + + Buffers switch time info call back. + + The asio time param. + Index of the double buffer. + if set to true [direct process]. + + + + + This class stores convertors for different interleaved WaveFormat to ASIOSampleType separate channel + format. + + + + + Selects the sample convertor based on the input WaveFormat and the output ASIOSampleTtype. + + The wave format. + The type. + + + + + Optimized convertor for 2 channels SHORT + + + + + Generic convertor for SHORT + + + + + Optimized convertor for 2 channels FLOAT + + + + + Generic convertor SHORT + + + + + Optimized convertor for 2 channels SHORT + + + + + Generic convertor for SHORT + + + + + Optimized convertor for 2 channels FLOAT + + + + + Generic convertor SHORT + + + + + Generic converter 24 LSB + + + + + Generic convertor for float + + + + + ASIO common Exception. + + + + + Gets the name of the error. + + The error. + the name of the error + + + + Flags for use with acmDriverAdd + + + + + ACM_DRIVERADDF_LOCAL + + + + + ACM_DRIVERADDF_GLOBAL + + + + + ACM_DRIVERADDF_FUNCTION + + + + + ACM_DRIVERADDF_NOTIFYHWND + + + + + Represents an installed ACM Driver + + + + + Helper function to determine whether a particular codec is installed + + The short name of the function + Whether the codec is installed + + + + Attempts to add a new ACM driver from a file + + Full path of the .acm or dll file containing the driver + Handle to the driver + + + + Removes a driver previously added using AddLocalDriver + + Local driver to remove + + + + Show Format Choose Dialog + + Owner window handle, can be null + Window title + Enumeration flags. None to get everything + Enumeration format. Only needed with certain enumeration flags + The selected format + Textual description of the selected format + Textual description of the selected format tag + True if a format was selected + + + + Gets the maximum size needed to store a WaveFormat for ACM interop functions + + + + + Finds a Driver by its short name + + Short Name + The driver, or null if not found + + + + Gets a list of the ACM Drivers installed + + + + + The callback for acmDriverEnum + + + + + Creates a new ACM Driver object + + Driver handle + + + + The short name of this driver + + + + + The full name of this driver + + + + + The driver ID + + + + + ToString + + + + + The list of FormatTags for this ACM Driver + + + + + Gets all the supported formats for a given format tag + + Format tag + Supported formats + + + + Opens this driver + + + + + Closes this driver + + + + + Dispose + + + + + Interop structure for ACM driver details (ACMDRIVERDETAILS) + http://msdn.microsoft.com/en-us/library/dd742889%28VS.85%29.aspx + + + + + DWORD cbStruct + + + + + FOURCC fccType + + + + + FOURCC fccComp + + + + + WORD wMid; + + + + + WORD wPid + + + + + DWORD vdwACM + + + + + DWORD vdwDriver + + + + + DWORD fdwSupport; + + + + + DWORD cFormatTags + + + + + DWORD cFilterTags + + + + + HICON hicon + + + + + TCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS]; + + + + + TCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS]; + + + + + TCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS]; + + + + + TCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS]; + + + + + TCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS]; + + + + + ACMDRIVERDETAILS_SHORTNAME_CHARS + + + + + ACMDRIVERDETAILS_LONGNAME_CHARS + + + + + ACMDRIVERDETAILS_COPYRIGHT_CHARS + + + + + ACMDRIVERDETAILS_LICENSING_CHARS + + + + + ACMDRIVERDETAILS_FEATURES_CHARS + + + + + Flags indicating what support a particular ACM driver has + + + + ACMDRIVERDETAILS_SUPPORTF_CODEC - Codec + + + ACMDRIVERDETAILS_SUPPORTF_CONVERTER - Converter + + + ACMDRIVERDETAILS_SUPPORTF_FILTER - Filter + + + ACMDRIVERDETAILS_SUPPORTF_HARDWARE - Hardware + + + ACMDRIVERDETAILS_SUPPORTF_ASYNC - Async + + + ACMDRIVERDETAILS_SUPPORTF_LOCAL - Local + + + ACMDRIVERDETAILS_SUPPORTF_DISABLED - Disabled + + + + ACM_DRIVERENUMF_NOLOCAL, Only global drivers should be included in the enumeration + + + + + ACM_DRIVERENUMF_DISABLED, Disabled ACM drivers should be included in the enumeration + + + + + ACM Format + + + + + Format Index + + + + + Format Tag + + + + + Support Flags + + + + + WaveFormat + + + + + WaveFormat Size + + + + + Format Description + + + + + ACMFORMATCHOOSE + http://msdn.microsoft.com/en-us/library/dd742911%28VS.85%29.aspx + + + + + DWORD cbStruct; + + + + + DWORD fdwStyle; + + + + + HWND hwndOwner; + + + + + LPWAVEFORMATEX pwfx; + + + + + DWORD cbwfx; + + + + + LPCTSTR pszTitle; + + + + + TCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; + + + + + TCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; + + + + + LPTSTR pszName; + n.b. can be written into + + + + + DWORD cchName + Should be at least 128 unless name is zero + + + + + DWORD fdwEnum; + + + + + LPWAVEFORMATEX pwfxEnum; + + + + + HINSTANCE hInstance; + + + + + LPCTSTR pszTemplateName; + + + + + LPARAM lCustData; + + + + + ACMFORMATCHOOSEHOOKPROC pfnHook; + + + + + None + + + + + ACMFORMATCHOOSE_STYLEF_SHOWHELP + + + + + ACMFORMATCHOOSE_STYLEF_ENABLEHOOK + + + + + ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE + + + + + ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE + + + + + ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT + + + + + ACMFORMATCHOOSE_STYLEF_CONTEXTHELP + + + + + ACMFORMATDETAILS + http://msdn.microsoft.com/en-us/library/dd742913%28VS.85%29.aspx + + + + + DWORD cbStruct; + + + + + DWORD dwFormatIndex; + + + + + DWORD dwFormatTag; + + + + + DWORD fdwSupport; + + + + + LPWAVEFORMATEX pwfx; + + + + + DWORD cbwfx; + + + + + TCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; + + + + + ACMFORMATDETAILS_FORMAT_CHARS + + + + + Format Enumeration Flags + + + + + None + + + + + ACM_FORMATENUMF_CONVERT + The WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will only enumerate destination formats that can be converted from the given pwfx format. + + + + + ACM_FORMATENUMF_HARDWARE + The enumerator should only enumerate formats that are supported as native input or output formats on one or more of the installed waveform-audio devices. This flag provides a way for an application to choose only formats native to an installed waveform-audio device. This flag must be used with one or both of the ACM_FORMATENUMF_INPUT and ACM_FORMATENUMF_OUTPUT flags. Specifying both ACM_FORMATENUMF_INPUT and ACM_FORMATENUMF_OUTPUT will enumerate only formats that can be opened for input or output. This is true regardless of whether this flag is specified. + + + + + ACM_FORMATENUMF_INPUT + Enumerator should enumerate only formats that are supported for input (recording). + + + + + ACM_FORMATENUMF_NCHANNELS + The nChannels member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute. + + + + + ACM_FORMATENUMF_NSAMPLESPERSEC + The nSamplesPerSec member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute. + + + + + ACM_FORMATENUMF_OUTPUT + Enumerator should enumerate only formats that are supported for output (playback). + + + + + ACM_FORMATENUMF_SUGGEST + The WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate all suggested destination formats for the given pwfx format. This mechanism can be used instead of the acmFormatSuggest function to allow an application to choose the best suggested format for conversion. The dwFormatIndex member will always be set to zero on return. + + + + + ACM_FORMATENUMF_WBITSPERSAMPLE + The wBitsPerSample member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute. + + + + + ACM_FORMATENUMF_WFORMATTAG + The wFormatTag member of the WAVEFORMATEX structure pointed to by the pwfx member of the ACMFORMATDETAILS structure is valid. The enumerator will enumerate only a format that conforms to this attribute. The dwFormatTag member of the ACMFORMATDETAILS structure must be equal to the wFormatTag member. + + + + + ACM_FORMATSUGGESTF_WFORMATTAG + + + + + ACM_FORMATSUGGESTF_NCHANNELS + + + + + ACM_FORMATSUGGESTF_NSAMPLESPERSEC + + + + + ACM_FORMATSUGGESTF_WBITSPERSAMPLE + + + + + ACM_FORMATSUGGESTF_TYPEMASK + + + + + ACM Format Tag + + + + + Format Tag Index + + + + + Format Tag + + + + + Format Size + + + + + Support Flags + + + + + Standard Formats Count + + + + + Format Description + + + + + DWORD cbStruct; + + + + + DWORD dwFormatTagIndex; + + + + + DWORD dwFormatTag; + + + + + DWORD cbFormatSize; + + + + + DWORD fdwSupport; + + + + + DWORD cStandardFormats; + + + + + TCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; + + + + + ACMFORMATTAGDETAILS_FORMATTAG_CHARS + + + + + Interop definitions for Windows ACM (Audio Compression Manager) API + + + + + http://msdn.microsoft.com/en-us/library/dd742910%28VS.85%29.aspx + UINT ACMFORMATCHOOSEHOOKPROC acmFormatChooseHookProc( + HWND hwnd, + UINT uMsg, + WPARAM wParam, + LPARAM lParam + + + + + http://msdn.microsoft.com/en-us/library/dd742916%28VS.85%29.aspx + MMRESULT acmFormatSuggest( + HACMDRIVER had, + LPWAVEFORMATEX pwfxSrc, + LPWAVEFORMATEX pwfxDst, + DWORD cbwfxDst, + DWORD fdwSuggest); + + + + + http://msdn.microsoft.com/en-us/library/dd742928%28VS.85%29.aspx + MMRESULT acmStreamOpen( + LPHACMSTREAM phas, + HACMDRIVER had, + LPWAVEFORMATEX pwfxSrc, + LPWAVEFORMATEX pwfxDst, + LPWAVEFILTER pwfltr, + DWORD_PTR dwCallback, + DWORD_PTR dwInstance, + DWORD fdwOpen + + + + + A version with pointers for troubleshooting + + + + + AcmStream encapsulates an Audio Compression Manager Stream + used to convert audio from one format to another + + + + + Creates a new ACM stream to convert one format to another. Note that + not all conversions can be done in one step + + The source audio format + The destination audio format + + + + Creates a new ACM stream to convert one format to another, using a + specified driver identified and wave filter + + the driver identifier + the source format + the wave filter + + + + Returns the number of output bytes for a given number of input bytes + + Number of input bytes + Number of output bytes + + + + Returns the number of source bytes for a given number of destination bytes + + Number of destination bytes + Number of source bytes + + + + Suggests an appropriate PCM format that the compressed format can be converted + to in one step + + The compressed format + The PCM format + + + + Returns the Source Buffer. Fill this with data prior to calling convert + + + + + Returns the Destination buffer. This will contain the converted data + after a successful call to Convert + + + + + Report that we have repositioned in the source stream + + + + + Converts the contents of the SourceBuffer into the DestinationBuffer + + The number of bytes in the SourceBuffer + that need to be converted + The number of source bytes actually converted + The number of converted bytes in the DestinationBuffer + + + + Converts the contents of the SourceBuffer into the DestinationBuffer + + The number of bytes in the SourceBuffer + that need to be converted + The number of converted bytes in the DestinationBuffer + + + + Frees resources associated with this ACM Stream + + + + + Frees resources associated with this ACM Stream + + + + + Frees resources associated with this ACM Stream + + + + + ACMSTREAMHEADER_STATUSF_DONE + + + + + ACMSTREAMHEADER_STATUSF_PREPARED + + + + + ACMSTREAMHEADER_STATUSF_INQUEUE + + + + + Interop structure for ACM stream headers. + ACMSTREAMHEADER + http://msdn.microsoft.com/en-us/library/dd742926%28VS.85%29.aspx + + + + + ACM_STREAMOPENF_QUERY, ACM will be queried to determine whether it supports the given conversion. A conversion stream will not be opened, and no handle will be returned in the phas parameter. + + + + + ACM_STREAMOPENF_ASYNC, Stream conversion should be performed asynchronously. If this flag is specified, the application can use a callback function to be notified when the conversion stream is opened and closed and after each buffer is converted. In addition to using a callback function, an application can examine the fdwStatus member of the ACMSTREAMHEADER structure for the ACMSTREAMHEADER_STATUSF_DONE flag. + + + + + ACM_STREAMOPENF_NONREALTIME, ACM will not consider time constraints when converting the data. By default, the driver will attempt to convert the data in real time. For some formats, specifying this flag might improve the audio quality or other characteristics. + + + + + CALLBACK_TYPEMASK, callback type mask + + + + + CALLBACK_NULL, no callback + + + + + CALLBACK_WINDOW, dwCallback is a HWND + + + + + CALLBACK_TASK, dwCallback is a HTASK + + + + + CALLBACK_FUNCTION, dwCallback is a FARPROC + + + + + CALLBACK_THREAD, thread ID replaces 16 bit task + + + + + CALLBACK_EVENT, dwCallback is an EVENT Handle + + + + + ACM_STREAMSIZEF_SOURCE + + + + + ACM_STREAMSIZEF_DESTINATION + + + + + Summary description for WaveFilter. + + + + + cbStruct + + + + + dwFilterTag + + + + + fdwFilter + + + + + reserved + + + + + ADSR sample provider allowing you to specify attack, decay, sustain and release values + + + + + Creates a new AdsrSampleProvider with default values + + + + + Attack time in seconds + + + + + Release time in seconds + + + + + Reads audio from this sample provider + + + + + Enters the Release phase + + + + + The output WaveFormat + + + + + Sample Provider to concatenate multiple sample providers together + + + + + Creates a new ConcatenatingSampleProvider + + The source providers to play one after the other. Must all share the same sample rate and channel count + + + + The WaveFormat of this Sample Provider + + + + + Read Samples from this sample provider + + + + + Sample Provider to allow fading in and out + + + + + Creates a new FadeInOutSampleProvider + + The source stream with the audio to be faded in or out + If true, we start faded out + + + + Requests that a fade-in begins (will start on the next call to Read) + + Duration of fade in milliseconds + + + + Requests that a fade-out begins (will start on the next call to Read) + + Duration of fade in milliseconds + + + + Reads samples from this sample provider + + Buffer to read into + Offset within buffer to write to + Number of samples desired + Number of samples read + + + + WaveFormat of this SampleProvider + + + + + Allows any number of inputs to be patched to outputs + Uses could include swapping left and right channels, turning mono into stereo, + feeding different input sources to different soundcard outputs etc + + + + + Creates a multiplexing sample provider, allowing re-patching of input channels to different + output channels + + Input sample providers. Must all be of the same sample rate, but can have any number of channels + Desired number of output channels. + + + + persistent temporary buffer to prevent creating work for garbage collector + + + + + Reads samples from this sample provider + + Buffer to be filled with sample data + Offset into buffer to start writing to, usually 0 + Number of samples required + Number of samples read + + + + The output WaveFormat for this SampleProvider + + + + + Connects a specified input channel to an output channel + + Input Channel index (zero based). Must be less than InputChannelCount + Output Channel index (zero based). Must be less than OutputChannelCount + + + + The number of input channels. Note that this is not the same as the number of input wave providers. If you pass in + one stereo and one mono input provider, the number of input channels is three. + + + + + The number of output channels, as specified in the constructor. + + + + + Allows you to: + 1. insert a pre-delay of silence before the source begins + 2. skip over a certain amount of the beginning of the source + 3. only play a set amount from the source + 4. insert silence at the end after the source is complete + + + + + Number of samples of silence to insert before playing source + + + + + Amount of silence to insert before playing + + + + + Number of samples in source to discard + + + + + Amount of audio to skip over from the source before beginning playback + + + + + Number of samples to read from source (if 0, then read it all) + + + + + Amount of audio to take from the source (TimeSpan.Zero means play to end) + + + + + Number of samples of silence to insert after playing source + + + + + Amount of silence to insert after playing source + + + + + Creates a new instance of offsetSampleProvider + + The Source Sample Provider to read from + + + + The WaveFormat of this SampleProvider + + + + + Reads from this sample provider + + Sample buffer + Offset within sample buffer to read to + Number of samples required + Number of samples read + + + + Converts an IWaveProvider containing 32 bit PCM to an + ISampleProvider + + + + + Initialises a new instance of Pcm32BitToSampleProvider + + Source Wave Provider + + + + Reads floating point samples from this sample provider + + sample buffer + offset within sample buffer to write to + number of samples required + number of samples provided + + + + Utility class for converting to SampleProvider + + + + + Helper function to go from IWaveProvider to a SampleProvider + Must already be PCM or IEEE float + + The WaveProvider to convert + A sample provider + + + + Converts a sample provider to 16 bit PCM, optionally clipping and adjusting volume along the way + + + + + Converts from an ISampleProvider (IEEE float) to a 16 bit PCM IWaveProvider. + Number of channels and sample rate remain unchanged. + + The input source provider + + + + Reads bytes from this wave stream + + The destination buffer + Offset into the destination buffer + Number of bytes read + Number of bytes read. + + + + + + + + + Volume of this channel. 1.0 = full scale + + + + + Converts a sample provider to 24 bit PCM, optionally clipping and adjusting volume along the way + + + + + Converts from an ISampleProvider (IEEE float) to a 16 bit PCM IWaveProvider. + Number of channels and sample rate remain unchanged. + + The input source provider + + + + Reads bytes from this wave stream, clipping if necessary + + The destination buffer + Offset into the destination buffer + Number of bytes read + Number of bytes read. + + + + The Format of this IWaveProvider + + + + + + Volume of this channel. 1.0 = full scale, 0.0 to mute + + + + + Signal Generator + Sin, Square, Triangle, SawTooth, White Noise, Pink Noise, Sweep. + + + Posibility to change ISampleProvider + Example : + --------- + WaveOut _waveOutGene = new WaveOut(); + WaveGenerator wg = new SignalGenerator(); + wg.Type = ... + wg.Frequency = ... + wg ... + _waveOutGene.Init(wg); + _waveOutGene.Play(); + + + + + Initializes a new instance for the Generator (Default :: 44.1Khz, 2 channels, Sinus, Frequency = 440, Gain = 1) + + + + + Initializes a new instance for the Generator (UserDef SampleRate & Channels) + + Desired sample rate + Number of channels + + + + The waveformat of this WaveProvider (same as the source) + + + + + Frequency for the Generator. (20.0 - 20000.0 Hz) + Sin, Square, Triangle, SawTooth, Sweep (Start Frequency). + + + + + Return Log of Frequency Start (Read only) + + + + + End Frequency for the Sweep Generator. (Start Frequency in Frequency) + + + + + Return Log of Frequency End (Read only) + + + + + Gain for the Generator. (0.0 to 1.0) + + + + + Channel PhaseReverse + + + + + Type of Generator. + + + + + Length Seconds for the Sweep Generator. + + + + + Reads from this provider. + + + + + Private :: Random for WhiteNoise & Pink Noise (Value form -1 to 1) + + Random value from -1 to +1 + + + + Signal Generator type + + + + + Pink noise + + + + + White noise + + + + + Sweep + + + + + Sine wave + + + + + Square wave + + + + + Triangle Wave + + + + + Sawtooth wave + + + + + Author: Freefall + Date: 05.08.16 + Based on: the port of Stephan M. Bernsee´s pitch shifting class + Port site: https://sites.google.com/site/mikescoderama/pitch-shifting + Test application and github site: https://github.com/Freefall63/NAudio-Pitchshifter + + NOTE: I strongly advice to add a Limiter for post-processing. + For my needs the FastAttackCompressor1175 provides acceptable results: + https://github.com/Jiyuu/SkypeFX/blob/master/JSNet/FastAttackCompressor1175.cs + + UPDATE: Added a simple Limiter based on the pydirac implementation. + https://github.com/echonest/remix/blob/master/external/pydirac225/source/Dirac_LE.cpp + + + + + + Creates a new SMB Pitch Shifting Sample Provider with default settings + + Source provider + + + + Creates a new SMB Pitch Shifting Sample Provider with custom settings + + Source provider + FFT Size (any power of two <= 4096: 4096, 2048, 1024, 512, ...) + Oversampling (number of overlapping windows) + Initial pitch (0.5f = octave down, 1.0f = normal, 2.0f = octave up) + + + + Read from this sample provider + + + + + WaveFormat + + + + + Pitch Factor (0.5f = octave down, 1.0f = normal, 2.0f = octave up) + + + + + Takes a stereo input and turns it to mono + + + + + Creates a new mono ISampleProvider based on a stereo input + + Stereo 16 bit PCM input + + + + 1.0 to mix the mono source entirely to the left channel + + + + + 1.0 to mix the mono source entirely to the right channel + + + + + Output Wave Format + + + + + Reads bytes from this SampleProvider + + + + + Helper class turning an already 64 bit floating point IWaveProvider + into an ISampleProvider - hopefully not needed for most applications + + + + + Initializes a new instance of the WaveToSampleProvider class + + Source wave provider, must be IEEE float + + + + Reads from this provider + + + + + Fully managed resampling sample provider, based on the WDL Resampler + + + + + Constructs a new resampler + + Source to resample + Desired output sample rate + + + + Reads from this sample provider + + + + + Output WaveFormat + + + + + Sample provider interface to make WaveChannel32 extensible + Still a bit ugly, hence internal at the moment - and might even make these into + bit depth converting WaveProviders + + + + + A sample provider mixer, allowing inputs to be added and removed + + + + + Creates a new MixingSampleProvider, with no inputs, but a specified WaveFormat + + The WaveFormat of this mixer. All inputs must be in this format + + + + Creates a new MixingSampleProvider, based on the given inputs + + Mixer inputs - must all have the same waveformat, and must + all be of the same WaveFormat. There must be at least one input + + + + Returns the mixer inputs (read-only - use AddMixerInput to add an input + + + + + When set to true, the Read method always returns the number + of samples requested, even if there are no inputs, or if the + current inputs reach their end. Setting this to true effectively + makes this a never-ending sample provider, so take care if you plan + to write it out to a file. + + + + + Adds a WaveProvider as a Mixer input. + Must be PCM or IEEE float already + + IWaveProvider mixer input + + + + Adds a new mixer input + + Mixer input + + + + Raised when a mixer input has been removed because it has ended + + + + + Removes a mixer input + + Mixer input to remove + + + + Removes all mixer inputs + + + + + The output WaveFormat of this sample provider + + + + + Reads samples from this sample provider + + Sample buffer + Offset into sample buffer + Number of samples required + Number of samples read + + + + SampleProvider event args + + + + + Constructs a new SampleProviderEventArgs + + + + + The Sample Provider + + + + + Converts a mono sample provider to stereo, with a customisable pan strategy + + + + + Initialises a new instance of the PanningSampleProvider + + Source sample provider, must be mono + + + + Pan value, must be between -1 (left) and 1 (right) + + + + + The pan strategy currently in use + + + + + The WaveFormat of this sample provider + + + + + Reads samples from this sample provider + + Sample buffer + Offset into sample buffer + Number of samples desired + Number of samples read + + + + Pair of floating point values, representing samples or multipliers + + + + + Left value + + + + + Right value + + + + + Required Interface for a Panning Strategy + + + + + Gets the left and right multipliers for a given pan value + + Pan value from -1 to 1 + Left and right multipliers in a stereo sample pair + + + + Simplistic "balance" control - treating the mono input as if it was stereo + In the centre, both channels full volume. Opposite channel decays linearly + as balance is turned to to one side + + + + + Gets the left and right channel multipliers for this pan value + + Pan value, between -1 and 1 + Left and right multipliers + + + + Square Root Pan, thanks to Yuval Naveh + + + + + Gets the left and right channel multipliers for this pan value + + Pan value, between -1 and 1 + Left and right multipliers + + + + Sinus Pan, thanks to Yuval Naveh + + + + + Gets the left and right channel multipliers for this pan value + + Pan value, between -1 and 1 + Left and right multipliers + + + + Linear Pan + + + + + Gets the left and right channel multipliers for this pan value + + Pan value, between -1 and 1 + Left and right multipliers + + + + Simple SampleProvider that passes through audio unchanged and raises + an event every n samples with the maximum sample value from the period + for metering purposes + + + + + Number of Samples per notification + + + + + Raised periodically to inform the user of the max volume + + + + + Initialises a new instance of MeteringSampleProvider that raises 10 stream volume + events per second + + Source sample provider + + + + Initialises a new instance of MeteringSampleProvider + + source sampler provider + Number of samples between notifications + + + + The WaveFormat of this sample provider + + + + + Reads samples from this Sample Provider + + Sample buffer + Offset into sample buffer + Number of samples required + Number of samples read + + + + Event args for aggregated stream volume + + + + + Max sample values array (one for each channel) + + + + + Simple class that raises an event on every sample + + + + + Initializes a new instance of NotifyingSampleProvider + + Source Sample Provider + + + + WaveFormat + + + + + Reads samples from this sample provider + + Sample buffer + Offset into sample buffer + Number of samples desired + Number of samples read + + + + Sample notifier + + + + + Very simple sample provider supporting adjustable gain + + + + + Initializes a new instance of VolumeSampleProvider + + Source Sample Provider + + + + WaveFormat + + + + + Reads samples from this sample provider + + Sample buffer + Offset into sample buffer + Number of samples desired + Number of samples read + + + + Allows adjusting the volume, 1.0f = full volume + + + + + Helper base class for classes converting to ISampleProvider + + + + + Source Wave Provider + + + + + Source buffer (to avoid constantly creating small buffers during playback) + + + + + Initialises a new instance of SampleProviderConverterBase + + Source Wave provider + + + + Wave format of this wave provider + + + + + Reads samples from the source wave provider + + Sample buffer + Offset into sample buffer + Number of samples required + Number of samples read + + + + Ensure the source buffer exists and is big enough + + Bytes required + + + + Helper class for when you need to convert back to an IWaveProvider from + an ISampleProvider. Keeps it as IEEE float + + + + + Initializes a new instance of the WaveProviderFloatToWaveProvider class + + Source wave provider + + + + Reads from this provider + + + + + The waveformat of this WaveProvider (same as the source) + + + + + No nonsense mono to stereo provider, no volume adjustment, + just copies input to left and right. + + + + + Initializes a new instance of MonoToStereoSampleProvider + + Source sample provider + + + + WaveFormat of this provider + + + + + Reads samples from this provider + + Sample buffer + Offset into sample buffer + Number of samples required + Number of samples read + + + + Multiplier for left channel (default is 1.0) + + + + + Multiplier for right channel (default is 1.0) + + + + + Helper class turning an already 32 bit floating point IWaveProvider + into an ISampleProvider - hopefully not needed for most applications + + + + + Initializes a new instance of the WaveToSampleProvider class + + Source wave provider, must be IEEE float + + + + Reads from this provider + + + + + Converts an IWaveProvider containing 16 bit PCM to an + ISampleProvider + + + + + Initialises a new instance of Pcm16BitToSampleProvider + + Source wave provider + + + + Reads samples from this sample provider + + Sample buffer + Offset into sample buffer + Samples required + Number of samples read + + + + Converts an IWaveProvider containing 24 bit PCM to an + ISampleProvider + + + + + Initialises a new instance of Pcm24BitToSampleProvider + + Source Wave Provider + + + + Reads floating point samples from this sample provider + + sample buffer + offset within sample buffer to write to + number of samples required + number of samples provided + + + + Converts an IWaveProvider containing 8 bit PCM to an + ISampleProvider + + + + + Initialises a new instance of Pcm8BitToSampleProvider + + Source wave provider + + + + Reads samples from this sample provider + + Sample buffer + Offset into sample buffer + Number of samples to read + Number of samples read + + + + Utility class that takes an IWaveProvider input at any bit depth + and exposes it as an ISampleProvider. Can turn mono inputs into stereo, + and allows adjusting of volume + (The eventual successor to WaveChannel32) + This class also serves as an example of how you can link together several simple + Sample Providers to form a more useful class. + + + + + Initialises a new instance of SampleChannel + + Source wave provider, must be PCM or IEEE + + + + Initialises a new instance of SampleChannel + + Source wave provider, must be PCM or IEEE + force mono inputs to become stereo + + + + Reads samples from this sample provider + + Sample buffer + Offset into sample buffer + Number of samples desired + Number of samples read + + + + The WaveFormat of this Sample Provider + + + + + Allows adjusting the volume, 1.0f = full volume + + + + + Raised periodically to inform the user of the max volume + (before the volume meter) + + + + + Useful extension methods to make switching between WaveAndSampleProvider easier + + + + + Converts a WaveProvider into a SampleProvider (only works for PCM) + + WaveProvider to convert + + + + + Allows sending a SampleProvider directly to an IWavePlayer without needing to convert + back to an IWaveProvider + + The WavePlayer + + + + + + Turns WaveFormatExtensible into a standard waveformat if possible + + Input wave format + A standard PCM or IEEE waveformat, or the original waveformat + + + + Converts a ISampleProvider to a IWaveProvider but still 32 bit float + + SampleProvider to convert + An IWaveProvider + + + + Converts a ISampleProvider to a IWaveProvider but and convert to 16 bit + + SampleProvider to convert + A 16 bit IWaveProvider + + + + Concatenates one Sample Provider on the end of another + + The sample provider to play first + The sample provider to play next + A single sampleprovider to play one after the other + + + + Concatenates one Sample Provider on the end of another with silence inserted + + The sample provider to play first + Silence duration to insert between the two + The sample provider to play next + A single sample provider + + + + Skips over a specified amount of time (by consuming source stream) + + Source sample provider + Duration to skip over + A sample provider that skips over the specified amount of time + + + + Takes a specified amount of time from the source stream + + Source sample provider + Duration to take + A sample provider that reads up to the specified amount of time + + + + Converts a Stereo Sample Provider to mono, allowing mixing of channel volume + + Stereo Source Provider + Amount of left channel to mix in (0 = mute, 1 = full, 0.5 for mixing half from each channel) + Amount of right channel to mix in (0 = mute, 1 = full, 0.5 for mixing half from each channel) + A mono SampleProvider + + + + Converts a Mono ISampleProvider to stereo + + Mono Source Provider + Amount to mix to left channel (1.0 is full volume) + Amount to mix to right channel (1.0 is full volume) + + + + + Recording using waveIn api with event callbacks. + Use this for recording in non-gui applications + Events are raised as recorded buffers are made available + + + + + Indicates recorded data is available + + + + + Indicates that all recorded data has now been received. + + + + + Prepares a Wave input device for recording + + + + + Returns the number of Wave In devices available in the system + + + + + Retrieves the capabilities of a waveIn device + + Device to test + The WaveIn device capabilities + + + + Milliseconds for the buffer. Recommended value is 100ms + + + + + Number of Buffers to use (usually 2 or 3) + + + + + The device number to use + + + + + Start recording + + + + + Stop recording + + + + + WaveFormat we are recording in + + + + + Dispose pattern + + + + + Microphone Level + + + + + Dispose method + + + + + Channel Mode + + + + + Stereo + + + + + Joint Stereo + + + + + Dual Channel + + + + + Mono + + + + + An ID3v2 Tag + + + + + Reads an ID3v2 tag from a stream + + + + + Creates a new ID3v2 tag from a collection of key-value pairs. + + A collection of key-value pairs containing the tags to include in the ID3v2 tag. + A new ID3v2 tag + + + + Convert the frame size to a byte array. + + The frame body size. + + + + + Creates an ID3v2 frame for the given key-value pair. + + + + + + + + Gets the Id3v2 Header size. The size is encoded so that only 7 bits per byte are actually used. + + + + + + + Creates the Id3v2 tag header and returns is as a byte array. + + The Id3v2 frames that will be included in the file. This is used to calculate the ID3v2 tag size. + + + + + Creates the Id3v2 tag for the given key-value pairs and returns it in the a stream. + + + + + + + Raw data from this tag + + + + + Interface for MP3 frame by frame decoder + + + + + Decompress a single MP3 frame + + Frame to decompress + Output buffer + Offset within output buffer + Bytes written to output buffer + + + + Tell the decoder that we have repositioned + + + + + PCM format that we are converting into + + + + + Represents an MP3 Frame + + + + + Reads an MP3 frame from a stream + + input stream + A valid MP3 frame, or null if none found + + + Reads an MP3Frame from a stream + http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm has some good info + also see http://www.codeproject.com/KB/audio-video/mpegaudioinfo.aspx + + A valid MP3 frame, or null if none found + + + + Constructs an MP3 frame + + + + + checks if the four bytes represent a valid header, + if they are, will parse the values into Mp3Frame + + + + + Sample rate of this frame + + + + + Frame length in bytes + + + + + Bit Rate + + + + + Raw frame data (includes header bytes) + + + + + MPEG Version + + + + + MPEG Layer + + + + + Channel Mode + + + + + The number of samples in this frame + + + + + The channel extension bits + + + + + The bitrate index (directly from the header) + + + + + Whether the Copyright bit is set + + + + + Whether a CRC is present + + + + + Not part of the MP3 frame itself - indicates where in the stream we found this header + + + + + MP3 Frame Decompressor using ACM + + + + + Creates a new ACM frame decompressor + + The MP3 source format + + + + Output format (PCM) + + + + + Decompresses a frame + + The MP3 frame + destination buffer + Offset within destination buffer + Bytes written into destination buffer + + + + Resets the MP3 Frame Decompressor after a reposition operation + + + + + Disposes of this MP3 frame decompressor + + + + + Finalizer ensuring that resources get released properly + + + + + MPEG Layer flags + + + + + Reserved + + + + + Layer 3 + + + + + Layer 2 + + + + + Layer 1 + + + + + MPEG Version Flags + + + + + Version 2.5 + + + + + Reserved + + + + + Version 2 + + + + + Version 1 + + + + + Represents a Xing VBR header + + + + + Load Xing Header + + Frame + Xing Header + + + + Sees if a frame contains a Xing header + + + + + Number of frames + + + + + Number of bytes + + + + + VBR Scale property + + + + + The MP3 frame + + + + ACM_METRIC_COUNT_DRIVERS + + + ACM_METRIC_COUNT_CODECS + + + ACM_METRIC_COUNT_CONVERTERS + + + ACM_METRIC_COUNT_FILTERS + + + ACM_METRIC_COUNT_DISABLED + + + ACM_METRIC_COUNT_HARDWARE + + + ACM_METRIC_COUNT_LOCAL_DRIVERS + + + ACM_METRIC_COUNT_LOCAL_CODECS + + + ACM_METRIC_COUNT_LOCAL_CONVERTERS + + + ACM_METRIC_COUNT_LOCAL_FILTERS + + + ACM_METRIC_COUNT_LOCAL_DISABLED + + + ACM_METRIC_HARDWARE_WAVE_INPUT + + + ACM_METRIC_HARDWARE_WAVE_OUTPUT + + + ACM_METRIC_MAX_SIZE_FORMAT + + + ACM_METRIC_MAX_SIZE_FILTER + + + ACM_METRIC_DRIVER_SUPPORT + + + ACM_METRIC_DRIVER_PRIORITY + + + + ACM_STREAMCONVERTF_BLOCKALIGN + + + + + ACM_STREAMCONVERTF_START + + + + + ACM_STREAMCONVERTF_END + + + + + WaveHeader interop structure (WAVEHDR) + http://msdn.microsoft.com/en-us/library/dd743837%28VS.85%29.aspx + + + + pointer to locked data buffer (lpData) + + + length of data buffer (dwBufferLength) + + + used for input only (dwBytesRecorded) + + + for client's use (dwUser) + + + assorted flags (dwFlags) + + + loop control counter (dwLoops) + + + PWaveHdr, reserved for driver (lpNext) + + + reserved for driver + + + + Wave Header Flags enumeration + + + + + WHDR_BEGINLOOP + This buffer is the first buffer in a loop. This flag is used only with output buffers. + + + + + WHDR_DONE + Set by the device driver to indicate that it is finished with the buffer and is returning it to the application. + + + + + WHDR_ENDLOOP + This buffer is the last buffer in a loop. This flag is used only with output buffers. + + + + + WHDR_INQUEUE + Set by Windows to indicate that the buffer is queued for playback. + + + + + WHDR_PREPARED + Set by Windows to indicate that the buffer has been prepared with the waveInPrepareHeader or waveOutPrepareHeader function. + + + + + WASAPI Loopback Capture + based on a contribution from "Pygmy" - http://naudio.codeplex.com/discussions/203605 + + + + + Initialises a new instance of the WASAPI capture class + + + + + Initialises a new instance of the WASAPI capture class + + Capture device to use + + + + Gets the default audio loopback capture device + + The default audio loopback capture device + + + + Capturing wave format + + + + + Specify loopback + + + + + Allows recording using the Windows waveIn APIs + Events are raised as recorded buffers are made available + + + + + Indicates recorded data is available + + + + + Indicates that all recorded data has now been received. + + + + + Prepares a Wave input device for recording + + + + + Creates a WaveIn device using the specified window handle for callbacks + + A valid window handle + + + + Prepares a Wave input device for recording + + + + + Returns the number of Wave In devices available in the system + + + + + Retrieves the capabilities of a waveIn device + + Device to test + The WaveIn device capabilities + + + + Milliseconds for the buffer. Recommended value is 100ms + + + + + Number of Buffers to use (usually 2 or 3) + + + + + The device number to use + + + + + Called when we get a new buffer of recorded data + + + + + Start recording + + + + + Stop recording + + + + + WaveFormat we are recording in + + + + + Dispose pattern + + + + + Microphone Level + + + + + Dispose method + + + + + WaveInCapabilities structure (based on WAVEINCAPS2 from mmsystem.h) + http://msdn.microsoft.com/en-us/library/ms713726(VS.85).aspx + + + + + wMid + + + + + wPid + + + + + vDriverVersion + + + + + Product Name (szPname) + + + + + Supported formats (bit flags) dwFormats + + + + + Supported channels (1 for mono 2 for stereo) (wChannels) + Seems to be set to -1 on a lot of devices + + + + + wReserved1 + + + + + Number of channels supported + + + + + The product name + + + + + The device name Guid (if provided) + + + + + The product name Guid (if provided) + + + + + The manufacturer guid (if provided) + + + + + Checks to see if a given SupportedWaveFormat is supported + + The SupportedWaveFormat + true if supported + + + + The device name from the registry if supported + + + + + Event Args for WaveInStream event + + + + + Creates new WaveInEventArgs + + + + + Buffer containing recorded data. Note that it might not be completely + full. + + + + + The number of recorded bytes in Buffer. + + + + + MME Wave function interop + + + + + CALLBACK_NULL + No callback + + + + + CALLBACK_FUNCTION + dwCallback is a FARPROC + + + + + CALLBACK_EVENT + dwCallback is an EVENT handle + + + + + CALLBACK_WINDOW + dwCallback is a HWND + + + + + CALLBACK_THREAD + callback is a thread ID + + + + + WIM_OPEN + + + + + WIM_CLOSE + + + + + WIM_DATA + + + + + WOM_CLOSE + + + + + WOM_DONE + + + + + WOM_OPEN + + + + + WaveOutCapabilities structure (based on WAVEOUTCAPS2 from mmsystem.h) + http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_waveoutcaps_str.asp + + + + + wMid + + + + + wPid + + + + + vDriverVersion + + + + + Product Name (szPname) + + + + + Supported formats (bit flags) dwFormats + + + + + Supported channels (1 for mono 2 for stereo) (wChannels) + Seems to be set to -1 on a lot of devices + + + + + wReserved1 + + + + + Optional functionality supported by the device + + + + + Number of channels supported + + + + + Whether playback control is supported + + + + + The product name + + + + + Checks to see if a given SupportedWaveFormat is supported + + The SupportedWaveFormat + true if supported + + + + The device name Guid (if provided) + + + + + The product name Guid (if provided) + + + + + The manufacturer guid (if provided) + + + + + Supported wave formats for WaveOutCapabilities + + + + + 11.025 kHz, Mono, 8-bit + + + + + 11.025 kHz, Stereo, 8-bit + + + + + 11.025 kHz, Mono, 16-bit + + + + + 11.025 kHz, Stereo, 16-bit + + + + + 22.05 kHz, Mono, 8-bit + + + + + 22.05 kHz, Stereo, 8-bit + + + + + 22.05 kHz, Mono, 16-bit + + + + + 22.05 kHz, Stereo, 16-bit + + + + + 44.1 kHz, Mono, 8-bit + + + + + 44.1 kHz, Stereo, 8-bit + + + + + 44.1 kHz, Mono, 16-bit + + + + + 44.1 kHz, Stereo, 16-bit + + + + + 44.1 kHz, Mono, 8-bit + + + + + 44.1 kHz, Stereo, 8-bit + + + + + 44.1 kHz, Mono, 16-bit + + + + + 44.1 kHz, Stereo, 16-bit + + + + + 48 kHz, Mono, 8-bit + + + + + 48 kHz, Stereo, 8-bit + + + + + 48 kHz, Mono, 16-bit + + + + + 48 kHz, Stereo, 16-bit + + + + + 96 kHz, Mono, 8-bit + + + + + 96 kHz, Stereo, 8-bit + + + + + 96 kHz, Mono, 16-bit + + + + + 96 kHz, Stereo, 16-bit + + + + + Flags indicating what features this WaveOut device supports + + + + supports pitch control (WAVECAPS_PITCH) + + + supports playback rate control (WAVECAPS_PLAYBACKRATE) + + + supports volume control (WAVECAPS_VOLUME) + + + supports separate left-right volume control (WAVECAPS_LRVOLUME) + + + (WAVECAPS_SYNC) + + + (WAVECAPS_SAMPLEACCURATE) + + + + GSM 610 + + + + + Creates a GSM 610 WaveFormat + For now hardcoded to 13kbps + + + + + Samples per block + + + + + Writes this structure to a BinaryWriter + + + + + IMA/DVI ADPCM Wave Format + Work in progress + + + + + parameterless constructor for Marshalling + + + + + Creates a new IMA / DVI ADPCM Wave Format + + Sample Rate + Number of channels + Bits Per Sample + + + + MP3 WaveFormat, MPEGLAYER3WAVEFORMAT from mmreg.h + + + + + Wave format ID (wID) + + + + + Padding flags (fdwFlags) + + + + + Block Size (nBlockSize) + + + + + Frames per block (nFramesPerBlock) + + + + + Codec Delay (nCodecDelay) + + + + + Creates a new MP3 WaveFormat + + + + + Wave Format Padding Flags + + + + + MPEGLAYER3_FLAG_PADDING_ISO + + + + + MPEGLAYER3_FLAG_PADDING_ON + + + + + MPEGLAYER3_FLAG_PADDING_OFF + + + + + Wave Format ID + + + + MPEGLAYER3_ID_UNKNOWN + + + MPEGLAYER3_ID_MPEG + + + MPEGLAYER3_ID_CONSTANTFRAMESIZE + + + + DSP Group TrueSpeech + + + + + DSP Group TrueSpeech WaveFormat + + + + + Writes this structure to a BinaryWriter + + + + + Represents a Wave file format + + + + format type + + + number of channels + + + sample rate + + + for buffer estimation + + + block size of data + + + number of bits per sample of mono data + + + number of following bytes + + + + Creates a new PCM 44.1Khz stereo 16 bit format + + + + + Creates a new 16 bit wave format with the specified sample + rate and channel count + + Sample Rate + Number of channels + + + + Gets the size of a wave buffer equivalent to the latency in milliseconds. + + The milliseconds. + + + + + Creates a WaveFormat with custom members + + The encoding + Sample Rate + Number of channels + Average Bytes Per Second + Block Align + Bits Per Sample + + + + + Creates an A-law wave format + + Sample Rate + Number of Channels + Wave Format + + + + Creates a Mu-law wave format + + Sample Rate + Number of Channels + Wave Format + + + + Creates a new PCM format with the specified sample rate, bit depth and channels + + + + + Creates a new 32 bit IEEE floating point wave format + + sample rate + number of channels + + + + Helper function to retrieve a WaveFormat structure from a pointer + + WaveFormat structure + + + + + Helper function to marshal WaveFormat to an IntPtr + + WaveFormat + IntPtr to WaveFormat structure (needs to be freed by callee) + + + + Reads in a WaveFormat (with extra data) from a fmt chunk (chunk identifier and + length should already have been read) + + Binary reader + Format chunk length + A WaveFormatExtraData + + + + Reads a new WaveFormat object from a stream + + A binary reader that wraps the stream + + + + Reports this WaveFormat as a string + + String describing the wave format + + + + Compares with another WaveFormat object + + Object to compare to + True if the objects are the same + + + + Provides a Hashcode for this WaveFormat + + A hashcode + + + + Returns the encoding type used + + + + + Writes this WaveFormat object to a stream + + the output stream + + + + Returns the number of channels (1=mono,2=stereo etc) + + + + + Returns the sample rate (samples per second) + + + + + Returns the average number of bytes used per second + + + + + Returns the block alignment + + + + + Returns the number of bits per sample (usually 16 or 32, sometimes 24 or 8) + Can be 0 for some codecs + + + + + Returns the number of extra bytes used by this waveformat. Often 0, + except for compressed formats which store extra data after the WAVEFORMATEX header + + + + + Microsoft ADPCM + See http://icculus.org/SDL_sound/downloads/external_documentation/wavecomp.htm + + + + + Empty constructor needed for marshalling from a pointer + + + + + Samples per block + + + + + Number of coefficients + + + + + Coefficients + + + + + Microsoft ADPCM + + Sample Rate + Channels + + + + Serializes this wave format + + Binary writer + + + + String Description of this WaveFormat + + + + + Custom marshaller for WaveFormat structures + + + + + Gets the instance of this marshaller + + + + + + + Clean up managed data + + + + + Clean up native data + + + + + + Get native data size + + + + + Marshal managed to native + + + + + Marshal Native to Managed + + + + + Summary description for WaveFormatEncoding. + + + + WAVE_FORMAT_UNKNOWN, Microsoft Corporation + + + WAVE_FORMAT_PCM Microsoft Corporation + + + WAVE_FORMAT_ADPCM Microsoft Corporation + + + WAVE_FORMAT_IEEE_FLOAT Microsoft Corporation + + + WAVE_FORMAT_VSELP Compaq Computer Corp. + + + WAVE_FORMAT_IBM_CVSD IBM Corporation + + + WAVE_FORMAT_ALAW Microsoft Corporation + + + WAVE_FORMAT_MULAW Microsoft Corporation + + + WAVE_FORMAT_DTS Microsoft Corporation + + + WAVE_FORMAT_DRM Microsoft Corporation + + + WAVE_FORMAT_WMAVOICE9 + + + WAVE_FORMAT_OKI_ADPCM OKI + + + WAVE_FORMAT_DVI_ADPCM Intel Corporation + + + WAVE_FORMAT_IMA_ADPCM Intel Corporation + + + WAVE_FORMAT_MEDIASPACE_ADPCM Videologic + + + WAVE_FORMAT_SIERRA_ADPCM Sierra Semiconductor Corp + + + WAVE_FORMAT_G723_ADPCM Antex Electronics Corporation + + + WAVE_FORMAT_DIGISTD DSP Solutions, Inc. + + + WAVE_FORMAT_DIGIFIX DSP Solutions, Inc. + + + WAVE_FORMAT_DIALOGIC_OKI_ADPCM Dialogic Corporation + + + WAVE_FORMAT_MEDIAVISION_ADPCM Media Vision, Inc. + + + WAVE_FORMAT_CU_CODEC Hewlett-Packard Company + + + WAVE_FORMAT_YAMAHA_ADPCM Yamaha Corporation of America + + + WAVE_FORMAT_SONARC Speech Compression + + + WAVE_FORMAT_DSPGROUP_TRUESPEECH DSP Group, Inc + + + WAVE_FORMAT_ECHOSC1 Echo Speech Corporation + + + WAVE_FORMAT_AUDIOFILE_AF36, Virtual Music, Inc. + + + WAVE_FORMAT_APTX Audio Processing Technology + + + WAVE_FORMAT_AUDIOFILE_AF10, Virtual Music, Inc. + + + WAVE_FORMAT_PROSODY_1612, Aculab plc + + + WAVE_FORMAT_LRC, Merging Technologies S.A. + + + WAVE_FORMAT_DOLBY_AC2, Dolby Laboratories + + + WAVE_FORMAT_GSM610, Microsoft Corporation + + + WAVE_FORMAT_MSNAUDIO, Microsoft Corporation + + + WAVE_FORMAT_ANTEX_ADPCME, Antex Electronics Corporation + + + WAVE_FORMAT_CONTROL_RES_VQLPC, Control Resources Limited + + + WAVE_FORMAT_DIGIREAL, DSP Solutions, Inc. + + + WAVE_FORMAT_DIGIADPCM, DSP Solutions, Inc. + + + WAVE_FORMAT_CONTROL_RES_CR10, Control Resources Limited + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WAVE_FORMAT_MPEG, Microsoft Corporation + + + + + + + + + WAVE_FORMAT_MPEGLAYER3, ISO/MPEG Layer3 Format Tag + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WAVE_FORMAT_GSM + + + WAVE_FORMAT_G729 + + + WAVE_FORMAT_G723 + + + WAVE_FORMAT_ACELP + + + + WAVE_FORMAT_RAW_AAC1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Windows Media Audio, WAVE_FORMAT_WMAUDIO2, Microsoft Corporation + + + + + Windows Media Audio Professional WAVE_FORMAT_WMAUDIO3, Microsoft Corporation + + + + + Windows Media Audio Lossless, WAVE_FORMAT_WMAUDIO_LOSSLESS + + + + + Windows Media Audio Professional over SPDIF WAVE_FORMAT_WMASPDIF (0x0164) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Advanced Audio Coding (AAC) audio in Audio Data Transport Stream (ADTS) format. + The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_ADTS_AAC. + + + The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels, + prior to applying spectral band replication (SBR) or parametric stereo (PS) tools, if present. + No additional data is required after the WAVEFORMATEX structure. + + http://msdn.microsoft.com/en-us/library/dd317599%28VS.85%29.aspx + + + + Source wmCodec.h + + + + MPEG-4 audio transport stream with a synchronization layer (LOAS) and a multiplex layer (LATM). + The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_LOAS. + + + The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels, + prior to applying spectral SBR or PS tools, if present. + No additional data is required after the WAVEFORMATEX structure. + + http://msdn.microsoft.com/en-us/library/dd317599%28VS.85%29.aspx + + + NOKIA_MPEG_ADTS_AAC + Source wmCodec.h + + + NOKIA_MPEG_RAW_AAC + Source wmCodec.h + + + VODAFONE_MPEG_ADTS_AAC + Source wmCodec.h + + + VODAFONE_MPEG_RAW_AAC + Source wmCodec.h + + + + High-Efficiency Advanced Audio Coding (HE-AAC) stream. + The format block is an HEAACWAVEFORMAT structure. + + http://msdn.microsoft.com/en-us/library/dd317599%28VS.85%29.aspx + + + WAVE_FORMAT_DVM + + + WAVE_FORMAT_VORBIS1 "Og" Original stream compatible + + + WAVE_FORMAT_VORBIS2 "Pg" Have independent header + + + WAVE_FORMAT_VORBIS3 "Qg" Have no codebook header + + + WAVE_FORMAT_VORBIS1P "og" Original stream compatible + + + WAVE_FORMAT_VORBIS2P "pg" Have independent headere + + + WAVE_FORMAT_VORBIS3P "qg" Have no codebook header + + + WAVE_FORMAT_EXTENSIBLE + + + + + + + WaveFormatExtensible + http://www.microsoft.com/whdc/device/audio/multichaud.mspx + + + + + Parameterless constructor for marshalling + + + + + Creates a new WaveFormatExtensible for PCM or IEEE + + + + + WaveFormatExtensible for PCM or floating point can be awkward to work with + This creates a regular WaveFormat structure representing the same audio format + Returns the WaveFormat unchanged for non PCM or IEEE float + + + + + + SubFormat (may be one of AudioMediaSubtypes) + + + + + Serialize + + + + + + String representation + + + + + This class used for marshalling from unmanaged code + + + + + Allows the extra data to be read + + + + + parameterless constructor for marshalling + + + + + Reads this structure from a BinaryReader + + + + + Writes this structure to a BinaryWriter + + + + + The WMA wave format. + May not be much use because WMA codec is a DirectShow DMO not an ACM + + + + + Generic interface for wave recording + + + + + Recording WaveFormat + + + + + Start Recording + + + + + Stop Recording + + + + + Indicates recorded data is available + + + + + Indicates that all recorded data has now been received. + + + + + This class writes audio data to a .aif file on disk + + + + + Creates an Aiff file by reading all the data from a WaveProvider + BEWARE: the WaveProvider MUST return 0 from its Read method when it is finished, + or the Aiff File will grow indefinitely. + + The filename to use + The source WaveProvider + + + + AiffFileWriter that actually writes to a stream + + Stream to be written to + Wave format to use + + + + Creates a new AiffFileWriter + + The filename to write to + The Wave Format of the output data + + + + The aiff file name or null if not applicable + + + + + Number of bytes of audio in the data chunk + + + + + WaveFormat of this aiff file + + + + + Returns false: Cannot read from a AiffFileWriter + + + + + Returns true: Can write to a AiffFileWriter + + + + + Returns false: Cannot seek within a AiffFileWriter + + + + + Read is not supported for a AiffFileWriter + + + + + Seek is not supported for a AiffFileWriter + + + + + SetLength is not supported for AiffFileWriter + + + + + + Gets the Position in the AiffFile (i.e. number of bytes written so far) + + + + + Appends bytes to the AiffFile (assumes they are already in the correct format) + + the buffer containing the wave data + the offset from which to start writing + the number of bytes to write + + + + Writes a single sample to the Aiff file + + the sample to write (assumed floating point with 1.0f as max value) + + + + Writes 32 bit floating point samples to the Aiff file + They will be converted to the appropriate bit depth depending on the WaveFormat of the AIF file + + The buffer containing the floating point samples + The offset from which to start writing + The number of floating point samples to write + + + + Writes 16 bit samples to the Aiff file + + The buffer containing the 16 bit samples + The offset from which to start writing + The number of 16 bit samples to write + + + + Ensures data is written to disk + + + + + Actually performs the close,making sure the header contains the correct data + + True if called from Dispose + + + + Updates the header with file size information + + + + + Finaliser - should only be called if the user forgot to close this AiffFileWriter + + + + + Raised when ASIO data has been recorded. + It is important to handle this as quickly as possible as it is in the buffer callback + + + + + Initialises a new instance of AsioAudioAvailableEventArgs + + Pointers to the ASIO buffers for each channel + Pointers to the ASIO buffers for each channel + Number of samples in each buffer + Audio format within each buffer + + + + Pointer to a buffer per input channel + + + + + Pointer to a buffer per output channel + Allows you to write directly to the output buffers + If you do so, set SamplesPerBuffer = true, + and make sure all buffers are written to with valid data + + + + + Set to true if you have written to the output buffers + If so, AsioOut will not read from its source + + + + + Number of samples in each buffer + + + + + Converts all the recorded audio into a buffer of 32 bit floating point samples, interleaved by channel + + The samples as 32 bit floating point, interleaved + + + + Audio format within each buffer + Most commonly this will be one of, Int32LSB, Int16LSB, Int24LSB or Float32LSB + + + + + Gets as interleaved samples, allocating a float array + + The samples as 32 bit floating point values + + + + ASIO Out Player. New implementation using an internal C# binding. + + This implementation is only supporting Short16Bit and Float32Bit formats and is optimized + for 2 outputs channels . + SampleRate is supported only if AsioDriver is supporting it + + This implementation is probably the first AsioDriver binding fully implemented in C#! + + Original Contributor: Mark Heath + New Contributor to C# binding : Alexandre Mutel - email: alexandre_mutel at yahoo.fr + + + + + Playback Stopped + + + + + When recording, fires whenever recorded audio is available + + + + + Initializes a new instance of the class with the first + available ASIO Driver. + + + + + Initializes a new instance of the class with the driver name. + + Name of the device. + + + + Opens an ASIO output device + + Device number (zero based) + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + Dispose + + + + + Gets the names of the installed ASIO Driver. + + an array of driver names + + + + Determines whether ASIO is supported. + + + true if ASIO is supported; otherwise, false. + + + + + Inits the driver from the asio driver name. + + Name of the driver. + + + + Shows the control panel + + + + + Starts playback + + + + + Stops playback + + + + + Pauses playback + + + + + Initialises to play + + Source wave provider + + + + Initialises to play, with optional recording + + Source wave provider - set to null for record only + Number of channels to record + Specify sample rate here if only recording, ignored otherwise + + + + driver buffer update callback to fill the wave buffer. + + The input channels. + The output channels. + + + + Gets the latency (in ms) of the playback driver + + + + + Playback State + + + + + Driver Name + + + + + The number of output channels we are currently using for playback + (Must be less than or equal to DriverOutputChannelCount) + + + + + The number of input channels we are currently recording from + (Must be less than or equal to DriverInputChannelCount) + + + + + The maximum number of input channels this ASIO driver supports + + + + + The maximum number of output channels this ASIO driver supports + + + + + The number of samples per channel, per buffer. + + + + + By default the first channel on the input WaveProvider is sent to the first ASIO output. + This option sends it to the specified channel number. + Warning: make sure you don't set it higher than the number of available output channels - + the number of source channels. + n.b. Future NAudio may modify this + + + + + Input channel offset (used when recording), allowing you to choose to record from just one + specific input rather than them all + + + + + Sets the volume (1.0 is unity gain) + Not supported for ASIO Out. Set the volume on the input stream instead + + + + + Get the input channel name + + channel index (zero based) + channel name + + + + Get the output channel name + + channel index (zero based) + channel name + + + + https://tech.ebu.ch/docs/tech/tech3285.pdf + + + + + Constructs a new BextChunkInfo + + + + + Description (max 256 chars) + + + + + Originator (max 32 chars) + + + + + Originator Reference (max 32 chars) + + + + + Originator Date Time + + + + + Origination Date as string + + + + + Origination as time + + + + + Time reference (first sample count since midnight) + + + + + version 2 has loudness stuff which we don't know so using version 1 + + + + + 64 bytes http://en.wikipedia.org/wiki/UMID + + + + + for version 2 = 180 bytes (10 before are loudness values), using version 1 = 190 bytes + + + + + Coding history arbitrary length string at end of structure + http://www.ebu.ch/CMSimages/fr/tec_text_r98-1999_tcm7-4709.pdf + A=PCM,F=48000,W=16,M=stereo,T=original,CR/LF + + + + + Broadcast WAVE File Writer + + + + + Createa a new BwfWriter + + Rarget filename + WaveFormat + Chunk information + + + + Write audio data to this BWF + + + + + Flush writer, and fix up header sizes + + + + + Disposes this writer + + + + + A wave file writer that adds cue support + + + + + Writes a wave file, including a cues chunk + + + + + Adds a cue to the Wave file + + Sample position + Label text + + + + Updates the header, and writes the cues out + + + + + Media Foundation Encoder class allows you to use Media Foundation to encode an IWaveProvider + to any supported encoding format + + + + + Queries the available bitrates for a given encoding output type, sample rate and number of channels + + Audio subtype - a value from the AudioSubtypes class + The sample rate of the PCM to encode + The number of channels of the PCM to encode + An array of available bitrates in average bits per second + + + + Gets all the available media types for a particular + + Audio subtype - a value from the AudioSubtypes class + An array of available media types that can be encoded with this subtype + + + + Helper function to simplify encoding Window Media Audio + Should be supported on Vista and above (not tested) + + Input provider, must be PCM + Output file path, should end with .wma + Desired bitrate. Use GetEncodeBitrates to find the possibilities for your input type + + + + Helper function to simplify encoding to MP3 + By default, will only be available on Windows 8 and above + + Input provider, must be PCM + Output file path, should end with .mp3 + Desired bitrate. Use GetEncodeBitrates to find the possibilities for your input type + + + + Helper function to simplify encoding to AAC + By default, will only be available on Windows 7 and above + + Input provider, must be PCM + Output file path, should end with .mp4 (or .aac on Windows 8) + Desired bitrate. Use GetEncodeBitrates to find the possibilities for your input type + + + + Tries to find the encoding media type with the closest bitrate to that specified + + Audio subtype, a value from AudioSubtypes + Your encoder input format (used to check sample rate and channel count) + Your desired bitrate + The closest media type, or null if none available + + + + Creates a new encoder that encodes to the specified output media type + + Desired output media type + + + + Encodes a file + + Output filename (container type is deduced from the filename) + Input provider (should be PCM, some encoders will also allow IEEE float) + + + + Disposes this instance + + + + + + Disposes this instance + + + + + Finalizer + + + + + Stopped Event Args + + + + + Initializes a new instance of StoppedEventArgs + + An exception to report (null if no exception) + + + + An exception. Will be null if the playback or record operation stopped due to + the user requesting stop or reached the end of the input audio + + + + + IWaveBuffer interface use to store wave datas. + Data can be manipulated with arrays (,, + , ) that are pointing to the same memory buffer. + This is a requirement for all subclasses. + + Use the associated Count property based on the type of buffer to get the number of data in the + buffer. + + for the standard implementation using C# unions. + + + + + Gets the byte buffer. + + The byte buffer. + + + + Gets the float buffer. + + The float buffer. + + + + Gets the short buffer. + + The short buffer. + + + + Gets the int buffer. + + The int buffer. + + + + Gets the max size in bytes of the byte buffer.. + + Maximum number of bytes in the buffer. + + + + Gets the byte buffer count. + + The byte buffer count. + + + + Gets the float buffer count. + + The float buffer count. + + + + Gets the short buffer count. + + The short buffer count. + + + + Gets the int buffer count. + + The int buffer count. + + + + Represents the interface to a device that can play a WaveFile + + + + + Begin playback + + + + + Stop playback + + + + + Pause Playback + + + + + Initialise playback + + The waveprovider to be played + + + + Current playback state + + + + + The volume + 1.0f is full scale + Note that not all implementations necessarily support volume changes + + + + + Indicates that playback has gone into a stopped state due to + reaching the end of the input stream or an error has been encountered during playback + + + + + Interface for IWavePlayers that can report position + + + + + Position (in terms of bytes played - does not necessarily translate directly to the position within the source audio file) + + Position in bytes + + + + Gets a instance indicating the format the hardware is using. + + + + + Generic interface for all WaveProviders. + + + + + Gets the WaveFormat of this WaveProvider. + + The wave format. + + + + Fill the specified buffer with wave data. + + The buffer to fill of wave data. + Offset into buffer + The number of bytes to read + the number of bytes written to the buffer. + + + + NativeDirectSoundOut using DirectSound COM interop. + Contact author: Alexandre Mutel - alexandre_mutel at yahoo.fr + Modified by: Graham "Gee" Plumb + + + + + Playback Stopped + + + + + Gets the DirectSound output devices in the system + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + (40ms seems to work under Vista). + + The latency. + Selected device + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + Begin playback + + + + + Stop playback + + + + + Pause Playback + + + + + Gets the current position in bytes from the wave output device. + (n.b. this is not the same thing as the position within your reader + stream) + + Position in bytes + + + + Gets the current position from the wave output device. + + + + + Initialise playback + + The waveprovider to be played + + + + Current playback state + + + + + + The volume 1.0 is full scale + + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Determines whether the SecondaryBuffer is lost. + + + true if [is buffer lost]; otherwise, false. + + + + + Convert ms to bytes size according to WaveFormat + + The ms + number of byttes + + + + Processes the samples in a separate thread. + + + + + Stop playback + + + + + Clean up the SecondaryBuffer + + + + In DirectSound, when playback is started, + the rest of the sound that was played last time is played back as noise. + This happens even if the secondary buffer is completely silenced, + so it seems that the buffer in the primary buffer or higher is not cleared. + + + To solve this problem fill the secondary buffer with silence data when stop playback. + + + + + + Feeds the SecondaryBuffer with the WaveStream + + number of bytes to feed + + + + IDirectSound interface + + + + + IDirectSoundBuffer interface + + + + + IDirectSoundNotify interface + + + + + Instanciate DirectSound from the DLL + + The GUID. + The direct sound. + The p unk outer. + + + + DirectSound default playback device GUID + + + + + DirectSound default capture device GUID + + + + + DirectSound default device for voice playback + + + + + DirectSound default device for voice capture + + + + + The DSEnumCallback function is an application-defined callback function that enumerates the DirectSound drivers. + The system calls this function in response to the application's call to the DirectSoundEnumerate or DirectSoundCaptureEnumerate function. + + Address of the GUID that identifies the device being enumerated, or NULL for the primary device. This value can be passed to the DirectSoundCreate8 or DirectSoundCaptureCreate8 function to create a device object for that driver. + Address of a null-terminated string that provides a textual description of the DirectSound device. + Address of a null-terminated string that specifies the module name of the DirectSound driver corresponding to this device. + Address of application-defined data. This is the pointer passed to DirectSoundEnumerate or DirectSoundCaptureEnumerate as the lpContext parameter. + Returns TRUE to continue enumerating drivers, or FALSE to stop. + + + + The DirectSoundEnumerate function enumerates the DirectSound drivers installed in the system. + + callback function + User context + + + + Gets the HANDLE of the desktop window. + + HANDLE of the Desktop window + + + + Class for enumerating DirectSound devices + + + + + The device identifier + + + + + Device description + + + + + Device module name + + + + + Like IWaveProvider, but makes it much simpler to put together a 32 bit floating + point mixing engine + + + + + Gets the WaveFormat of this Sample Provider. + + The wave format. + + + + Fill the specified buffer with 32 bit floating point samples + + The buffer to fill with samples. + Offset into buffer + The number of samples to read + the number of samples written to the buffer. + + + + Playback State + + + + + Stopped + + + + + Playing + + + + + Paused + + + + + Support for playback using Wasapi + + + + + Playback Stopped + + + + + WASAPI Out shared mode, defauult + + + + + WASAPI Out using default audio endpoint + + ShareMode - shared or exclusive + Desired latency in milliseconds + + + + WASAPI Out using default audio endpoint + + ShareMode - shared or exclusive + true if sync is done with event. false use sleep. + Desired latency in milliseconds + + + + Creates a new WASAPI Output + + Device to use + + true if sync is done with event. false use sleep. + Desired latency in milliseconds + + + + Gets the current position in bytes from the wave output device. + (n.b. this is not the same thing as the position within your reader + stream) + + Position in bytes + + + + Gets a instance indicating the format the hardware is using. + + + + + Begin Playback + + + + + Stop playback and flush buffers + + + + + Stop playback without flushing buffers + + + + + Initialize for playing the specified wave stream + + IWaveProvider to play + + + + Playback State + + + + + Volume + + + + + Retrieve the AudioStreamVolume object for this audio stream + + + This returns the AudioStreamVolume object ONLY for shared audio streams. + + + This is thrown when an exclusive audio stream is being used. + + + + + Dispose + + + + + WaveBuffer class use to store wave datas. Data can be manipulated with arrays + (,,, ) that are pointing to the + same memory buffer. Use the associated Count property based on the type of buffer to get the number of + data in the buffer. + Implicit casting is now supported to float[], byte[], int[], short[]. + You must not use Length on returned arrays. + + n.b. FieldOffset is 8 now to allow it to work natively on 64 bit + + + + + Number of Bytes + + + + + Initializes a new instance of the class. + + The number of bytes. The size of the final buffer will be aligned on 4 Bytes (upper bound) + + + + Initializes a new instance of the class binded to a specific byte buffer. + + A byte buffer to bound the WaveBuffer to. + + + + Binds this WaveBuffer instance to a specific byte buffer. + + A byte buffer to bound the WaveBuffer to. + + + + Performs an implicit conversion from to . + + The wave buffer. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The wave buffer. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The wave buffer. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The wave buffer. + The result of the conversion. + + + + Gets the byte buffer. + + The byte buffer. + + + + Gets the float buffer. + + The float buffer. + + + + Gets the short buffer. + + The short buffer. + + + + Gets the int buffer. + + The int buffer. + + + + Gets the max size in bytes of the byte buffer.. + + Maximum number of bytes in the buffer. + + + + Gets or sets the byte buffer count. + + The byte buffer count. + + + + Gets or sets the float buffer count. + + The float buffer count. + + + + Gets or sets the short buffer count. + + The short buffer count. + + + + Gets or sets the int buffer count. + + The int buffer count. + + + + Clears the associated buffer. + + + + + Copy this WaveBuffer to a destination buffer up to ByteBufferCount bytes. + + + + + Checks the validity of the count parameters. + + Name of the arg. + The value. + The size of value. + + + + Wave Callback Info + + + + + Callback Strategy + + + + + Window Handle (if applicable) + + + + + Sets up a new WaveCallbackInfo for function callbacks + + + + + Sets up a new WaveCallbackInfo to use a New Window + IMPORTANT: only use this on the GUI thread + + + + + Sets up a new WaveCallbackInfo to use an existing window + IMPORTANT: only use this on the GUI thread + + + + + Wave Callback Strategy + + + + + Use a function + + + + + Create a new window (should only be done if on GUI thread) + + + + + Use an existing window handle + + + + + Use an event handle + + + + + This class writes WAV data to a .wav file on disk + + + + + Creates a 16 bit Wave File from an ISampleProvider + BEWARE: the source provider must not return data indefinitely + + The filename to write to + The source sample provider + + + + Creates a Wave file by reading all the data from a WaveProvider + BEWARE: the WaveProvider MUST return 0 from its Read method when it is finished, + or the Wave File will grow indefinitely. + + The filename to use + The source WaveProvider + + + + Writes to a stream by reading all the data from a WaveProvider + BEWARE: the WaveProvider MUST return 0 from its Read method when it is finished, + or the Wave File will grow indefinitely. + + The stream the method will output to + The source WaveProvider + + + + WaveFileWriter that actually writes to a stream + + Stream to be written to + Wave format to use + + + + Creates a new WaveFileWriter + + The filename to write to + The Wave Format of the output data + + + + The wave file name or null if not applicable + + + + + Number of bytes of audio in the data chunk + + + + + Total time (calculated from Length and average bytes per second) + + + + + WaveFormat of this wave file + + + + + Returns false: Cannot read from a WaveFileWriter + + + + + Returns true: Can write to a WaveFileWriter + + + + + Returns false: Cannot seek within a WaveFileWriter + + + + + Read is not supported for a WaveFileWriter + + + + + Seek is not supported for a WaveFileWriter + + + + + SetLength is not supported for WaveFileWriter + + + + + + Gets the Position in the WaveFile (i.e. number of bytes written so far) + + + + + Appends bytes to the WaveFile (assumes they are already in the correct format) + + the buffer containing the wave data + the offset from which to start writing + the number of bytes to write + + + + Appends bytes to the WaveFile (assumes they are already in the correct format) + + the buffer containing the wave data + the offset from which to start writing + the number of bytes to write + + + + Writes a single sample to the Wave file + + the sample to write (assumed floating point with 1.0f as max value) + + + + Writes 32 bit floating point samples to the Wave file + They will be converted to the appropriate bit depth depending on the WaveFormat of the WAV file + + The buffer containing the floating point samples + The offset from which to start writing + The number of floating point samples to write + + + + Writes 16 bit samples to the Wave file + + The buffer containing the 16 bit samples + The offset from which to start writing + The number of 16 bit samples to write + + + + Writes 16 bit samples to the Wave file + + The buffer containing the 16 bit samples + The offset from which to start writing + The number of 16 bit samples to write + + + + Ensures data is written to disk + Also updates header, so that WAV file will be valid up to the point currently written + + + + + Actually performs the close,making sure the header contains the correct data + + True if called from Dispose + + + + Updates the header with file size information + + + + + Finaliser - should only be called if the user forgot to close this WaveFileWriter + + + + + Represents a wave out device + + + + + Indicates playback has stopped automatically + + + + + Retrieves the capabilities of a waveOut device + + Device to test + The WaveOut device capabilities + + + + Returns the number of Wave Out devices available in the system + + + + + Gets or sets the desired latency in milliseconds + Should be set before a call to Init + + + + + Gets or sets the number of buffers used + Should be set before a call to Init + + + + + Gets or sets the device number + Should be set before a call to Init + This must be between -1 and DeviceCount - 1. + -1 means stick to default device even default device is changed + + + + + Creates a default WaveOut device + Will use window callbacks if called from a GUI thread, otherwise function + callbacks + + + + + Creates a WaveOut device using the specified window handle for callbacks + + A valid window handle + + + + Opens a WaveOut device + + + + + Initialises the WaveOut device + + WaveProvider to play + + + + Start playing the audio from the WaveStream + + + + + Pause the audio + + + + + Resume playing after a pause from the same position + + + + + Stop and reset the WaveOut device + + + + + Gets the current position in bytes from the wave output device. + (n.b. this is not the same thing as the position within your reader + stream - it calls directly into waveOutGetPosition) + + Position in bytes + + + + Gets a instance indicating the format the hardware is using. + + + + + Playback State + + + + + Volume for this device 1.0 is full scale + + + + + Closes this WaveOut device + + + + + Closes the WaveOut device and disposes of buffers + + True if called from Dispose + + + + Finalizer. Only called when user forgets to call Dispose + + + + + Alternative WaveOut class, making use of the Event callback + + + + + Indicates playback has stopped automatically + + + + + Gets or sets the desired latency in milliseconds + Should be set before a call to Init + + + + + Gets or sets the number of buffers used + Should be set before a call to Init + + + + + Gets or sets the device number + Should be set before a call to Init + This must be between -1 and DeviceCount - 1. + -1 means stick to default device even default device is changed + + + + + Opens a WaveOut device + + + + + Initialises the WaveOut device + + WaveProvider to play + + + + Start playing the audio from the WaveStream + + + + + Pause the audio + + + + + Resume playing after a pause from the same position + + + + + Stop and reset the WaveOut device + + + + + Gets the current position in bytes from the wave output device. + (n.b. this is not the same thing as the position within your reader + stream - it calls directly into waveOutGetPosition) + + Position in bytes + + + + Gets a instance indicating the format the hardware is using. + + + + + Playback State + + + + + Obsolete property + + + + + Closes this WaveOut device + + + + + Closes the WaveOut device and disposes of buffers + + True if called from Dispose + + + + Finalizer. Only called when user forgets to call Dispose + + + + + Provides a buffered store of samples + Read method will return queued samples or fill buffer with zeroes + Now backed by a circular buffer + + + + + Creates a new buffered WaveProvider + + WaveFormat + + + + If true, always read the amount of data requested, padding with zeroes if necessary + By default is set to true + + + + + Buffer length in bytes + + + + + Buffer duration + + + + + If true, when the buffer is full, start throwing away data + if false, AddSamples will throw an exception when buffer is full + + + + + The number of buffered bytes + + + + + Buffered Duration + + + + + Gets the WaveFormat + + + + + Adds samples. Takes a copy of buffer, so that buffer can be reused if necessary + + + + + Reads from this WaveProvider + Will always return count bytes, since we will zero-fill the buffer if not enough available + + + + + Discards all audio from the buffer + + + + + The Media Foundation Resampler Transform + + + + + Creates the Media Foundation Resampler, allowing modifying of sample rate, bit depth and channel count + + Source provider, must be PCM + Output format, must also be PCM + + + + Creates a resampler with a specified target output sample rate + + Source provider + Output sample rate + + + + Creates and configures the actual Resampler transform + + A newly created and configured resampler MFT + + + + Gets or sets the Resampler quality. n.b. set the quality before starting to resample. + 1 is lowest quality (linear interpolation) and 60 is best quality + + + + + Disposes this resampler + + + + + WaveProvider that can mix together multiple 32 bit floating point input provider + All channels must have the same number of inputs and same sample rate + n.b. Work in Progress - not tested yet + + + + + Creates a new MixingWaveProvider32 + + + + + Creates a new 32 bit MixingWaveProvider32 + + inputs - must all have the same format. + Thrown if the input streams are not 32 bit floating point, + or if they have different formats to each other + + + + Add a new input to the mixer + + The wave input to add + + + + Remove an input from the mixer + + waveProvider to remove + + + + The number of inputs to this mixer + + + + + Reads bytes from this wave stream + + buffer to read into + offset into buffer + number of bytes required + Number of bytes read. + Thrown if an invalid number of bytes requested + + + + Actually performs the mixing + + + + + + + + + + Allows any number of inputs to be patched to outputs + Uses could include swapping left and right channels, turning mono into stereo, + feeding different input sources to different soundcard outputs etc + + + + + Creates a multiplexing wave provider, allowing re-patching of input channels to different + output channels. Number of outputs is equal to total number of channels in inputs + + Input wave providers. Must all be of the same format, but can have any number of channels + + + + Creates a multiplexing wave provider, allowing re-patching of input channels to different + output channels + + Input wave providers. Must all be of the same format, but can have any number of channels + Desired number of output channels. (-1 means use total number of input channels) + + + + persistent temporary buffer to prevent creating work for garbage collector + + + + + Reads data from this WaveProvider + + Buffer to be filled with sample data + Offset to write to within buffer, usually 0 + Number of bytes required + Number of bytes read + + + + The WaveFormat of this WaveProvider + + + + + Connects a specified input channel to an output channel + + Input Channel index (zero based). Must be less than InputChannelCount + Output Channel index (zero based). Must be less than OutputChannelCount + + + + The number of input channels. Note that this is not the same as the number of input wave providers. If you pass in + one stereo and one mono input provider, the number of input channels is three. + + + + + The number of output channels, as specified in the constructor. + + + + + Silence producing wave provider + Useful for playing silence when doing a WASAPI Loopback Capture + + + + + Creates a new silence producing wave provider + + Desired WaveFormat (should be PCM / IEE float + + + + Read silence from into the buffer + + + + + WaveFormat of this silence producing wave provider + + + + + Takes a stereo 16 bit input and turns it mono, allowing you to select left or right channel only or mix them together + + + + + Creates a new mono waveprovider based on a stereo input + + Stereo 16 bit PCM input + + + + 1.0 to mix the mono source entirely to the left channel + + + + + 1.0 to mix the mono source entirely to the right channel + + + + + Output Wave Format + + + + + Reads bytes from this WaveProvider + + + + + Converts from mono to stereo, allowing freedom to route all, some, or none of the incoming signal to left or right channels + + + + + Creates a new stereo waveprovider based on a mono input + + Mono 16 bit PCM input + + + + 1.0 to copy the mono stream to the left channel without adjusting volume + + + + + 1.0 to copy the mono stream to the right channel without adjusting volume + + + + + Output Wave Format + + + + + Reads bytes from this WaveProvider + + + + + Helper class allowing us to modify the volume of a 16 bit stream without converting to IEEE float + + + + + Constructs a new VolumeWaveProvider16 + + Source provider, must be 16 bit PCM + + + + Gets or sets volume. + 1.0 is full scale, 0.0 is silence, anything over 1.0 will amplify but potentially clip + + + + + WaveFormat of this WaveProvider + + + + + Read bytes from this WaveProvider + + Buffer to read into + Offset within buffer to read to + Bytes desired + Bytes read + + + + Converts IEEE float to 16 bit PCM, optionally clipping and adjusting volume along the way + + + + + Creates a new WaveFloatTo16Provider + + the source provider + + + + Reads bytes from this wave stream + + The destination buffer + Offset into the destination buffer + Number of bytes read + Number of bytes read. + + + + + + + + + Volume of this channel. 1.0 = full scale + + + + + Converts 16 bit PCM to IEEE float, optionally adjusting volume along the way + + + + + Creates a new Wave16toFloatProvider + + the source provider + + + + Reads bytes from this wave stream + + The destination buffer + Offset into the destination buffer + Number of bytes read + Number of bytes read. + + + + + + + + + Volume of this channel. 1.0 = full scale + + + + + Buffered WaveProvider taking source data from WaveIn + + + + + Creates a new WaveInProvider + n.b. Should make sure the WaveFormat is set correctly on IWaveIn before calling + + The source of wave data + + + + Reads data from the WaveInProvider + + + + + The WaveFormat + + + + + Base class for creating a 16 bit wave provider + + + + + Initializes a new instance of the WaveProvider16 class + defaulting to 44.1kHz mono + + + + + Initializes a new instance of the WaveProvider16 class with the specified + sample rate and number of channels + + + + + Allows you to specify the sample rate and channels for this WaveProvider + (should be initialised before you pass it to a wave player) + + + + + Implements the Read method of IWaveProvider by delegating to the abstract + Read method taking a short array + + + + + Method to override in derived classes + Supply the requested number of samples into the buffer + + + + + The Wave Format + + + + + Base class for creating a 32 bit floating point wave provider + Can also be used as a base class for an ISampleProvider that can + be plugged straight into anything requiring an IWaveProvider + + + + + Initializes a new instance of the WaveProvider32 class + defaulting to 44.1kHz mono + + + + + Initializes a new instance of the WaveProvider32 class with the specified + sample rate and number of channels + + + + + Allows you to specify the sample rate and channels for this WaveProvider + (should be initialised before you pass it to a wave player) + + + + + Implements the Read method of IWaveProvider by delegating to the abstract + Read method taking a float array + + + + + Method to override in derived classes + Supply the requested number of samples into the buffer + + + + + The Wave Format + + + + + Utility class to intercept audio from an IWaveProvider and + save it to disk + + + + + Constructs a new WaveRecorder + + The location to write the WAV file to + The Source Wave Provider + + + + Read simply returns what the source returns, but writes to disk along the way + + + + + The WaveFormat + + + + + Closes the WAV file + + + + A read-only stream of AIFF data based on an aiff file + with an associated WaveFormat + originally contributed to NAudio by Giawa + + + + Supports opening a AIF file + The AIF is of similar nastiness to the WAV format. + This supports basic reading of uncompressed PCM AIF files, + with 8, 16, 24 and 32 bit PCM data. + + + + + Creates an Aiff File Reader based on an input stream + + The input stream containing a AIF file including header + + + + Ensures valid AIFF header and then finds data offset. + + The stream, positioned at the start of audio data + The format found + The position of the data chunk + The length of the data chunk + Additional chunks found + + + + Cleans up the resources associated with this AiffFileReader + + + + + + + + + + + + + + + Number of Samples (if possible to calculate) + + + + + Position in the AIFF file + + + + + + Reads bytes from the AIFF File + + + + + + AIFF Chunk + + + + + Chunk Name + + + + + Chunk Length + + + + + Chunk start + + + + + Creates a new AIFF Chunk + + + + + AudioFileReader simplifies opening an audio file in NAudio + Simply pass in the filename, and it will attempt to open the + file and set up a conversion path that turns into PCM IEEE float. + ACM codecs will be used for conversion. + It provides a volume property and implements both WaveStream and + ISampleProvider, making it possibly the only stage in your audio + pipeline necessary for simple playback scenarios + + + + + Initializes a new instance of AudioFileReader + + The file to open + + + + Creates the reader stream, supporting all filetypes in the core NAudio library, + and ensuring we are in PCM format + + File Name + + + + File Name + + + + + WaveFormat of this stream + + + + + Length of this stream (in bytes) + + + + + Position of this stream (in bytes) + + + + + Reads from this wave stream + + Audio buffer + Offset into buffer + Number of bytes required + Number of bytes read + + + + Reads audio from this sample provider + + Sample buffer + Offset into sample buffer + Number of samples required + Number of samples read + + + + Gets or Sets the Volume of this AudioFileReader. 1.0f is full volume + + + + + Helper to convert source to dest bytes + + + + + Helper to convert dest to source bytes + + + + + Disposes this AudioFileReader + + True if called from Dispose + + + + Helper stream that lets us read from compressed audio files with large block alignment + as though we could read any amount and reposition anywhere + + + + + Creates a new BlockAlignReductionStream + + the input stream + + + + Block alignment of this stream + + + + + Wave Format + + + + + Length of this Stream + + + + + Current position within stream + + + + + Disposes this WaveStream + + + + + Reads data from this stream + + + + + + + + + Implementation of Com IStream + + + + + Holds information on a cue: a labeled position within a Wave file + + + + + Cue position in samples + + + + + Label of the cue + + + + + Creates a Cue based on a sample position and label + + + + + + + Holds a list of cues + + + The specs for reading and writing cues from the cue and list RIFF chunks + are from http://www.sonicspot.com/guide/wavefiles.html and http://www.wotsit.org/ + ------------------------------ + The cues are stored like this: + ------------------------------ + struct CuePoint + { + Int32 dwIdentifier; + Int32 dwPosition; + Int32 fccChunk; + Int32 dwChunkStart; + Int32 dwBlockStart; + Int32 dwSampleOffset; + } + + struct CueChunk + { + Int32 chunkID; + Int32 chunkSize; + Int32 dwCuePoints; + CuePoint[] points; + } + ------------------------------ + Labels look like this: + ------------------------------ + struct ListHeader + { + Int32 listID; /* 'list' */ + Int32 chunkSize; /* includes the Type ID below */ + Int32 typeID; /* 'adtl' */ + } + + struct LabelChunk + { + Int32 chunkID; + Int32 chunkSize; + Int32 dwIdentifier; + Char[] dwText; /* Encoded with extended ASCII */ + } LabelChunk; + + + + + Creates an empty cue list + + + + + Adds an item to the list + + Cue + + + + Gets sample positions for the embedded cues + + Array containing the cue positions + + + + Gets labels for the embedded cues + + Array containing the labels + + + + Creates a cue list from the cue RIFF chunk and the list RIFF chunk + + The data contained in the cue chunk + The data contained in the list chunk + + + + Gets the cues as the concatenated cue and list RIFF chunks. + + RIFF chunks containing the cue data + + + + Number of cues + + + + + Accesses the cue at the specified index + + + + + + + Checks if the cue and list chunks exist and if so, creates a cue list + + + + + A wave file reader supporting cue reading + + + + + Loads a wavefile and supports reading cues + + + + + + Cue List (can be null if cues not present) + + + + + An interface for WaveStreams which can report notification of individual samples + + + + + A sample has been detected + + + + + Sample event arguments + + + + + Left sample + + + + + Right sample + + + + + Constructor + + + + + Class for reading any file that Media Foundation can play + Will only work in Windows Vista and above + Automatically converts to PCM + If it is a video file with multiple audio streams, it will pick out the first audio stream + + + + + Allows customisation of this reader class + + + + + Sets up the default settings for MediaFoundationReader + + + + + Allows us to request IEEE float output (n.b. no guarantee this will be accepted) + + + + + If true, the reader object created in the constructor is used in Read + Should only be set to true if you are working entirely on an STA thread, or + entirely with MTA threads. + + + + + If true, the reposition does not happen immediately, but waits until the + next call to read to be processed. + + + + + Default constructor + + + + + Creates a new MediaFoundationReader based on the supplied file + + Filename (can also be a URL e.g. http:// mms:// file://) + + + + Creates a new MediaFoundationReader based on the supplied file + + Filename + Advanced settings + + + + Initializes + + + + + Creates the reader (overridable by ) + + + + + Reads from this wave stream + + Buffer to read into + Offset in buffer + Bytes required + Number of bytes read; 0 indicates end of stream + + + + WaveFormat of this stream (n.b. this is after converting to PCM) + + + + + The bytesRequired of this stream in bytes (n.b may not be accurate) + + + + + Current position within this stream + + + + + Cleans up after finishing with this reader + + true if called from Dispose + + + + WaveFormat has changed + + + + + Class for reading from MP3 files + + + + + The MP3 wave format (n.b. NOT the output format of this stream - see the WaveFormat property) + + + + Supports opening a MP3 file + + + Supports opening a MP3 file + MP3 File name + Factory method to build a frame decompressor + + + + Opens MP3 from a stream rather than a file + Will not dispose of this stream itself + + The incoming stream containing MP3 data + + + + Opens MP3 from a stream rather than a file + Will not dispose of this stream itself + + The incoming stream containing MP3 data + Factory method to build a frame decompressor + + + + Function that can create an MP3 Frame decompressor + + A WaveFormat object describing the MP3 file format + An MP3 Frame decompressor + + + + Creates an ACM MP3 Frame decompressor. This is the default with NAudio + + A WaveFormat object based + + + + + Gets the total length of this file in milliseconds. + + + + + ID3v2 tag if present + + + + + ID3v1 tag if present + + + + + Reads the next mp3 frame + + Next mp3 frame, or null if EOF + + + + Reads the next mp3 frame + + Next mp3 frame, or null if EOF + + + + This is the length in bytes of data available to be read out from the Read method + (i.e. the decompressed MP3 length) + n.b. this may return 0 for files whose length is unknown + + + + + + + + + + + + + + + Reads decompressed PCM data from our MP3 file. + + + + + Xing header if present + + + + + Disposes this WaveStream + + + + + WaveStream that simply passes on data from its source stream + (e.g. a MemoryStream) + + + + + Initialises a new instance of RawSourceWaveStream + + The source stream containing raw audio + The waveformat of the audio in the source stream + + + + Initialises a new instance of RawSourceWaveStream + + The buffer containing raw audio + Offset in the source buffer to read from + Number of bytes to read in the buffer + The waveformat of the audio in the source stream + + + + The WaveFormat of this stream + + + + + The length in bytes of this stream (if supported) + + + + + The current position in this stream + + + + + Reads data from the stream + + + + + Wave Stream for converting between sample rates + + + + + WaveStream to resample using the DMO Resampler + + Input Stream + Desired Output Format + + + + Stream Wave Format + + + + + Stream length in bytes + + + + + Stream position in bytes + + + + + Reads data from input stream + + buffer + offset into buffer + Bytes required + Number of bytes read + + + + Dispose + + True if disposing (not from finalizer) + + + + Holds information about a RIFF file chunk + + + + + Creates a RiffChunk object + + + + + The chunk identifier + + + + + The chunk identifier converted to a string + + + + + The chunk length + + + + + The stream position this chunk is located at + + + + + A simple compressor + + + + + Create a new simple compressor stream + + Source stream + + + + Make-up Gain + + + + + Threshold + + + + + Ratio + + + + + Attack time + + + + + Release time + + + + + Determine whether the stream has the required amount of data. + + Number of bytes of data required from the stream. + Flag indicating whether the required amount of data is avialable. + + + + Turns gain on or off + + + + + Returns the stream length + + + + + Gets or sets the current position in the stream + + + + + Gets the WaveFormat of this stream + + + + + Reads bytes from this stream + + Buffer to read into + Offset in array to read into + Number of bytes to read + Number of bytes read + + + + Disposes this stream + + true if the user called this + + + + Gets the block alignment for this stream + + + + + MediaFoundationReader supporting reading from a stream + + + + + Constructs a new media foundation reader from a stream + + + + + Creates the reader + + + + + WaveStream that converts 32 bit audio back down to 16 bit, clipping if necessary + + + + + The method reuses the same buffer to prevent + unnecessary allocations. + + + + + Creates a new Wave32To16Stream + + the source stream + + + + Sets the volume for this stream. 1.0f is full scale + + + + + + + + + + Returns the stream length + + + + + Gets or sets the current position in the stream + + + + + Reads bytes from this wave stream + + Destination buffer + Offset into destination buffer + + Number of bytes read. + + + + Conversion to 16 bit and clipping + + + + + + + + + + Clip indicator. Can be reset. + + + + + Disposes this WaveStream + + + + + Represents Channel for the WaveMixerStream + 32 bit output and 16 bit input + It's output is always stereo + The input stream can be panned + + + + + Creates a new WaveChannel32 + + the source stream + stream volume (1 is 0dB) + pan control (-1 to 1) + + + + Creates a WaveChannel32 with default settings + + The source stream + + + + Gets the block alignment for this WaveStream + + + + + Returns the stream length + + + + + Gets or sets the current position in the stream + + + + + Reads bytes from this wave stream + + The destination buffer + Offset into the destination buffer + Number of bytes read + Number of bytes read. + + + + If true, Read always returns the number of bytes requested + + + + + + + + + + Volume of this channel. 1.0 = full scale + + + + + Pan of this channel (from -1 to 1) + + + + + Determines whether this channel has any data to play + to allow optimisation to not read, but bump position forward + + + + + Disposes this WaveStream + + + + + Sample + + + + + Raise the sample event (no check for null because it has already been done) + + + + This class supports the reading of WAV files, + providing a repositionable WaveStream that returns the raw data + contained in the WAV file + + + + Supports opening a WAV file + The WAV file format is a real mess, but we will only + support the basic WAV file format which actually covers the vast + majority of WAV files out there. For more WAV file format information + visit www.wotsit.org. If you have a WAV file that can't be read by + this class, email it to the NAudio project and we will probably + fix this reader to support it + + + + + Creates a Wave File Reader based on an input stream + + The input stream containing a WAV file including header + + + + Gets a list of the additional chunks found in this file + + + + + Gets the data for the specified chunk + + + + + Cleans up the resources associated with this WaveFileReader + + + + + + + + + + This is the length of audio data contained in this WAV file, in bytes + (i.e. the byte length of the data chunk, not the length of the WAV file itself) + + + + + + Number of Sample Frames (if possible to calculate) + This currently does not take into account number of channels + Multiply number of channels if you want the total number of samples + + + + + Position in the WAV data chunk. + + + + + + Reads bytes from the Wave File + + + + + + Attempts to read the next sample or group of samples as floating point normalised into the range -1.0f to 1.0f + + An array of samples, 1 for mono, 2 for stereo etc. Null indicates end of file reached + + + + + Attempts to read a sample into a float. n.b. only applicable for uncompressed formats + Will normalise the value read into the range -1.0f to 1.0f if it comes from a PCM encoding + + False if the end of the WAV data chunk was reached + + + + IWaveProvider that passes through an ACM Codec + + + + + Create a new WaveFormat conversion stream + + Desired output format + Source Provider + + + + Gets the WaveFormat of this stream + + + + + Indicates that a reposition has taken place, and internal buffers should be reset + + + + + Reads bytes from this stream + + Buffer to read into + Offset in buffer to read into + Number of bytes to read + Number of bytes read + + + + Disposes this stream + + true if the user called this + + + + Disposes this resource + + + + + Finalizer + + + + + WaveStream that passes through an ACM Codec + + + + + Create a new WaveFormat conversion stream + + Desired output format + Source stream + + + + Creates a stream that can convert to PCM + + The source stream + A PCM stream + + + + Gets or sets the current position in the stream + + + + + Converts source bytes to destination bytes + + + + + Converts destination bytes to source bytes + + + + + Returns the stream length + + + + + Gets the WaveFormat of this stream + + + + + + + Buffer to read into + Offset within buffer to write to + Number of bytes to read + Bytes read + + + + Disposes this stream + + true if the user called this + + + + A buffer of Wave samples + + + + + creates a new wavebuffer + + WaveIn device to write to + Buffer size in bytes + + + + Place this buffer back to record more audio + + + + + Finalizer for this wave buffer + + + + + Releases resources held by this WaveBuffer + + + + + Releases resources held by this WaveBuffer + + + + + Provides access to the actual record buffer (for reading only) + + + + + Indicates whether the Done flag is set on this buffer + + + + + Indicates whether the InQueue flag is set on this buffer + + + + + Number of bytes recorded + + + + + The buffer size in bytes + + + + + WaveStream that can mix together multiple 32 bit input streams + (Normally used with stereo input channels) + All channels must have the same number of inputs + + + + + Creates a new 32 bit WaveMixerStream + + + + + Creates a new 32 bit WaveMixerStream + + An Array of WaveStreams - must all have the same format. + Use WaveChannel is designed for this purpose. + Automatically stop when all inputs have been read + Thrown if the input streams are not 32 bit floating point, + or if they have different formats to each other + + + + Add a new input to the mixer + + The wave input to add + + + + Remove a WaveStream from the mixer + + waveStream to remove + + + + The number of inputs to this mixer + + + + + Automatically stop when all inputs have been read + + + + + Reads bytes from this wave stream + + buffer to read into + offset into buffer + number of bytes required + Number of bytes read. + Thrown if an invalid number of bytes requested + + + + Actually performs the mixing + + + + + + + + + + Length of this Wave Stream (in bytes) + + + + + + Position within this Wave Stream (in bytes) + + + + + + + + + + + Disposes this WaveStream + + + + + Simply shifts the input stream in time, optionally + clipping its start and end. + (n.b. may include looping in the future) + + + + + Creates a new WaveOffsetStream + + the source stream + the time at which we should start reading from the source stream + amount to trim off the front of the source stream + length of time to play from source stream + + + + Creates a WaveOffsetStream with default settings (no offset or pre-delay, + and whole length of source stream) + + The source stream + + + + The length of time before which no audio will be played + + + + + An offset into the source stream from which to start playing + + + + + Length of time to read from the source stream + + + + + Gets the block alignment for this WaveStream + + + + + Returns the stream length + + + + + Gets or sets the current position in the stream + + + + + Reads bytes from this wave stream + + The destination buffer + Offset into the destination buffer + Number of bytes read + Number of bytes read. + + + + + + + + + Determines whether this channel has any data to play + to allow optimisation to not read, but bump position forward + + + + + Disposes this WaveStream + + + + + A buffer of Wave samples for streaming to a Wave Output device + + + + + creates a new wavebuffer + + WaveOut device to write to + Buffer size in bytes + Stream to provide more data + Lock to protect WaveOut API's from being called on >1 thread + + + + Finalizer for this wave buffer + + + + + Releases resources held by this WaveBuffer + + + + + Releases resources held by this WaveBuffer + + + + this is called by the WAVE callback and should be used to refill the buffer + + + + Whether the header's in queue flag is set + + + + + The buffer size in bytes + + + + + Base class for all WaveStream classes. Derives from stream. + + + + + Retrieves the WaveFormat for this stream + + + + + We can read from this stream + + + + + We can seek within this stream + + + + + We can't write to this stream + + + + + Flush does not need to do anything + See + + + + + An alternative way of repositioning. + See + + + + + Sets the length of the WaveStream. Not Supported. + + + + + + Writes to the WaveStream. Not Supported. + + + + + The block alignment for this wavestream. Do not modify the Position + to anything that is not a whole multiple of this value + + + + + Moves forward or backwards the specified number of seconds in the stream + + Number of seconds to move, can be negative + + + + The current position in the stream in Time format + + + + + Total length in real-time of the stream (may be an estimate for compressed files) + + + + + Whether the WaveStream has non-zero sample data at the current position for the + specified count + + Number of bytes to read + + + + Contains the name and CLSID of a DirectX Media Object + + + + + Name + + + + + CLSID + + + + + Initializes a new instance of DmoDescriptor + + + + + DirectX Media Object Enumerator + + + + + Get audio effect names + + Audio effect names + + + + Get audio encoder names + + Audio encoder names + + + + Get audio decoder names + + Audio decoder names + + + + DMO Guids for use with DMOEnum + dmoreg.h + + + + + MediaErr.h + + + + + DMO_PARTIAL_MEDIATYPE + + + + + defined in Medparam.h + + + + + Windows Media Resampler Props + wmcodecdsp.h + + + + + Range is 1 to 60 + + + + + Specifies the channel matrix. + + + + + Attempting to implement the COM IMediaBuffer interface as a .NET object + Not sure what will happen when I pass this to an unmanaged object + + + + + Creates a new Media Buffer + + Maximum length in bytes + + + + Dispose and free memory for buffer + + + + + Finalizer + + + + + Set length of valid data in the buffer + + length + HRESULT + + + + Gets the maximum length of the buffer + + Max length (output parameter) + HRESULT + + + + Gets buffer and / or length + + Pointer to variable into which buffer pointer should be written + Pointer to variable into which valid data length should be written + HRESULT + + + + Length of data in the media buffer + + + + + Loads data into this buffer + + Data to load + Number of bytes to load + + + + Retrieves the data in the output buffer + + buffer to retrieve into + offset within that buffer + + + + Media Object + + + + + Creates a new Media Object + + Media Object COM interface + + + + Number of input streams + + + + + Number of output streams + + + + + Gets the input media type for the specified input stream + + Input stream index + Input type index + DMO Media Type or null if there are no more input types + + + + Gets the DMO Media Output type + + The output stream + Output type index + DMO Media Type or null if no more available + + + + retrieves the media type that was set for an output stream, if any + + Output stream index + DMO Media Type or null if no more available + + + + Enumerates the supported input types + + Input stream index + Enumeration of input types + + + + Enumerates the output types + + Output stream index + Enumeration of supported output types + + + + Querys whether a specified input type is supported + + Input stream index + Media type to check + true if supports + + + + Sets the input type helper method + + Input stream index + Media type + Flags (can be used to test rather than set) + + + + Sets the input type + + Input stream index + Media Type + + + + Sets the input type to the specified Wave format + + Input stream index + Wave format + + + + Requests whether the specified Wave format is supported as an input + + Input stream index + Wave format + true if supported + + + + Helper function to make a DMO Media Type to represent a particular WaveFormat + + + + + Checks if a specified output type is supported + n.b. you may need to set the input type first + + Output stream index + Media type + True if supported + + + + Tests if the specified Wave Format is supported for output + n.b. may need to set the input type first + + Output stream index + Wave format + True if supported + + + + Helper method to call SetOutputType + + + + + Sets the output type + n.b. may need to set the input type first + + Output stream index + Media type to set + + + + Set output type to the specified wave format + n.b. may need to set input type first + + Output stream index + Wave format + + + + Get Input Size Info + + Input Stream Index + Input Size Info + + + + Get Output Size Info + + Output Stream Index + Output Size Info + + + + Process Input + + Input Stream index + Media Buffer + Flags + Timestamp + Duration + + + + Process Output + + Flags + Output buffer count + Output buffers + + + + Gives the DMO a chance to allocate any resources needed for streaming + + + + + Tells the DMO to free any resources needed for streaming + + + + + Gets maximum input latency + + input stream index + Maximum input latency as a ref-time + + + + Flushes all buffered data + + + + + Report a discontinuity on the specified input stream + + Input Stream index + + + + Is this input stream accepting data? + + Input Stream index + true if accepting data + + + + Experimental code, not currently being called + Not sure if it is necessary anyway + + + + + Media Object Size Info + + + + + Minimum Buffer Size, in bytes + + + + + Max Lookahead + + + + + Alignment + + + + + Media Object Size Info + + + + + ToString + + + + + MP_PARAMINFO + + + + + MP_TYPE + + + + + MPT_INT + + + + + MPT_FLOAT + + + + + MPT_BOOL + + + + + MPT_ENUM + + + + + MPT_MAX + + + + + MP_CURVE_TYPE + + + + + uuids.h, ksuuids.h + + + + + implements IMediaObject (DirectX Media Object) + implements IMFTransform (Media Foundation Transform) + On Windows XP, it is always an MM (if present at all) + + + + + Windows Media MP3 Decoder (as a DMO) + WORK IN PROGRESS - DO NOT USE! + + + + + Creates a new Resampler based on the DMO Resampler + + + + + Media Object + + + + + Dispose code - experimental at the moment + Was added trying to track down why Resampler crashes NUnit + This code not currently being called by ResamplerDmoStream + + + + + DMO Input Data Buffer Flags + + + + + None + + + + + DMO_INPUT_DATA_BUFFERF_SYNCPOINT + + + + + DMO_INPUT_DATA_BUFFERF_TIME + + + + + DMO_INPUT_DATA_BUFFERF_TIMELENGTH + + + + + http://msdn.microsoft.com/en-us/library/aa929922.aspx + DMO_MEDIA_TYPE + + + + + Major type + + + + + Major type name + + + + + Subtype + + + + + Subtype name + + + + + Fixed size samples + + + + + Sample size + + + + + Format type + + + + + Format type name + + + + + Gets the structure as a Wave format (if it is one) + + + + + Sets this object up to point to a wave format + + Wave format structure + + + + DMO Output Data Buffer + + + + + Creates a new DMO Output Data Buffer structure + + Maximum buffer size + + + + Dispose + + + + + Media Buffer + + + + + Length of data in buffer + + + + + Status Flags + + + + + Timestamp + + + + + Duration + + + + + Retrives the data in this buffer + + Buffer to receive data + Offset into buffer + + + + Is more data available + If true, ProcessOuput should be called again + + + + + DMO Output Data Buffer Flags + + + + + None + + + + + DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT + + + + + DMO_OUTPUT_DATA_BUFFERF_TIME + + + + + DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH + + + + + DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE + + + + + DMO Process Output Flags + + + + + None + + + + + DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER + + + + + IMediaBuffer Interface + + + + + Set Length + + Length + HRESULT + + + + Get Max Length + + Max Length + HRESULT + + + + Get Buffer and Length + + Pointer to variable into which to write the Buffer Pointer + Pointer to variable into which to write the Valid Data Length + HRESULT + + + + defined in mediaobj.h + + + + + From wmcodecsdp.h + Implements: + - IMediaObject + - IMFTransform (Media foundation - we will leave this for now as there is loads of MF stuff) + - IPropertyStore + - IWMResamplerProps + Can resample PCM or IEEE + + + + + DMO Resampler + + + + + Creates a new Resampler based on the DMO Resampler + + + + + Media Object + + + + + Dispose code - experimental at the moment + Was added trying to track down why Resampler crashes NUnit + This code not currently being called by ResamplerDmoStream + + + + + Soundfont generator + + + + + Gets the generator type + + + + + Generator amount as an unsigned short + + + + + Generator amount as a signed short + + + + + Low byte amount + + + + + High byte amount + + + + + Instrument + + + + + Sample Header + + + + + + + + + + Generator types + + + + Start address offset + + + End address offset + + + Start loop address offset + + + End loop address offset + + + Start address coarse offset + + + Modulation LFO to pitch + + + Vibrato LFO to pitch + + + Modulation envelope to pitch + + + Initial filter cutoff frequency + + + Initial filter Q + + + Modulation LFO to filter Cutoff frequency + + + Modulation envelope to filter cutoff frequency + + + End address coarse offset + + + Modulation LFO to volume + + + Unused + + + Chorus effects send + + + Reverb effects send + + + Pan + + + Unused + + + Unused + + + Unused + + + Delay modulation LFO + + + Frequency modulation LFO + + + Delay vibrato LFO + + + Frequency vibrato LFO + + + Delay modulation envelope + + + Attack modulation envelope + + + Hold modulation envelope + + + Decay modulation envelope + + + Sustain modulation envelop + + + Release modulation envelope + + + Key number to modulation envelope hold + + + Key number to modulation envelope decay + + + Delay volume envelope + + + Attack volume envelope + + + Hold volume envelope + + + Decay volume envelope + + + Sustain volume envelope + + + Release volume envelope + + + Key number to volume envelope hold + + + Key number to volume envelope decay + + + Instrument + + + Reserved + + + Key range + + + Velocity range + + + Start loop address coarse offset + + + Key number + + + Velocity + + + Initial attenuation + + + Reserved + + + End loop address coarse offset + + + Coarse tune + + + Fine tune + + + Sample ID + + + Sample modes + + + Reserved + + + Scale tuning + + + Exclusive class + + + Overriding root key + + + Unused + + + Unused + + + + A soundfont info chunk + + + + + SoundFont Version + + + + + WaveTable sound engine + + + + + Bank name + + + + + Data ROM + + + + + Creation Date + + + + + Author + + + + + Target Product + + + + + Copyright + + + + + Comments + + + + + Tools + + + + + ROM Version + + + + + + + + + + SoundFont instrument + + + + + instrument name + + + + + Zones + + + + + + + + + + Instrument Builder + + + + + Transform Types + + + + + Linear + + + + + Modulator + + + + + Source Modulation data type + + + + + Destination generator type + + + + + Amount + + + + + Source Modulation Amount Type + + + + + Source Transform Type + + + + + + + + + + Controller Sources + + + + + No Controller + + + + + Note On Velocity + + + + + Note On Key Number + + + + + Poly Pressure + + + + + Channel Pressure + + + + + Pitch Wheel + + + + + Pitch Wheel Sensitivity + + + + + Source Types + + + + + Linear + + + + + Concave + + + + + Convex + + + + + Switch + + + + + Modulator Type + + + + + + + + + + + A SoundFont Preset + + + + + Preset name + + + + + Patch Number + + + + + Bank number + + + + + Zones + + + + + + + + + + Class to read the SoundFont file presets chunk + + + + + The Presets contained in this chunk + + + + + The instruments contained in this chunk + + + + + The sample headers contained in this chunk + + + + + + + + + + just reads a chunk ID at the current position + + chunk ID + + + + reads a chunk at the current position + + + + + creates a new riffchunk from current position checking that we're not + at the end of this chunk first + + the new chunk + + + + useful for chunks that just contain a string + + chunk as string + + + + A SoundFont Sample Header + + + + + The sample name + + + + + Start offset + + + + + End offset + + + + + Start loop point + + + + + End loop point + + + + + Sample Rate + + + + + Original pitch + + + + + Pitch correction + + + + + Sample Link + + + + + SoundFont Sample Link Type + + + + + + + + + + SoundFont sample modes + + + + + No loop + + + + + Loop Continuously + + + + + Reserved no loop + + + + + Loop and continue + + + + + Sample Link Type + + + + + Mono Sample + + + + + Right Sample + + + + + Left Sample + + + + + Linked Sample + + + + + ROM Mono Sample + + + + + ROM Right Sample + + + + + ROM Left Sample + + + + + ROM Linked Sample + + + + + SoundFont Version Structure + + + + + Major Version + + + + + Minor Version + + + + + Builds a SoundFont version + + + + + Reads a SoundFont Version structure + + + + + Writes a SoundFont Version structure + + + + + Gets the length of this structure + + + + + Represents a SoundFont + + + + + Loads a SoundFont from a file + + Filename of the SoundFont + + + + Loads a SoundFont from a stream + + stream + + + + The File Info Chunk + + + + + The Presets + + + + + The Instruments + + + + + The Sample Headers + + + + + The Sample Data + + + + + + + + + + base class for structures that can read themselves + + + + + A SoundFont zone + + + + + + + + + + Modulators for this Zone + + + + + Generators for this Zone + + + + + Summary description for Fader. + + + + + Required designer variable. + + + + + Creates a new Fader control + + + + + Clean up any resources being used. + + + + + + + + + + + + + + + + + + + + + + + + + Minimum value of this fader + + + + + Maximum value of this fader + + + + + Current value of this fader + + + + + Fader orientation + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Pan slider control + + + + + Required designer variable. + + + + + True when pan value changed + + + + + Creates a new PanSlider control + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + + The current Pan setting + + + + + Control that represents a potentiometer + TODO list: + Optional Log scale + Optional reverse scale + Keyboard control + Optional bitmap mode + Optional complete draw mode + Tooltip support + + + + + Value changed event + + + + + Creates a new pot control + + + + + Minimum Value of the Pot + + + + + Maximum Value of the Pot + + + + + The current value of the pot + + + + + Draws the control + + + + + Handles the mouse down event to allow changing value by dragging + + + + + Handles the mouse up event to allow changing value by dragging + + + + + Handles the mouse down event to allow changing value by dragging + + + + + 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. + + + + + Implements a rudimentary volume meter + + + + + Basic volume meter + + + + + On Fore Color Changed + + + + + Current Value + + + + + Minimum decibels + + + + + Maximum decibels + + + + + Meter orientation + + + + + Paints the volume meter + + + + + 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. + + + + + VolumeSlider control + + + + + Required designer variable. + + + + + Volume changed event + + + + + Creates a new VolumeSlider control + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + + + + + + + + + + + + + + + + The volume for this control + + + + + Windows Forms control for painting audio waveforms + + + + + Constructs a new instance of the WaveFormPainter class + + + + + On Resize + + + + + On ForeColor Changed + + + + + + Add Max Value + + + + + + On Paint + + + + + 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. + + + + + Control for viewing waveforms + + + + + Required designer variable. + + + + + Creates a new WaveViewer control + + + + + sets the associated wavestream + + + + + The zoom level, in samples per pixel + + + + + Start position (currently in bytes) + + + + + Clean up any resources being used. + + + + + + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Boolean mixer control + + + + + Gets the details for this control + + memory pointer + + + + The current value of the control + + + + + Custom Mixer control + + + + + Get the data for this custom control + + pointer to memory to receive data + + + + List text mixer control + + + + + Get the details for this control + + Memory location to read to + + + Represents a Windows mixer device + + + The number of mixer devices available + + + Connects to the specified mixer + The index of the mixer to use. + This should be between zero and NumberOfDevices - 1 + + + The number of destinations this mixer supports + + + The name of this mixer device + + + The manufacturer code for this mixer device + + + The product identifier code for this mixer device + + + Retrieve the specified MixerDestination object + The ID of the destination to use. + Should be between 0 and DestinationCount - 1 + + + + A way to enumerate the destinations + + + + + A way to enumerate all available devices + + + + + Represents a mixer control + + + + + Mixer Handle + + + + + Number of Channels + + + + + Mixer Handle Type + + + + + Gets all the mixer controls + + Mixer Handle + Mixer Line + Mixer Handle Type + + + + + Gets a specified Mixer Control + + Mixer Handle + Line ID + Control ID + Number of Channels + Flags to use (indicates the meaning of mixerHandle) + + + + + Gets the control details + + + + + Gets the control details + + + + + + Mixer control name + + + + + Mixer control type + + + + + Returns true if this is a boolean control + + Control type + + + + Is this a boolean control + + + + + Determines whether a specified mixer control type is a list text control + + + + + True if this is a list text control + + + + + True if this is a signed control + + + + + True if this is an unsigned control + + + + + True if this is a custom control + + + + + String representation for debug purposes + + + + + Mixer control types + + + + Custom + + + Boolean meter + + + Signed meter + + + Peak meter + + + Unsigned meter + + + Boolean + + + On Off + + + Mute + + + Mono + + + Loudness + + + Stereo Enhance + + + Button + + + Decibels + + + Signed + + + Unsigned + + + Percent + + + Slider + + + Pan + + + Q-sound pan + + + Fader + + + Volume + + + Bass + + + Treble + + + Equaliser + + + Single Select + + + Mux + + + Multiple select + + + Mixer + + + Micro time + + + Milli time + + + + Represents a mixer line (source or destination) + + + + + Creates a new mixer destination + + Mixer Handle + Destination Index + Mixer Handle Type + + + + Creates a new Mixer Source For a Specified Source + + Mixer Handle + Destination Index + Source Index + Flag indicating the meaning of mixerHandle + + + + Creates a new Mixer Source + + Wave In Device + + + + Mixer Line Name + + + + + Mixer Line short name + + + + + The line ID + + + + + Component Type + + + + + Mixer destination type description + + + + + Number of channels + + + + + Number of sources + + + + + Number of controls + + + + + Is this destination active + + + + + Is this destination disconnected + + + + + Is this destination a source + + + + + Gets the specified source + + + + + Enumerator for the controls on this Mixer Limne + + + + + Enumerator for the sources on this Mixer Line + + + + + The name of the target output device + + + + + Describes this Mixer Line (for diagnostic purposes) + + + + + Mixer Interop Flags + + + + + MIXER_OBJECTF_HANDLE = 0x80000000; + + + + + MIXER_OBJECTF_MIXER = 0x00000000; + + + + + MIXER_OBJECTF_HMIXER + + + + + MIXER_OBJECTF_WAVEOUT + + + + + MIXER_OBJECTF_HWAVEOUT + + + + + MIXER_OBJECTF_WAVEIN + + + + + MIXER_OBJECTF_HWAVEIN + + + + + MIXER_OBJECTF_MIDIOUT + + + + + MIXER_OBJECTF_HMIDIOUT + + + + + MIXER_OBJECTF_MIDIIN + + + + + MIXER_OBJECTF_HMIDIIN + + + + + MIXER_OBJECTF_AUX + + + + + MIXER_GETCONTROLDETAILSF_VALUE = 0x00000000; + MIXER_SETCONTROLDETAILSF_VALUE = 0x00000000; + + + + + MIXER_GETCONTROLDETAILSF_LISTTEXT = 0x00000001; + MIXER_SETCONTROLDETAILSF_LISTTEXT = 0x00000001; + + + + + MIXER_GETCONTROLDETAILSF_QUERYMASK = 0x0000000F; + MIXER_SETCONTROLDETAILSF_QUERYMASK = 0x0000000F; + MIXER_GETLINECONTROLSF_QUERYMASK = 0x0000000F; + + + + + MIXER_GETLINECONTROLSF_ALL = 0x00000000; + + + + + MIXER_GETLINECONTROLSF_ONEBYID = 0x00000001; + + + + + MIXER_GETLINECONTROLSF_ONEBYTYPE = 0x00000002; + + + + + MIXER_GETLINEINFOF_DESTINATION = 0x00000000; + + + + + MIXER_GETLINEINFOF_SOURCE = 0x00000001; + + + + + MIXER_GETLINEINFOF_LINEID = 0x00000002; + + + + + MIXER_GETLINEINFOF_COMPONENTTYPE = 0x00000003; + + + + + MIXER_GETLINEINFOF_TARGETTYPE = 0x00000004; + + + + + MIXER_GETLINEINFOF_QUERYMASK = 0x0000000F; + + + + + Mixer Line Flags + + + + + Audio line is active. An active line indicates that a signal is probably passing + through the line. + + + + + Audio line is disconnected. A disconnected line's associated controls can still be + modified, but the changes have no effect until the line is connected. + + + + + Audio line is an audio source line associated with a single audio destination line. + If this flag is not set, this line is an audio destination line associated with zero + or more audio source lines. + + + + + BOUNDS structure + + + + + dwMinimum / lMinimum / reserved 0 + + + + + dwMaximum / lMaximum / reserved 1 + + + + + reserved 2 + + + + + reserved 3 + + + + + reserved 4 + + + + + reserved 5 + + + + + METRICS structure + + + + + cSteps / reserved[0] + + + + + cbCustomData / reserved[1], number of bytes for control details + + + + + reserved 2 + + + + + reserved 3 + + + + + reserved 4 + + + + + reserved 5 + + + + + MIXERCONTROL struct + http://msdn.microsoft.com/en-us/library/dd757293%28VS.85%29.aspx + + + + + Mixer Line Component type enumeration + + + + + Audio line is a destination that cannot be defined by one of the standard component types. A mixer device is required to use this component type for line component types that have not been defined by Microsoft Corporation. + MIXERLINE_COMPONENTTYPE_DST_UNDEFINED + + + + + Audio line is a digital destination (for example, digital input to a DAT or CD audio device). + MIXERLINE_COMPONENTTYPE_DST_DIGITAL + + + + + Audio line is a line level destination (for example, line level input from a CD audio device) that will be the final recording source for the analog-to-digital converter (ADC). Because most audio cards for personal computers provide some sort of gain for the recording audio source line, the mixer device will use the MIXERLINE_COMPONENTTYPE_DST_WAVEIN type. + MIXERLINE_COMPONENTTYPE_DST_LINE + + + + + Audio line is a destination used for a monitor. + MIXERLINE_COMPONENTTYPE_DST_MONITOR + + + + + Audio line is an adjustable (gain and/or attenuation) destination intended to drive speakers. This is the typical component type for the audio output of audio cards for personal computers. + MIXERLINE_COMPONENTTYPE_DST_SPEAKERS + + + + + Audio line is an adjustable (gain and/or attenuation) destination intended to drive headphones. Most audio cards use the same audio destination line for speakers and headphones, in which case the mixer device simply uses the MIXERLINE_COMPONENTTYPE_DST_SPEAKERS type. + MIXERLINE_COMPONENTTYPE_DST_HEADPHONES + + + + + Audio line is a destination that will be routed to a telephone line. + MIXERLINE_COMPONENTTYPE_DST_TELEPHONE + + + + + Audio line is a destination that will be the final recording source for the waveform-audio input (ADC). This line typically provides some sort of gain or attenuation. This is the typical component type for the recording line of most audio cards for personal computers. + MIXERLINE_COMPONENTTYPE_DST_WAVEIN + + + + + Audio line is a destination that will be the final recording source for voice input. This component type is exactly like MIXERLINE_COMPONENTTYPE_DST_WAVEIN but is intended specifically for settings used during voice recording/recognition. Support for this line is optional for a mixer device. Many mixer devices provide only MIXERLINE_COMPONENTTYPE_DST_WAVEIN. + MIXERLINE_COMPONENTTYPE_DST_VOICEIN + + + + + Audio line is a source that cannot be defined by one of the standard component types. A mixer device is required to use this component type for line component types that have not been defined by Microsoft Corporation. + MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED + + + + + Audio line is a digital source (for example, digital output from a DAT or audio CD). + MIXERLINE_COMPONENTTYPE_SRC_DIGITAL + + + + + Audio line is a line-level source (for example, line-level input from an external stereo) that can be used as an optional recording source. Because most audio cards for personal computers provide some sort of gain for the recording source line, the mixer device will use the MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY type. + MIXERLINE_COMPONENTTYPE_SRC_LINE + + + + + Audio line is a microphone recording source. Most audio cards for personal computers provide at least two types of recording sources: an auxiliary audio line and microphone input. A microphone audio line typically provides some sort of gain. Audio cards that use a single input for use with a microphone or auxiliary audio line should use the MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE component type. + MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE + + + + + Audio line is a source originating from the output of an internal synthesizer. Most audio cards for personal computers provide some sort of MIDI synthesizer (for example, an Adlib®-compatible or OPL/3 FM synthesizer). + MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER + + + + + Audio line is a source originating from the output of an internal audio CD. This component type is provided for audio cards that provide an audio source line intended to be connected to an audio CD (or CD-ROM playing an audio CD). + MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC + + + + + Audio line is a source originating from an incoming telephone line. + MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE + + + + + Audio line is a source originating from personal computer speaker. Several audio cards for personal computers provide the ability to mix what would typically be played on the internal speaker with the output of an audio card. Some audio cards support the ability to use this output as a recording source. + MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER + + + + + Audio line is a source originating from the waveform-audio output digital-to-analog converter (DAC). Most audio cards for personal computers provide this component type as a source to the MIXERLINE_COMPONENTTYPE_DST_SPEAKERS destination. Some cards also allow this source to be routed to the MIXERLINE_COMPONENTTYPE_DST_WAVEIN destination. + MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT + + + + + Audio line is a source originating from the auxiliary audio line. This line type is intended as a source with gain or attenuation that can be routed to the MIXERLINE_COMPONENTTYPE_DST_SPEAKERS destination and/or recorded from the MIXERLINE_COMPONENTTYPE_DST_WAVEIN destination. + MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY + + + + + Audio line is an analog source (for example, analog output from a video-cassette tape). + MIXERLINE_COMPONENTTYPE_SRC_ANALOG + + + + + Represents a signed mixer control + + + + + Gets details for this contrl + + + + + The value of the control + + + + + Minimum value for this control + + + + + Maximum value for this control + + + + + Value of the control represented as a percentage + + + + + String Representation for debugging purposes + + + + + + Represents an unsigned mixer control + + + + + Gets the details for this control + + + + + The control value + + + + + The control's minimum value + + + + + The control's maximum value + + + + + Value of the control represented as a percentage + + + + + String Representation for debugging purposes + + + + + Manufacturer codes from mmreg.h + + + + Microsoft Corporation + + + Creative Labs, Inc + + + Media Vision, Inc. + + + Fujitsu Corp. + + + Artisoft, Inc. + + + Turtle Beach, Inc. + + + IBM Corporation + + + Vocaltec LTD. + + + Roland + + + DSP Solutions, Inc. + + + NEC + + + ATI + + + Wang Laboratories, Inc + + + Tandy Corporation + + + Voyetra + + + Antex Electronics Corporation + + + ICL Personal Systems + + + Intel Corporation + + + Advanced Gravis + + + Video Associates Labs, Inc. + + + InterActive Inc + + + Yamaha Corporation of America + + + Everex Systems, Inc + + + Echo Speech Corporation + + + Sierra Semiconductor Corp + + + Computer Aided Technologies + + + APPS Software International + + + DSP Group, Inc + + + microEngineering Labs + + + Computer Friends, Inc. + + + ESS Technology + + + Audio, Inc. + + + Motorola, Inc. + + + Canopus, co., Ltd. + + + Seiko Epson Corporation + + + Truevision + + + Aztech Labs, Inc. + + + Videologic + + + SCALACS + + + Korg Inc. + + + Audio Processing Technology + + + Integrated Circuit Systems, Inc. + + + Iterated Systems, Inc. + + + Metheus + + + Logitech, Inc. + + + Winnov, Inc. + + + NCR Corporation + + + EXAN + + + AST Research Inc. + + + Willow Pond Corporation + + + Sonic Foundry + + + Vitec Multimedia + + + MOSCOM Corporation + + + Silicon Soft, Inc. + + + Supermac + + + Audio Processing Technology + + + Speech Compression + + + Ahead, Inc. + + + Dolby Laboratories + + + OKI + + + AuraVision Corporation + + + Ing C. Olivetti & C., S.p.A. + + + I/O Magic Corporation + + + Matsushita Electric Industrial Co., LTD. + + + Control Resources Limited + + + Xebec Multimedia Solutions Limited + + + New Media Corporation + + + Natural MicroSystems + + + Lyrrus Inc. + + + Compusic + + + OPTi Computers Inc. + + + Adlib Accessories Inc. + + + Compaq Computer Corp. + + + Dialogic Corporation + + + InSoft, Inc. + + + M.P. Technologies, Inc. + + + Weitek + + + Lernout & Hauspie + + + Quanta Computer Inc. + + + Apple Computer, Inc. + + + Digital Equipment Corporation + + + Mark of the Unicorn + + + Workbit Corporation + + + Ositech Communications Inc. + + + miro Computer Products AG + + + Cirrus Logic + + + ISOLUTION B.V. + + + Horizons Technology, Inc + + + Computer Concepts Ltd + + + Voice Technologies Group, Inc. + + + Radius + + + Rockwell International + + + Co. XYZ for testing + + + Opcode Systems + + + Voxware Inc + + + Northern Telecom Limited + + + APICOM + + + Grande Software + + + ADDX + + + Wildcat Canyon Software + + + Rhetorex Inc + + + Brooktree Corporation + + + ENSONIQ Corporation + + + FAST Multimedia AG + + + NVidia Corporation + + + OKSORI Co., Ltd. + + + DiAcoustics, Inc. + + + Gulbransen, Inc. + + + Kay Elemetrics, Inc. + + + Crystal Semiconductor Corporation + + + Splash Studios + + + Quarterdeck Corporation + + + TDK Corporation + + + Digital Audio Labs, Inc. + + + Seer Systems, Inc. + + + PictureTel Corporation + + + AT&T Microelectronics + + + Osprey Technologies, Inc. + + + Mediatrix Peripherals + + + SounDesignS M.C.S. Ltd. + + + A.L. Digital Ltd. + + + Spectrum Signal Processing, Inc. + + + Electronic Courseware Systems, Inc. + + + AMD + + + Core Dynamics + + + CANAM Computers + + + Softsound, Ltd. + + + Norris Communications, Inc. + + + Danka Data Devices + + + EuPhonics + + + Precept Software, Inc. + + + Crystal Net Corporation + + + Chromatic Research, Inc + + + Voice Information Systems, Inc + + + Vienna Systems + + + Connectix Corporation + + + Gadget Labs LLC + + + Frontier Design Group LLC + + + Viona Development GmbH + + + Casio Computer Co., LTD + + + Diamond Multimedia + + + S3 + + + Fraunhofer + + + + Summary description for MmException. + + + + + Creates a new MmException + + The result returned by the Windows API call + The name of the Windows API that failed + + + + Helper function to automatically raise an exception on failure + + The result of the API call + The API function name + + + + Returns the Windows API result + + + + + Windows multimedia error codes from mmsystem.h. + + + + no error, MMSYSERR_NOERROR + + + unspecified error, MMSYSERR_ERROR + + + device ID out of range, MMSYSERR_BADDEVICEID + + + driver failed enable, MMSYSERR_NOTENABLED + + + device already allocated, MMSYSERR_ALLOCATED + + + device handle is invalid, MMSYSERR_INVALHANDLE + + + no device driver present, MMSYSERR_NODRIVER + + + memory allocation error, MMSYSERR_NOMEM + + + function isn't supported, MMSYSERR_NOTSUPPORTED + + + error value out of range, MMSYSERR_BADERRNUM + + + invalid flag passed, MMSYSERR_INVALFLAG + + + invalid parameter passed, MMSYSERR_INVALPARAM + + + handle being used simultaneously on another thread (eg callback),MMSYSERR_HANDLEBUSY + + + specified alias not found, MMSYSERR_INVALIDALIAS + + + bad registry database, MMSYSERR_BADDB + + + registry key not found, MMSYSERR_KEYNOTFOUND + + + registry read error, MMSYSERR_READERROR + + + registry write error, MMSYSERR_WRITEERROR + + + registry delete error, MMSYSERR_DELETEERROR + + + registry value not found, MMSYSERR_VALNOTFOUND + + + driver does not call DriverCallback, MMSYSERR_NODRIVERCB + + + more data to be returned, MMSYSERR_MOREDATA + + + unsupported wave format, WAVERR_BADFORMAT + + + still something playing, WAVERR_STILLPLAYING + + + header not prepared, WAVERR_UNPREPARED + + + device is synchronous, WAVERR_SYNC + + + Conversion not possible (ACMERR_NOTPOSSIBLE) + + + Busy (ACMERR_BUSY) + + + Header Unprepared (ACMERR_UNPREPARED) + + + Cancelled (ACMERR_CANCELED) + + + invalid line (MIXERR_INVALLINE) + + + invalid control (MIXERR_INVALCONTROL) + + + invalid value (MIXERR_INVALVALUE) + + + diff --git a/Bin/Debug/MyTimeClock/RyLine.exe b/Bin/Debug/MyTimeClock/RyLine.exe new file mode 100644 index 0000000..16bd546 Binary files /dev/null and b/Bin/Debug/MyTimeClock/RyLine.exe differ diff --git a/Bin/Debug/MyTimeClock/RyWeb.dll b/Bin/Debug/MyTimeClock/RyWeb.dll new file mode 100644 index 0000000..1dd4e14 Binary files /dev/null and b/Bin/Debug/MyTimeClock/RyWeb.dll differ diff --git a/Bin/Debug/MyTimeClock/SysDb/Holidays.dat b/Bin/Debug/MyTimeClock/SysDb/Holidays.dat new file mode 100644 index 0000000..aab2a81 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/Holidays.dat differ diff --git a/Bin/Debug/MyTimeClock/SysDb/Holidays/2019.ini b/Bin/Debug/MyTimeClock/SysDb/Holidays/2019.ini new file mode 100644 index 0000000..412ad97 --- /dev/null +++ b/Bin/Debug/MyTimeClock/SysDb/Holidays/2019.ini @@ -0,0 +1,31 @@ +[date] +0101=1 +0202=-1 +0203=-1 +0204=1 +0205=1 +0206=1 +0207=1 +0208=1 +0209=1 +0210=1 +0211=1 +0405=1 +0406=1 +0407=1 +0501=1 +0607=1 +0608=1 +0609=1 +0913=1 +0914=1 +0915=1 +0929=-1 +1001=1 +1002=1 +1003=1 +1004=1 +1005=1 +1006=1 +1007=1 +1012=-1 \ No newline at end of file diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/0.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/0.wav new file mode 100644 index 0000000..be4f0cb Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/0.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/1.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/1.wav new file mode 100644 index 0000000..faf8bdb Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/1.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/10.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/10.wav new file mode 100644 index 0000000..33d1589 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/10.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/2.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/2.wav new file mode 100644 index 0000000..87898f3 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/2.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/3.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/3.wav new file mode 100644 index 0000000..354a26d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/3.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/4.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/4.wav new file mode 100644 index 0000000..f56c4ee Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/4.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/5.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/5.wav new file mode 100644 index 0000000..b35596c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/5.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/6.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/6.wav new file mode 100644 index 0000000..cb4b14e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/6.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/7.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/7.wav new file mode 100644 index 0000000..9baaafc Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/7.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/8.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/8.wav new file mode 100644 index 0000000..82d8b26 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/8.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/9.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/9.wav new file mode 100644 index 0000000..20722db Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/9.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/Point.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/Point.wav new file mode 100644 index 0000000..1e82a99 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/Point.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/am.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/am.wav new file mode 100644 index 0000000..275005c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/am.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/dm.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/dm.wav new file mode 100644 index 0000000..cde06b9 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/dm.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/em.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/em.wav new file mode 100644 index 0000000..041ed0f Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/em.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/m.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/m.wav new file mode 100644 index 0000000..acccd5c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/m.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/now.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/now.wav new file mode 100644 index 0000000..80d5d3b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/now.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/pm.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/pm.wav new file mode 100644 index 0000000..746c9d0 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/pm.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/z.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/z.wav new file mode 100644 index 0000000..8d0c515 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/12hours/z.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/0.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/0.wav new file mode 100644 index 0000000..de7bd60 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/0.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/1.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/1.wav new file mode 100644 index 0000000..372f086 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/1.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/10.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/10.wav new file mode 100644 index 0000000..beae1e9 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/10.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/2.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/2.wav new file mode 100644 index 0000000..66af5c5 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/2.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/3.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/3.wav new file mode 100644 index 0000000..173458d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/3.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/4.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/4.wav new file mode 100644 index 0000000..07e3cd8 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/4.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/5.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/5.wav new file mode 100644 index 0000000..e3ce8b3 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/5.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/6.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/6.wav new file mode 100644 index 0000000..1fcf2e7 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/6.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/7.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/7.wav new file mode 100644 index 0000000..c8a8371 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/7.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/8.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/8.wav new file mode 100644 index 0000000..09ab009 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/8.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/9.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/9.wav new file mode 100644 index 0000000..3466c1f Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/9.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/Point.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/Point.wav new file mode 100644 index 0000000..80b1082 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/Point.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/m.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/m.wav new file mode 100644 index 0000000..63b7ca5 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/m.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/now.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/now.wav new file mode 100644 index 0000000..3c2727b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/now.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/z.wav b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/z.wav new file mode 100644 index 0000000..b4d3d80 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/24hours/z.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/00.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/00.mp3 new file mode 100644 index 0000000..210fa58 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/00.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/01.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/01.mp3 new file mode 100644 index 0000000..41a6c09 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/01.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/04.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/04.mp3 new file mode 100644 index 0000000..44df2fb Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/04.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/06.mp3 new file mode 100644 index 0000000..7b14ac7 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/07.mp3 new file mode 100644 index 0000000..0d9b8e9 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/08.mp3 new file mode 100644 index 0000000..70ea0de Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/09.mp3 new file mode 100644 index 0000000..53ab08c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/13.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/13.mp3 new file mode 100644 index 0000000..1c72d1c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/13.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/14.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/14.mp3 new file mode 100644 index 0000000..e8defb4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/14.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/15.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/15.mp3 new file mode 100644 index 0000000..ccda1b3 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/15.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/16.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/16.mp3 new file mode 100644 index 0000000..4ad53ad Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/16.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/17.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/17.mp3 new file mode 100644 index 0000000..f9d7069 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/17.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/18.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/18.mp3 new file mode 100644 index 0000000..b14124b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/18.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/22.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/22.mp3 new file mode 100644 index 0000000..1fd050e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/22.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/23.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/23.mp3 new file mode 100644 index 0000000..3135b4e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star/23.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/05.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/05.mp3 new file mode 100644 index 0000000..e21a0d5 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/05.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/07.mp3 new file mode 100644 index 0000000..84ddd45 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/08.mp3 new file mode 100644 index 0000000..925c017 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/09.mp3 new file mode 100644 index 0000000..97314ca Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/17.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/17.mp3 new file mode 100644 index 0000000..5074a76 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/17.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/20.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/20.mp3 new file mode 100644 index 0000000..0eb1443 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/20.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/21.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/21.mp3 new file mode 100644 index 0000000..2624cc6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/21.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/22.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/22.mp3 new file mode 100644 index 0000000..7d3c2be Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/star2/22.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/00.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/00.mp3 new file mode 100644 index 0000000..268d44b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/00.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/01.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/01.mp3 new file mode 100644 index 0000000..b541ab4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/01.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/06.mp3 new file mode 100644 index 0000000..6627ab0 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/07.mp3 new file mode 100644 index 0000000..6ace32a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/08.mp3 new file mode 100644 index 0000000..2f29846 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/09.mp3 new file mode 100644 index 0000000..3387d76 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/10.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/10.mp3 new file mode 100644 index 0000000..956fbf1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/10.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/11.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/11.mp3 new file mode 100644 index 0000000..abebe37 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/11.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/12.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/12.mp3 new file mode 100644 index 0000000..598b313 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/12.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/13.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/13.mp3 new file mode 100644 index 0000000..4b44aae Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/13.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/14.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/14.mp3 new file mode 100644 index 0000000..68df916 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/14.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/15.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/15.mp3 new file mode 100644 index 0000000..7ef034a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/15.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/16.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/16.mp3 new file mode 100644 index 0000000..0d5a29e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/16.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/17.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/17.mp3 new file mode 100644 index 0000000..a1c434a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/17.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/18.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/18.mp3 new file mode 100644 index 0000000..7491cd0 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/18.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/19.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/19.mp3 new file mode 100644 index 0000000..35f3a4c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/19.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/20.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/20.mp3 new file mode 100644 index 0000000..5fca1b2 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/20.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/21.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/21.mp3 new file mode 100644 index 0000000..d719179 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/21.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/22.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/22.mp3 new file mode 100644 index 0000000..0b21680 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/22.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/23.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/23.mp3 new file mode 100644 index 0000000..e0c1dc0 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/yzs/23.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/06.mp3 new file mode 100644 index 0000000..5007d75 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/07.mp3 new file mode 100644 index 0000000..54f6b79 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/08.mp3 new file mode 100644 index 0000000..cdca1bb Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/09.mp3 new file mode 100644 index 0000000..f0906db Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/12.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/12.mp3 new file mode 100644 index 0000000..913d671 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/12.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/13.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/13.mp3 new file mode 100644 index 0000000..4f345a5 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/13.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/14.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/14.mp3 new file mode 100644 index 0000000..a1d9891 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/14.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/15.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/15.mp3 new file mode 100644 index 0000000..d62424e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/15.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/16.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/16.mp3 new file mode 100644 index 0000000..54af7f9 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/16.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/17.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/17.mp3 new file mode 100644 index 0000000..698721d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/17.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/18.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/18.mp3 new file mode 100644 index 0000000..99810c0 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/18.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/19.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/19.mp3 new file mode 100644 index 0000000..d70fa16 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/19.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/20.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/20.mp3 new file mode 100644 index 0000000..c3eefe0 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/20.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/23.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/23.mp3 new file mode 100644 index 0000000..723875f Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/五月天/23.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/00.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/00.mp3 new file mode 100644 index 0000000..a61882a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/00.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/01.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/01.mp3 new file mode 100644 index 0000000..4241f26 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/01.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/02.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/02.mp3 new file mode 100644 index 0000000..7ce8d62 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/02.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/03.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/03.mp3 new file mode 100644 index 0000000..d976971 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/03.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/04.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/04.mp3 new file mode 100644 index 0000000..ccbc4f0 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/04.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/05.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/05.mp3 new file mode 100644 index 0000000..e91eb63 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/05.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/06.mp3 new file mode 100644 index 0000000..4695311 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/07.mp3 new file mode 100644 index 0000000..5ca7f30 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/08.mp3 new file mode 100644 index 0000000..2ac487b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/09.mp3 new file mode 100644 index 0000000..dabbd28 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/11.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/11.mp3 new file mode 100644 index 0000000..1a46acb Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/11.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/12.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/12.mp3 new file mode 100644 index 0000000..1969b30 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/12.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/13.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/13.mp3 new file mode 100644 index 0000000..4625288 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/13.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/14.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/14.mp3 new file mode 100644 index 0000000..026c2a1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/14.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/15.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/15.mp3 new file mode 100644 index 0000000..c5c2774 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/15.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/16.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/16.mp3 new file mode 100644 index 0000000..26af8be Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/16.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/17.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/17.mp3 new file mode 100644 index 0000000..6f3f3c4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/17.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/18.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/18.mp3 new file mode 100644 index 0000000..9d2e02e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/18.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/19.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/19.mp3 new file mode 100644 index 0000000..cd3a2a1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/19.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/20.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/20.mp3 new file mode 100644 index 0000000..aacedf1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/20.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/21.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/21.mp3 new file mode 100644 index 0000000..9c83e91 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/21.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/22.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/22.mp3 new file mode 100644 index 0000000..908662e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/22.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/23.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/23.mp3 new file mode 100644 index 0000000..4996059 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张靓颖/23.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/00.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/00.mp3 new file mode 100644 index 0000000..e90ed3d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/00.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/01.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/01.mp3 new file mode 100644 index 0000000..e0d64ce Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/01.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/02.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/02.mp3 new file mode 100644 index 0000000..ab60751 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/02.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/03.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/03.mp3 new file mode 100644 index 0000000..d88e13e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/03.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/04.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/04.mp3 new file mode 100644 index 0000000..ae00f54 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/04.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/05.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/05.mp3 new file mode 100644 index 0000000..a499c28 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/05.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/06.mp3 new file mode 100644 index 0000000..9a8f0d4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/07.mp3 new file mode 100644 index 0000000..e49fc5d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/08.mp3 new file mode 100644 index 0000000..7294d53 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/09.mp3 new file mode 100644 index 0000000..6717287 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/10.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/10.mp3 new file mode 100644 index 0000000..b6e0a87 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/10.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/11.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/11.mp3 new file mode 100644 index 0000000..b40f4b1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/11.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/12.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/12.mp3 new file mode 100644 index 0000000..b822d97 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/12.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/13.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/13.mp3 new file mode 100644 index 0000000..216efc6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/13.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/14.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/14.mp3 new file mode 100644 index 0000000..5574b65 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/14.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/15.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/15.mp3 new file mode 100644 index 0000000..03a2a64 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/15.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/16.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/16.mp3 new file mode 100644 index 0000000..5a51979 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/16.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/17.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/17.mp3 new file mode 100644 index 0000000..30dc4d6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/17.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/18.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/18.mp3 new file mode 100644 index 0000000..69577d8 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/18.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/19.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/19.mp3 new file mode 100644 index 0000000..97eae46 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/19.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/20.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/20.mp3 new file mode 100644 index 0000000..9ba2cc6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/20.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/21.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/21.mp3 new file mode 100644 index 0000000..d5bc97b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/21.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/22.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/22.mp3 new file mode 100644 index 0000000..861e8a8 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/22.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/23.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/23.mp3 new file mode 100644 index 0000000..d58636e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/张韶涵/23.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/06.mp3 new file mode 100644 index 0000000..85887d8 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/07.mp3 new file mode 100644 index 0000000..efb56a4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/08.mp3 new file mode 100644 index 0000000..cf6a3bf Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/09.mp3 new file mode 100644 index 0000000..1c6c4d4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/10.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/10.mp3 new file mode 100644 index 0000000..f711f65 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/10.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/11.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/11.mp3 new file mode 100644 index 0000000..7c7212b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/11.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/12.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/12.mp3 new file mode 100644 index 0000000..4ab5da4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/12.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/13.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/13.mp3 new file mode 100644 index 0000000..02963bf Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/13.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/14.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/14.mp3 new file mode 100644 index 0000000..868fbe7 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/14.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/15.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/15.mp3 new file mode 100644 index 0000000..6903123 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/15.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/16.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/16.mp3 new file mode 100644 index 0000000..acb219a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/16.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/17.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/17.mp3 new file mode 100644 index 0000000..c1c621f Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/17.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/18.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/18.mp3 new file mode 100644 index 0000000..4890024 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/18.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/19.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/19.mp3 new file mode 100644 index 0000000..cb4436d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/19.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/20.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/20.mp3 new file mode 100644 index 0000000..c4ae2e3 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/20.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/21.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/21.mp3 new file mode 100644 index 0000000..b502d67 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/21.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/22.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/22.mp3 new file mode 100644 index 0000000..a66f961 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/22.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/23.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/23.mp3 new file mode 100644 index 0000000..974ff2f Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/23.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/24.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/24.mp3 new file mode 100644 index 0000000..534e5e4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/王菲/24.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/06.mp3 new file mode 100644 index 0000000..b343857 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/08.mp3 new file mode 100644 index 0000000..7b963ff Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/10.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/10.mp3 new file mode 100644 index 0000000..451b574 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/10.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/12.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/12.mp3 new file mode 100644 index 0000000..504b3c3 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/12.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/14.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/14.mp3 new file mode 100644 index 0000000..a25fe5c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/14.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/16.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/16.mp3 new file mode 100644 index 0000000..3d18613 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/16.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/18.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/18.mp3 new file mode 100644 index 0000000..e8f48cb Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/18.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/19.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/19.mp3 new file mode 100644 index 0000000..8e9a49d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/19.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/22.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/22.mp3 new file mode 100644 index 0000000..c4394b1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/田馥甄/22.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/02.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/02.mp3 new file mode 100644 index 0000000..ff66657 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/02.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/03.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/03.mp3 new file mode 100644 index 0000000..d95ecc9 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/03.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/04.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/04.mp3 new file mode 100644 index 0000000..390e3ad Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/04.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/05.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/05.mp3 new file mode 100644 index 0000000..9551abc Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/05.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/06.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/06.mp3 new file mode 100644 index 0000000..89021ba Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/06.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/07.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/07.mp3 new file mode 100644 index 0000000..53b7b12 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/07.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/08.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/08.mp3 new file mode 100644 index 0000000..c480fb6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/08.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/09.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/09.mp3 new file mode 100644 index 0000000..00ed2d6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/09.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/10.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/10.mp3 new file mode 100644 index 0000000..1e9a69f Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/10.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/11.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/11.mp3 new file mode 100644 index 0000000..2782153 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/11.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/12.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/12.mp3 new file mode 100644 index 0000000..74aa030 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/谢霆锋/12.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/00.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/00.MP3 new file mode 100644 index 0000000..7b64bb2 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/00.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/01.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/01.MP3 new file mode 100644 index 0000000..e30d7c6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/01.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/02.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/02.MP3 new file mode 100644 index 0000000..e5b6864 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/02.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/03.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/03.MP3 new file mode 100644 index 0000000..5946f1c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/03.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/04.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/04.MP3 new file mode 100644 index 0000000..b75e3b6 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/04.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/05.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/05.MP3 new file mode 100644 index 0000000..ed49c9e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/05.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/06.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/06.MP3 new file mode 100644 index 0000000..fb5681a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/06.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/07.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/07.MP3 new file mode 100644 index 0000000..def1dbe Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/07.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/08.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/08.MP3 new file mode 100644 index 0000000..52c8454 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/08.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/09.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/09.MP3 new file mode 100644 index 0000000..1bd1472 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/09.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/10.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/10.MP3 new file mode 100644 index 0000000..7202d4d Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/10.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/11.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/11.MP3 new file mode 100644 index 0000000..e2c23dd Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/11.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/12.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/12.MP3 new file mode 100644 index 0000000..3af329a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/12.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/13.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/13.MP3 new file mode 100644 index 0000000..f4b29ea Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/13.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/14.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/14.MP3 new file mode 100644 index 0000000..fa4407f Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/14.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/15.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/15.MP3 new file mode 100644 index 0000000..6ee1886 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/15.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/16.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/16.MP3 new file mode 100644 index 0000000..aca9d85 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/16.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/17.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/17.MP3 new file mode 100644 index 0000000..4d5ed7a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/17.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/18.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/18.MP3 new file mode 100644 index 0000000..4759b95 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/18.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/19.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/19.MP3 new file mode 100644 index 0000000..08a1c24 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/19.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/20.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/20.MP3 new file mode 100644 index 0000000..dce9f7a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/20.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/21.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/21.MP3 new file mode 100644 index 0000000..860fab3 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/21.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/22.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/22.MP3 new file mode 100644 index 0000000..8de3de9 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/22.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/23.MP3 b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/23.MP3 new file mode 100644 index 0000000..868e4ae Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/Hours/陈绮贞/23.MP3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/buy.gif b/Bin/Debug/MyTimeClock/SysDb/animation/buy.gif new file mode 100644 index 0000000..f3f7288 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/buy.gif differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/eat01.gif b/Bin/Debug/MyTimeClock/SysDb/animation/eat01.gif new file mode 100644 index 0000000..bf4de31 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/eat01.gif differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/gif.db b/Bin/Debug/MyTimeClock/SysDb/animation/gif.db new file mode 100644 index 0000000..ff4d87b --- /dev/null +++ b/Bin/Debug/MyTimeClock/SysDb/animation/gif.db @@ -0,0 +1,7 @@ +红包|hongbao.gif +抢|qianggou.gif +买|buy.gif +休息|xiuxi.gif +运动|sport.gif +吃|eat01.gif +饭|eat01.gif \ No newline at end of file diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/hongbao.gif b/Bin/Debug/MyTimeClock/SysDb/animation/hongbao.gif new file mode 100644 index 0000000..fc86669 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/hongbao.gif differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/qianggou.gif b/Bin/Debug/MyTimeClock/SysDb/animation/qianggou.gif new file mode 100644 index 0000000..857380e Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/qianggou.gif differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/您有新的提醒.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/sound/您有新的提醒.mp3 new file mode 100644 index 0000000..09cf06b Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/您有新的提醒.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/生日快乐.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/sound/生日快乐.mp3 new file mode 100644 index 0000000..52e0658 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/生日快乐.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/答题.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/sound/答题.mp3 new file mode 100644 index 0000000..7998b5c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/答题.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/红包来啦.wav b/Bin/Debug/MyTimeClock/SysDb/animation/sound/红包来啦.wav new file mode 100644 index 0000000..b510921 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/红包来啦.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/红包雨来啦.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/sound/红包雨来啦.mp3 new file mode 100644 index 0000000..8d2578a Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/红包雨来啦.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/账单到期啦.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/sound/账单到期啦.mp3 new file mode 100644 index 0000000..d7fef15 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/账单到期啦.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/门票.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/sound/门票.mp3 new file mode 100644 index 0000000..740f201 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/门票.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound/默认提醒.wav b/Bin/Debug/MyTimeClock/SysDb/animation/sound/默认提醒.wav new file mode 100644 index 0000000..c9cdbfa Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound/默认提醒.wav differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sound_tip/before_rest.mp3 b/Bin/Debug/MyTimeClock/SysDb/animation/sound_tip/before_rest.mp3 new file mode 100644 index 0000000..a70c075 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sound_tip/before_rest.mp3 differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/sport.gif b/Bin/Debug/MyTimeClock/SysDb/animation/sport.gif new file mode 100644 index 0000000..0f86ad4 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/sport.gif differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/tip.gif b/Bin/Debug/MyTimeClock/SysDb/animation/tip.gif new file mode 100644 index 0000000..d6a17a1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/tip.gif differ diff --git a/Bin/Debug/MyTimeClock/SysDb/animation/xiuxi.gif b/Bin/Debug/MyTimeClock/SysDb/animation/xiuxi.gif new file mode 100644 index 0000000..a0b2f0c Binary files /dev/null and b/Bin/Debug/MyTimeClock/SysDb/animation/xiuxi.gif differ diff --git a/Bin/Debug/MyTimeClock/System.Data.SQLite.dll b/Bin/Debug/MyTimeClock/System.Data.SQLite.dll new file mode 100644 index 0000000..e15c908 Binary files /dev/null and b/Bin/Debug/MyTimeClock/System.Data.SQLite.dll differ diff --git a/Bin/Debug/MyTimeClock/System.Data.SQLite.dll.config b/Bin/Debug/MyTimeClock/System.Data.SQLite.dll.config new file mode 100644 index 0000000..415bebc --- /dev/null +++ b/Bin/Debug/MyTimeClock/System.Data.SQLite.dll.config @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Bin/Debug/MyTimeClock/TimeClock.dll b/Bin/Debug/MyTimeClock/TimeClock.dll new file mode 100644 index 0000000..467832b Binary files /dev/null and b/Bin/Debug/MyTimeClock/TimeClock.dll differ diff --git a/Bin/Debug/MyTimeClock/UserDb/Holidays.dat b/Bin/Debug/MyTimeClock/UserDb/Holidays.dat new file mode 100644 index 0000000..aab65b1 Binary files /dev/null and b/Bin/Debug/MyTimeClock/UserDb/Holidays.dat differ diff --git a/Bin/Debug/MyTimeClock/UserDb/TimeTip.dat b/Bin/Debug/MyTimeClock/UserDb/TimeTip.dat new file mode 100644 index 0000000..6e913fb Binary files /dev/null and b/Bin/Debug/MyTimeClock/UserDb/TimeTip.dat differ diff --git a/Bin/Debug/MyTimeClock/UserDb/Win.dat b/Bin/Debug/MyTimeClock/UserDb/Win.dat new file mode 100644 index 0000000..7f34bc4 --- /dev/null +++ b/Bin/Debug/MyTimeClock/UserDb/Win.dat @@ -0,0 +1,2 @@ +[TimeClock] +hwnd=3014724 diff --git a/Bin/Debug/MyTimeClock/UserDb/WorkInfo.dat b/Bin/Debug/MyTimeClock/UserDb/WorkInfo.dat new file mode 100644 index 0000000..9e31ee2 Binary files /dev/null and b/Bin/Debug/MyTimeClock/UserDb/WorkInfo.dat differ diff --git a/Bin/Debug/MyTimeClock/XPTable.dll b/Bin/Debug/MyTimeClock/XPTable.dll new file mode 100644 index 0000000..4ac2f2e Binary files /dev/null and b/Bin/Debug/MyTimeClock/XPTable.dll differ diff --git a/Bin/Debug/MyTimeClock/XPTable.xml b/Bin/Debug/MyTimeClock/XPTable.xml new file mode 100644 index 0000000..1cdc3bf --- /dev/null +++ b/Bin/Debug/MyTimeClock/XPTable.xml @@ -0,0 +1,14840 @@ + + + + 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/MyTimeClock/cUpdate.dat b/Bin/Debug/MyTimeClock/cUpdate.dat new file mode 100644 index 0000000..8292205 --- /dev/null +++ b/Bin/Debug/MyTimeClock/cUpdate.dat @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Bin/Debug/MyTimeClock/ryControls.dll b/Bin/Debug/MyTimeClock/ryControls.dll new file mode 100644 index 0000000..2ed820b Binary files /dev/null and b/Bin/Debug/MyTimeClock/ryControls.dll differ diff --git a/Bin/Debug/MyTimeClock/ryUpdate.dll b/Bin/Debug/MyTimeClock/ryUpdate.dll new file mode 100644 index 0000000..389847e Binary files /dev/null and b/Bin/Debug/MyTimeClock/ryUpdate.dll differ diff --git a/Bin/混淆_Debug.nrproj b/Bin/混淆_Debug.nrproj new file mode 100644 index 0000000..84018fa --- /dev/null +++ b/Bin/混淆_Debug.nrproj @@ -0,0 +1,130 @@ + + Debug\MyTimeClock\MyTimeClock.exe + + Debug\MyTimeClock\ryControls.dll + + + Debug\MyTimeClock\TimeClock.dll + + + Debug\MyTimeClock\ryUpdate.dll + + + Debug\MyTimeClock\MyDb_SQLite.dll + + + Debug\MyTimeClock\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..04ac08b --- /dev/null +++ b/Bin/混淆_Release.nrproj @@ -0,0 +1,130 @@ + + Release\MyTimeClock\MyTimeClock.exe + + Release\MyTimeClock\ryControls.dll + + + Release\MyTimeClock\TimeClock.dll + + + Release\MyTimeClock\ryUpdate.dll + + + Release\MyTimeClock\MyDb_SQLite.dll + + + Release\MyTimeClock\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/Source/MyTimeClock/.vs/TimeClock/DesignTimeBuild/.dtbcache b/Source/MyTimeClock/.vs/TimeClock/DesignTimeBuild/.dtbcache new file mode 100644 index 0000000..d30781c Binary files /dev/null and b/Source/MyTimeClock/.vs/TimeClock/DesignTimeBuild/.dtbcache differ diff --git a/Source/MyTimeClock/.vs/TimeClock/v15/.suo b/Source/MyTimeClock/.vs/TimeClock/v15/.suo new file mode 100644 index 0000000..db36534 Binary files /dev/null and b/Source/MyTimeClock/.vs/TimeClock/v15/.suo differ diff --git a/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/db.lock b/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/db.lock new file mode 100644 index 0000000..e69de29 diff --git a/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide b/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide new file mode 100644 index 0000000..f7f31c7 Binary files /dev/null and b/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide differ diff --git a/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide-shm b/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide-shm new file mode 100644 index 0000000..b088db6 Binary files /dev/null and b/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide-shm differ diff --git a/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide-wal b/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide-wal new file mode 100644 index 0000000..35ff707 Binary files /dev/null and b/Source/MyTimeClock/.vs/TimeClock/v15/Server/sqlite3/storage.ide-wal differ diff --git a/Source/MyTimeClock/MyTimeClock/Frmmain.Designer.cs b/Source/MyTimeClock/MyTimeClock/Frmmain.Designer.cs new file mode 100644 index 0000000..c111167 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Frmmain.Designer.cs @@ -0,0 +1,204 @@ +namespace MyTimeClock +{ + partial class Frmmain + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frmmain)); + this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.显示主窗体ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.捐助我们ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.退出ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.LblName = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.LblState = new System.Windows.Forms.Label(); + this.ryTimeClock1 = new TimeClock.RyTimeClock(); + this.LblVer = new System.Windows.Forms.Label(); + this.节假日设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // notifyIcon1 + // + this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1; + this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); + this.notifyIcon1.Text = "睿元定时提醒助手"; + this.notifyIcon1.Visible = true; + this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.显示主窗体ToolStripMenuItem, + this.toolStripMenuItem1, + this.设置ToolStripMenuItem, + this.节假日设置ToolStripMenuItem, + this.捐助我们ToolStripMenuItem, + this.toolStripMenuItem2, + this.退出ToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(181, 148); + // + // 显示主窗体ToolStripMenuItem + // + this.显示主窗体ToolStripMenuItem.Name = "显示主窗体ToolStripMenuItem"; + this.显示主窗体ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.显示主窗体ToolStripMenuItem.Text = "显示主窗体"; + this.显示主窗体ToolStripMenuItem.Click += new System.EventHandler(this.显示主窗体ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(177, 6); + // + // 设置ToolStripMenuItem + // + this.设置ToolStripMenuItem.Name = "设置ToolStripMenuItem"; + this.设置ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.设置ToolStripMenuItem.Text = "设置"; + this.设置ToolStripMenuItem.Click += new System.EventHandler(this.设置ToolStripMenuItem_Click); + // + // 捐助我们ToolStripMenuItem + // + this.捐助我们ToolStripMenuItem.Name = "捐助我们ToolStripMenuItem"; + this.捐助我们ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.捐助我们ToolStripMenuItem.Text = "捐助我们"; + this.捐助我们ToolStripMenuItem.Click += new System.EventHandler(this.捐助我们ToolStripMenuItem_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(177, 6); + // + // 退出ToolStripMenuItem + // + this.退出ToolStripMenuItem.Name = "退出ToolStripMenuItem"; + this.退出ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.退出ToolStripMenuItem.Text = "退出"; + this.退出ToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click); + // + // LblName + // + this.LblName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.LblName.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblName.ForeColor = System.Drawing.Color.White; + this.LblName.Location = new System.Drawing.Point(0, 52); + this.LblName.Name = "LblName"; + this.LblName.Size = new System.Drawing.Size(355, 33); + this.LblName.TabIndex = 4; + this.LblName.Text = "睿元定时提醒专家"; + this.LblName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); + // + // LblState + // + this.LblState.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.LblState.AutoSize = true; + this.LblState.ForeColor = System.Drawing.Color.White; + this.LblState.Location = new System.Drawing.Point(12, 286); + this.LblState.Name = "LblState"; + this.LblState.Size = new System.Drawing.Size(101, 12); + this.LblState.TabIndex = 5; + this.LblState.Text = "正在读取设置...."; + // + // ryTimeClock1 + // + this.ryTimeClock1.Enabled = false; + this.ryTimeClock1.OnTimeTip += new TimeClock.RyTimeClock.TimeHandler(this.ryTimeClock1_OnTimeTip); + // + // LblVer + // + this.LblVer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblVer.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblVer.ForeColor = System.Drawing.Color.DeepSkyBlue; + this.LblVer.Location = new System.Drawing.Point(165, 38); + this.LblVer.Name = "LblVer"; + this.LblVer.Size = new System.Drawing.Size(141, 12); + this.LblVer.TabIndex = 6; + this.LblVer.Text = "V1.0.0.0"; + this.LblVer.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // 节假日设置ToolStripMenuItem + // + this.节假日设置ToolStripMenuItem.Name = "节假日设置ToolStripMenuItem"; + this.节假日设置ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.节假日设置ToolStripMenuItem.Text = "节假日设置"; + this.节假日设置ToolStripMenuItem.Click += new System.EventHandler(this.节假日设置ToolStripMenuItem_Click); + // + // Frmmain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(355, 307); + this.Controls.Add(this.LblVer); + this.Controls.Add(this.LblState); + this.Controls.Add(this.LblName); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Frmmain"; + this.Opacity = 0.8D; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "定时提醒"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); + this.Load += new System.EventHandler(this.Form1_Load); + this.Shown += new System.EventHandler(this.Form1_Shown); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.NotifyIcon notifyIcon1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 显示主窗体ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 退出ToolStripMenuItem; + private System.Windows.Forms.Label LblName; + private TimeClock.RyTimeClock ryTimeClock1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Label LblState; + private System.Windows.Forms.ToolStripMenuItem 设置ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 捐助我们ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.Label LblVer; + private System.Windows.Forms.ToolStripMenuItem 节假日设置ToolStripMenuItem; + } +} + diff --git a/Source/MyTimeClock/MyTimeClock/Frmmain.cs b/Source/MyTimeClock/MyTimeClock/Frmmain.cs new file mode 100644 index 0000000..601ca18 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Frmmain.cs @@ -0,0 +1,122 @@ +using NAudio.Wave; +using ryCommon; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace MyTimeClock +{ + public partial class Frmmain : Form + { + public Frmmain(string[] args) + { + InitializeComponent(); + } + protected override void WndProc(ref System.Windows.Forms.Message msg) + { + switch (msg.Msg) + { + case 17189: //处理消息 + { + #region 激活窗体 + switch (msg.WParam.ToInt32()) + { + case 100://对象添加 + if ((int)msg.LParam.ToInt32() == 100) + { + ryTimeClock1.ShowMsgManage(); + } + break; + } + #endregion + } + break; + default: + base.WndProc(ref msg);//调用基类函数处理非自定义消息。 + break; + } + } + private void ryTimeClock1_OnTimeTip(object sender, TimeClock.TimeInfo e) + { + // e.Cancel = true; + //MessageBox.Show(e.MsgText); + } + private void Form1_Load(object sender, EventArgs e) + { + TimeClock.Itrycn_Info.SysDbFolder = Application.StartupPath + "\\SysDb"; + TimeClock.DbOp.Custom.WorkQuickTip = false; + TimeClock.DbOp.Custom.AppTitle = "睿元定时提醒专家"; + TimeClock.DbOp.Custom.DonateVisabled = false; + 捐助我们ToolStripMenuItem.Visible = TimeClock.DbOp.Custom.DonateVisabled; + 节假日设置ToolStripMenuItem.Visible = false; + LblVer.Text = "V"+RySoft.VersionStr; + Text = TimeClock.DbOp.Custom.AppTitle; + LblName.Text = TimeClock.DbOp.Custom.AppTitle; + LiveUpdate.RyUpdate update = new LiveUpdate.RyUpdate(Itrycn_Info.Update_Url); + update.CheckUpdate(); + timer1.Enabled = true; + ryTimeClock1.LoadSticky(); + } + + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + + } + + private void 显示主窗体ToolStripMenuItem_Click(object sender, EventArgs e) + { + ryTimeClock1.ShowMsgManage(); + } + + private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void Form1_Shown(object sender, EventArgs e) + { + ryCommon.Ini ini = new Ini(Itrycn_Info.UserDataFolder + "\\Win.dat"); + ini.WriteIni(Itrycn_Info.Soft_Id, "hwnd", Handle.ToInt32()); + } + + private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) + { + ryTimeClock1.ShowMsgManage(); + } + + private void Timer1_Tick(object sender, EventArgs e) + { + timer1.Stop(); + LblState.Text = "正在加载报时声音配置文件...";Application.DoEvents(); + TimeClock.Itrycn_Info.AddSoundToDb(); + LblState.Text = "正在启动..."; Application.DoEvents(); + ryTimeClock1.Enabled = true; + this.Hide(); + } + + private void 设置ToolStripMenuItem_Click(object sender, EventArgs e) + { + ryTimeClock1.ShowSetting(); + } + + private void 捐助我们ToolStripMenuItem_Click(object sender, EventArgs e) + { + TimeClock.FrmAbout frm = new TimeClock.FrmAbout(); + frm.StartPosition = FormStartPosition.CenterScreen; + frm.ShowDialog(); + } + + private void 节假日设置ToolStripMenuItem_Click(object sender, EventArgs e) + { + TimeClock.DbOp.FrmHolidayView frm = new TimeClock.DbOp.FrmHolidayView(); + RyForm.ShowOne(frm); + } + } +} diff --git a/Source/MyTimeClock/MyTimeClock/Frmmain.resx b/Source/MyTimeClock/MyTimeClock/Frmmain.resx new file mode 100644 index 0000000..089a9c6 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Frmmain.resx @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 134, 17 + + + 252, 17 + + + + + AAABAAEAFhgAAAEAIADICAAAFgAAACgAAAAWAAAAMAAAAAEAIAAAAAAAQAgAAAAAAAAAAAAAAAAAAAAA + AACushMArrITOK6yE+eushONrrITA66yEwCushMArrITAK6yEwCushMArrITAK6yEwCushMArrITAK6y + EwCushMArrITAK6yEw2ushOrrrITta6yEw6ushMArrITAK6yEzWushPrrrIT9K6yE1uushMArrITAK6y + EwCushMArrITCa6yExKushMSrrITCa6yEwCushMArrITAK6yEwCushNxrrIT/q6yE8qushMRrrITAK6y + EwCushMBrrITcK6yE/yushPirrITOa6yEwiushNFrrITjq6yE72ushPQrrIT0K6yE72ushOOrrITRa6y + EwiushNArrIT6q6yE/OushNSrrITAK6yEwCushMArrITAK6yEweushOWrrIT/66yE8uushOxrrIT9K6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/SushOzrrITz66yE/+ushOGrrITAq6yEwCushMAAAAAAK6y + EwCushMArrITGK6yE8mushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushPKrrITFa6yEwCushMAAAAAAAAAAACushMArrITAK6yE0WushPmrrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT566yE0aushMArrITAAAAAACushMArrITAK6y + ExuushPMrrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushPMrrITG66yEwCushMArrITAK6yEwCushN4rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE3iushMArrITAK6yEwCushMSrrITzK6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushPMrrITEq6yEwCushMArrITOq6yE/KushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT8q6y + E+eushPnrrIT566yE/OushP/rrIT/66yE/+ushP/rrIT8q6yEzqushMArrITAK6yE12ushP+rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT8a6yE1iushMkrrITJa6yEyKushNXrrIT8a6yE/+ushP/rrIT/66y + E/6ushNdrrITAK6yEwCushNtrrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE+KushMerrITAK6y + ExWushMWrrITS66yE++ushP/rrIT/66yE/+ushP/rrITba6yEwCushMArrITZ66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushPgrrITHK6yExiushPBrrIT3a6yE+yushP/rrIT/66yE/+ushP/rrIT/66y + E2eushMArrITAK6yE0yushP6rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT366yExyushMcrrIT4a6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/qushNMrrITAK6yEwCushMkrrIT4q6yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE9+ushMcrrITHK6yE9+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPirrITJK6y + EwCushMArrITBK6yE6SushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPfrrITGq6yExqushPfrrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrITpK6yEwSushMArrITAK6yEwCushNBrrIT766yE/+ushP/rrIT/66y + E/+ushP/rrIT7K6yE0WushNFrrIT7K6yE/+ushP/rrIT/66yE/+ushP/rrIT766yE0GushMArrITAK6y + EwCushMArrITAa6yE4eushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPrrrIT666yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE4eushMBrrITAK6yEwCushMArrITCa6yExOushMRrrIToa6yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE6GushMRrrITE66yEwmushMArrITNa6y + E7CushPNrrITOK6yEw2ushOIrrIT8K6yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT8K6y + E4iushMNrrITOK6yE82ushOwrrITNa6yE8uushP/rrIT/66yE9iushNOrrITBK6yE0KushOlrrIT4q6y + E/iushP/rrIT/66yE/iushPirrITpa6yE0KushMErrITTq6yE9iushP/rrIT/66yE8uushP8rrIT/66y + E/+ushP/rrIT066yExWushMArrITBK6yEyOushNIrrITXq6yE16ushNIrrITI66yEwSushMArrITFa6y + E9OushP/rrIT/66yE/+ushP8rrITzK6yE/+ushP/rrIT/66yE7GushMJrrITAK6yEwCushMArrITAK6y + EwCushMArrITAK6yEwCushMArrITAK6yEwmushOxrrIT/66yE/+ushP/rrITzK6yEz+ushPLrrIT/K6y + E8yushM2rrITAK6yEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6yEwCushMArrITNq6y + E8yushP8rrITy66yEz8AAAAAAAAAAAAAAAAAAAAAgAAEAIAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+AAA= + + + + 417, 17 + + + 17, 17 + + + + AAABAAEAFhgAAAEAIADICAAAFgAAACgAAAAWAAAAMAAAAAEAIAAAAAAAQAgAAAAAAAAAAAAAAAAAAAAA + AACushMArrITOK6yE+eushONrrITA66yEwCushMArrITAK6yEwCushMArrITAK6yEwCushMArrITAK6y + EwCushMArrITAK6yEw2ushOrrrITta6yEw6ushMArrITAK6yEzWushPrrrIT9K6yE1uushMArrITAK6y + EwCushMArrITCa6yExKushMSrrITCa6yEwCushMArrITAK6yEwCushNxrrIT/q6yE8qushMRrrITAK6y + EwCushMBrrITcK6yE/yushPirrITOa6yEwiushNFrrITjq6yE72ushPQrrIT0K6yE72ushOOrrITRa6y + EwiushNArrIT6q6yE/OushNSrrITAK6yEwCushMArrITAK6yEweushOWrrIT/66yE8uushOxrrIT9K6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/SushOzrrITz66yE/+ushOGrrITAq6yEwCushMAAAAAAK6y + EwCushMArrITGK6yE8mushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushPKrrITFa6yEwCushMAAAAAAAAAAACushMArrITAK6yE0WushPmrrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT566yE0aushMArrITAAAAAACushMArrITAK6y + ExuushPMrrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushPMrrITG66yEwCushMArrITAK6yEwCushN4rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE3iushMArrITAK6yEwCushMSrrITzK6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushPMrrITEq6yEwCushMArrITOq6yE/KushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT8q6y + E+eushPnrrIT566yE/OushP/rrIT/66yE/+ushP/rrIT8q6yEzqushMArrITAK6yE12ushP+rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT8a6yE1iushMkrrITJa6yEyKushNXrrIT8a6yE/+ushP/rrIT/66y + E/6ushNdrrITAK6yEwCushNtrrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE+KushMerrITAK6y + ExWushMWrrITS66yE++ushP/rrIT/66yE/+ushP/rrITba6yEwCushMArrITZ66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushPgrrITHK6yExiushPBrrIT3a6yE+yushP/rrIT/66yE/+ushP/rrIT/66y + E2eushMArrITAK6yE0yushP6rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT366yExyushMcrrIT4a6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/qushNMrrITAK6yEwCushMkrrIT4q6yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE9+ushMcrrITHK6yE9+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPirrITJK6y + EwCushMArrITBK6yE6SushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPfrrITGq6yExqushPfrrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrITpK6yEwSushMArrITAK6yEwCushNBrrIT766yE/+ushP/rrIT/66y + E/+ushP/rrIT7K6yE0WushNFrrIT7K6yE/+ushP/rrIT/66yE/+ushP/rrIT766yE0GushMArrITAK6y + EwCushMArrITAa6yE4eushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPrrrIT666yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE4eushMBrrITAK6yEwCushMArrITCa6yExOushMRrrIToa6yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE6GushMRrrITE66yEwmushMArrITNa6y + E7CushPNrrITOK6yEw2ushOIrrIT8K6yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT8K6y + E4iushMNrrITOK6yE82ushOwrrITNa6yE8uushP/rrIT/66yE9iushNOrrITBK6yE0KushOlrrIT4q6y + E/iushP/rrIT/66yE/iushPirrITpa6yE0KushMErrITTq6yE9iushP/rrIT/66yE8uushP8rrIT/66y + E/+ushP/rrIT066yExWushMArrITBK6yEyOushNIrrITXq6yE16ushNIrrITI66yEwSushMArrITFa6y + E9OushP/rrIT/66yE/+ushP8rrITzK6yE/+ushP/rrIT/66yE7GushMJrrITAK6yEwCushMArrITAK6y + EwCushMArrITAK6yEwCushMArrITAK6yEwmushOxrrIT/66yE/+ushP/rrITzK6yEz+ushPLrrIT/K6y + E8yushM2rrITAK6yEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6yEwCushMArrITNq6y + E8yushP8rrITy66yEz8AAAAAAAAAAAAAAAAAAAAAgAAEAIAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+AAA= + + + \ No newline at end of file diff --git a/Source/MyTimeClock/MyTimeClock/Itrycn_Info.cs b/Source/MyTimeClock/MyTimeClock/Itrycn_Info.cs new file mode 100644 index 0000000..98e01fe --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Itrycn_Info.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MyTimeClock +{ + class Itrycn_Info + { + /// + /// 在线升级配置文件的url + /// + public static string Update_Url = "http://www.itrycn.com/update/MyTimeClock.xml"; + /// + /// 软件ID + /// + public static string Soft_Id = "TimeClock"; + /// + /// 用户文件夹,该相对路径设置,将在程序启动后转换 + /// + public static string UserDataFolder = "\\UserDb"; + } +} diff --git a/Source/MyTimeClock/MyTimeClock/MyTimeClock.csproj b/Source/MyTimeClock/MyTimeClock/MyTimeClock.csproj new file mode 100644 index 0000000..933db84 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/MyTimeClock.csproj @@ -0,0 +1,111 @@ + + + + + Debug + AnyCPU + {E546AF59-27BB-4699-AA99-A6D7E738CC9D} + WinExe + MyTimeClock + MyTimeClock + v4.0 + 512 + + + x86 + true + full + false + ..\..\..\Bin\Debug\MyTimeClock\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + 项目1.ico + + + + False + ..\..\..\Bin\Debug\MyTimeClock\MyDb.dll + + + ..\..\..\Bin\Debug\MyTimeClock\MyDb_SQLite.dll + + + ..\..\..\Bin\Debug\MyTimeClock\NAudio.dll + + + ..\..\..\Bin\Debug\MyTimeClock\ryControls.dll + + + ..\..\..\Bin\Debug\MyTimeClock\ryUpdate.dll + + + + + + + + + + + + + + + Form + + + Frmmain.cs + + + + + + Frmmain.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2} + TimeClock + + + + + + + + "e:\documentscenter\my documents\visual studio 2017\Projects\开发辅助工具\开发辅助工具\bin\Debug\开发辅助工具.exe" ver "$(ProjectDir)" + + \ No newline at end of file diff --git a/Source/MyTimeClock/MyTimeClock/Program.cs b/Source/MyTimeClock/MyTimeClock/Program.cs new file mode 100644 index 0000000..0ff1d06 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Program.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace MyTimeClock +{ + static class Program + { + static System.Threading.Mutex run; + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main(string[] args) + { + Application.ThreadException += Application_ThreadException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Itrycn_Info.UserDataFolder = ryCommon.RyFiles.GetRealPath(Itrycn_Info.UserDataFolder); + run = new System.Threading.Mutex(true, Itrycn_Info.Soft_Id, out bool runone); + if (!runone) //已经运行了 + { + ryCommon.Ini ini = new ryCommon.Ini(Itrycn_Info.UserDataFolder + "\\Win.dat"); + ryControls.Win32.SendMessage((IntPtr)ini.ReadIni(Itrycn_Info.Soft_Id, "hwnd", 0), 17189, 100, 100); + } + else + { + Application.Run(new Frmmain(args)); + } + } + static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + Exception ex = e.ExceptionObject as Exception; + if (!System.IO.Directory.Exists(Application.StartupPath + "\\logs")) + { + System.IO.Directory.CreateDirectory(Application.StartupPath + "\\logs"); + } + WriteLogs("错误.log", "错误描述:" + ex.Message + "\r\n\r\n异常堆栈:" + ex.StackTrace + "\r\n\r\n异常方法:" + ex.TargetSite); + } + static void WriteLogs(string file_name, string text) + { + string log_text = text; + System.IO.File.WriteAllBytes(Application.StartupPath + "\\logs\\" + file_name, rySafe.AES.AESEncrypt(log_text, "ryTao")); + if (MessageBox.Show("捕获到无法处理的异常!\r\n\r\n已生成错误日志,是否要提交给我们,以帮助我们尽快解决这个BUG?" + + "\r\n\r\n当前日志包含了当前电脑的系统版本、进程、运行库、错误描述等信息,以帮助我们分析解决问题。\r\n\r\n选“是”自动提交错误日志。\r\n选“否”取消。", "错误", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes) + { + MessageBox.Show("错误日志无法提交!!!建议您将软件目录下的logs文件夹打包后发给我们,以帮助我们尽快解决这个BUG" + +"\r\n\r\n当前日志包含了当前电脑的系统版本、进程、运行库、错误描述等信息,以帮助我们分析解决问题。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) + { + Exception ex = e.Exception; + //MessageBox.Show(string.Format("捕获到未处理异常:{0}\r\n异常信息:{1}\r\n异常堆栈:{2}", ex.GetType(), ex.Message, ex.StackTrace)); + if (!System.IO.Directory.Exists(Application.StartupPath + "\\logs")) + { + System.IO.Directory.CreateDirectory(Application.StartupPath + "\\logs"); + } + WriteLogs("线程错误.log", "错误描述:" + ex.Message + "\r\n\r\n异常堆栈:" + ex.StackTrace + "\r\n\r\n异常方法:" + ex.TargetSite); + } + } +} diff --git a/Source/MyTimeClock/MyTimeClock/Properties/AssemblyInfo.cs b/Source/MyTimeClock/MyTimeClock/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..500c638 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("睿元定时提醒专家")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("睿元定时提醒专家")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("e546af59-27bb-4699-aa99-a6d7e738cc9d")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 +// 方法是按如下所示使用“*”: : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("2.0.1909.1501")] +[assembly: AssemblyFileVersion("2.0.1909.1501")] \ No newline at end of file diff --git a/Source/MyTimeClock/MyTimeClock/Properties/Resources.Designer.cs b/Source/MyTimeClock/MyTimeClock/Properties/Resources.Designer.cs new file mode 100644 index 0000000..03d3fed --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace MyTimeClock.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MyTimeClock.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Source/MyTimeClock/MyTimeClock/Properties/Resources.resx b/Source/MyTimeClock/MyTimeClock/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/MyTimeClock/MyTimeClock/Properties/Settings.Designer.cs b/Source/MyTimeClock/MyTimeClock/Properties/Settings.Designer.cs new file mode 100644 index 0000000..77bdca7 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace MyTimeClock.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Source/MyTimeClock/MyTimeClock/Properties/Settings.settings b/Source/MyTimeClock/MyTimeClock/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Source/MyTimeClock/MyTimeClock/packages.config b/Source/MyTimeClock/MyTimeClock/packages.config new file mode 100644 index 0000000..2a5c430 --- /dev/null +++ b/Source/MyTimeClock/MyTimeClock/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Source/MyTimeClock/MyTimeClock/项目1.ico b/Source/MyTimeClock/MyTimeClock/项目1.ico new file mode 100644 index 0000000..17bb7d3 Binary files /dev/null and b/Source/MyTimeClock/MyTimeClock/项目1.ico differ diff --git a/Source/MyTimeClock/RyLine/FrmConfirm.Designer.cs b/Source/MyTimeClock/RyLine/FrmConfirm.Designer.cs new file mode 100644 index 0000000..99a34fa --- /dev/null +++ b/Source/MyTimeClock/RyLine/FrmConfirm.Designer.cs @@ -0,0 +1,134 @@ +namespace RyLine +{ + partial class FrmConfirm + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmConfirm)); + this.label1 = new System.Windows.Forms.Label(); + this.LblAction = new System.Windows.Forms.Label(); + this.LblTime = new System.Windows.Forms.Label(); + this.BtnCancel = new System.Windows.Forms.Button(); + this.BtnOK = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(210, 14); + this.label1.TabIndex = 0; + this.label1.Text = "正在进行以下操作,请进行确认!"; + // + // LblAction + // + this.LblAction.AutoSize = true; + this.LblAction.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblAction.ForeColor = System.Drawing.Color.Red; + this.LblAction.Location = new System.Drawing.Point(101, 62); + this.LblAction.Name = "LblAction"; + this.LblAction.Size = new System.Drawing.Size(73, 29); + this.LblAction.TabIndex = 1; + this.LblAction.Text = "未知"; + // + // LblTime + // + this.LblTime.AutoSize = true; + this.LblTime.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTime.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.LblTime.Location = new System.Drawing.Point(17, 45); + this.LblTime.Name = "LblTime"; + this.LblTime.Size = new System.Drawing.Size(49, 14); + this.LblTime.TabIndex = 2; + this.LblTime.Text = "60秒后"; + // + // BtnCancel + // + this.BtnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.BtnCancel.Location = new System.Drawing.Point(287, 148); + this.BtnCancel.Name = "BtnCancel"; + this.BtnCancel.Size = new System.Drawing.Size(84, 36); + this.BtnCancel.TabIndex = 3; + this.BtnCancel.Text = "不再执行"; + this.BtnCancel.UseVisualStyleBackColor = true; + this.BtnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // BtnOK + // + this.BtnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.BtnOK.Location = new System.Drawing.Point(377, 148); + this.BtnOK.Name = "BtnOK"; + this.BtnOK.Size = new System.Drawing.Size(84, 36); + this.BtnOK.TabIndex = 4; + this.BtnOK.Text = "立即执行"; + this.BtnOK.UseVisualStyleBackColor = true; + this.BtnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // FrmConfirm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(473, 196); + this.Controls.Add(this.BtnOK); + this.Controls.Add(this.BtnCancel); + this.Controls.Add(this.LblTime); + this.Controls.Add(this.LblAction); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FrmConfirm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "确认"; + this.TopMost = true; + this.Load += new System.EventHandler(this.Form1_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + public System.Windows.Forms.Label LblAction; + private System.Windows.Forms.Label LblTime; + private System.Windows.Forms.Button BtnCancel; + private System.Windows.Forms.Button BtnOK; + private System.Windows.Forms.Timer timer1; + } +} + diff --git a/Source/MyTimeClock/RyLine/FrmConfirm.cs b/Source/MyTimeClock/RyLine/FrmConfirm.cs new file mode 100644 index 0000000..ecba74a --- /dev/null +++ b/Source/MyTimeClock/RyLine/FrmConfirm.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace RyLine +{ + public partial class FrmConfirm : Form + { + public FrmConfirm() + { + InitializeComponent(); + } + + private void BtnOK_Click(object sender, EventArgs e) + { + timer1.Enabled = false; + if(MessageBox.Show("请确认是否要立即执行?","询问",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.No) + { + timer1.Enabled = true;return; + } + DialogResult = DialogResult.OK; + } + + private void BtnCancel_Click(object sender, EventArgs e) + { + timer1.Enabled = false; + DialogResult = DialogResult.Cancel; + } + int Countdown = 60; + private void timer1_Tick(object sender, EventArgs e) + { + Countdown--; + if(Countdown<=0) + { + timer1.Stop(); + timer1.Enabled = false; + DialogResult = DialogResult.OK; + } + else + { + LblTime.Text = Countdown.ToString() + "秒后"; + } + } + + private void Form1_Load(object sender, EventArgs e) + { + timer1.Enabled = true; + } + } +} diff --git a/Source/MyTimeClock/RyLine/FrmConfirm.resx b/Source/MyTimeClock/RyLine/FrmConfirm.resx new file mode 100644 index 0000000..105b5e2 --- /dev/null +++ b/Source/MyTimeClock/RyLine/FrmConfirm.resx @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAHQSAAB0EgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExX4gBMV+IATFfiAExX4gBMV+IATFfiAExX + 4gBMV+IATFfiAExX4gBMV+IATFfiAExX4gBMV+IATFfiAExX4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiAExX4gBMV+IATFfiFUxX + 4j9MV+JqTFfihExX4oZMV+KGTFfihUxX4m5MV+JDTFfiGExX4gBMV+IATFfiAExX4gBMV+IAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiAExX4gBMV+IATFfiLkxX + 4odMV+LQTFfi9ExX4v9MV+L/TFfi/0xX4v9MV+L/TFfi/0xX4vZMV+LWTFfikExX4jZMV+ICTFfiAExX + 4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFfiAExX4gBMV+IATFfiGExX + 4oRMV+LlTFfi/0xX4v9MV+L/TFfi/0xX4vpMV+LzTFfi80xX4vlMV+L/TFfi/0xX4v9MV+L/TFfi60xX + 4pFMV+IfTFfiAExX4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExX4gBMV+IATFfiAExX + 4jVMV+LBTFfi/0xX4v9MV+L/TFfi5kxX4qtMV+JxTFfiS0xX4jpMV+I5TFfiSExX4mxMV+KlTFfi4UxX + 4v9MV+L/TFfi/0xX4s1MV+JCTFfiAExX4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiAExX + 4gBMV+JATFfi2kxX4v9MV+L/TFfi6UxX4olMV+IsTFfiBExX4gBMV+IATFfiAExX4gBMV+IATFfiAExX + 4gJMV+IlTFfifkxX4uJMV+L/TFfi/0xX4uRMV+JQTFfiAExX4gBMV+IAAAAAAAAAAAAAAAAAAAAAAExX + 4gBMV+IATFfiMkxX4tlMV+L/TFfi/0xX4sVMV+I9TFfiAExX4gBMV+IATFfiAExX4gBMV+IATFfiAExX + 4gBMV+IATFfiAExX4gBMV+IATFfiMkxX4rhMV+L/TFfi/0xX4uRMV+JCTFfiAExX4gBMV+IAAAAAAAAA + AABMV+IATFfiAExX4hVMV+K9TFfi/0xX4v9MV+K2TFfiH0xX4gBMV+IATFfiAExX4gBMV+IATFfiBUxX + 4jVMV+I6TFfiCExX4gBMV+IATFfiAExX4gBMV+IATFfiFkxX4qZMV+L/TFfi/0xX4s1MV+IfTFfiAExX + 4gAAAAAAAAAAAExX4gBMV+IATFfifExX4v9MV+L/TFfiyExX4iFMV+IATFfiAExX4gAAAAAATFfiAExX + 4gBMV+JnTFfi7kxX4vNMV+J7TFfiAUxX4gAAAAAATFfiAExX4gBMV+IATFfiFkxX4rhMV+L/TFfi/0xX + 4pFMV+ICTFfiAExX4gBMV+IATFfiAExX4idMV+LfTFfi/0xX4u1MV+JCTFfiAExX4gBMV+IAAAAAAAAA + AABMV+IATFfiBkxX4rhMV+L/TFfi/0xX4sxMV+IOTFfiAAAAAAAAAAAATFfiAExX4gBMV+IATFfiMkxX + 4uJMV+L/TFfi60xX4jZMV+IATFfiAExX4gBMV+IATFfiekxX4v9MV+L/TFfik0xX4gFMV+IATFfiAAAA + AAAAAAAAAAAAAExX4gBMV+IATFfifUxX4vxMV+L/TFfikkxX4gNMV+IAAAAAAAAAAAAAAAAATFfiAExX + 4gBMV+IATFfifkxX4v9MV+L/TFfikExX4gBMV+IATFfiAExX4g5MV+LFTFfi/0xX4uxMV+I1TFfiAExX + 4gAAAAAAAAAAAAAAAAAAAAAATFfiAExX4gBMV+INTFfiVExX4lpMV+ISTFfiAExX4gAAAAAAAAAAAAAA + AAAAAAAATFfiAExX4gBMV+IlTFfi4UxX4v9MV+LWTFfiGExX4gBMV+IATFfiMUxX4u1MV+L/TFfiuUxX + 4glMV+IATFfiAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiAExX4gBMV+IBTFfiAkxX4gBMV+IATFfiAAAA + AAAAAAAAAAAAAAAAAAAAAAAATFfiAExX4gJMV+KlTFfi/0xX4vZMV+JDTFfiAExX4gBMV+JYTFfi/UxX + 4v9MV+KDTFfiAExX4gAAAAAAAAAAAAAAAAAAAAAAAAAAAExX4gBMV+IATFfiRExX4rFMV+K1TFfiUExX + 4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiAExX4mxMV+L/TFfi/0xX4m5MV+IATFfiAExX + 4nVMV+L/TFfi/kxX4l1MV+IATFfiAAAAAAAAAAAAAAAAAAAAAAAAAAAATFfiAExX4gdMV+K3TFfi/0xX + 4v9MV+LJTFfiD0xX4gAAAAAAAAAAAAAAAAAAAAAAAAAAAExX4gBMV+IATFfiSExX4vlMV+L/TFfihUxX + 4gBMV+IATFfihExX4v9MV+L7TFfiTUxX4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiCkxX + 4sJMV+L/TFfi/0xX4tNMV+IUTFfiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExX4gBMV+I5TFfi80xX + 4v9MV+KGTFfiAExX4gBMV+KDTFfi/0xX4vtMV+JOTFfiAExX4gAAAAAAAAAAAAAAAAAAAAAAAAAAAExX + 4gBMV+IKTFfiwUxX4v9MV+L/TFfi0kxX4hNMV+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFfiAExX + 4jpMV+LzTFfi/0xX4oZMV+IATFfiAExX4nNMV+L/TFfi/0xX4mBMV+IATFfiAAAAAAAAAAAAAAAAAAAA + AAAAAAAATFfiAExX4gpMV+LBTFfi/0xX4v9MV+LSTFfiE0xX4gAAAAAAAAAAAAAAAAAAAAAAAAAAAExX + 4gBMV+IATFfiS0xX4vpMV+L/TFfihExX4gBMV+IATFfiVExX4vxMV+L/TFfiiExX4gBMV+IAAAAAAAAA + AAAAAAAAAAAAAAAAAABMV+IATFfiCkxX4sFMV+L/TFfi/0xX4tJMV+ITTFfiAAAAAAAAAAAAAAAAAAAA + AAAAAAAATFfiAExX4gBMV+JxTFfi/0xX4v9MV+JqTFfiAExX4gBMV+ItTFfi60xX4v9MV+K/TFfiC0xX + 4gBMV+IAAAAAAAAAAAAAAAAAAAAAAExX4gBMV+IKTFfiwUxX4v9MV+L/TFfi0kxX4hNMV+IAAAAAAAAA + AAAAAAAAAAAAAExX4gBMV+IATFfiBExX4qtMV+L/TFfi9ExX4j9MV+IATFfiAExX4gtMV+K/TFfi/0xX + 4vBMV+I9TFfiAExX4gAAAAAAAAAAAAAAAAAAAAAATFfiAExX4gpMV+LBTFfi/0xX4v9MV+LSTFfiE0xX + 4gAAAAAAAAAAAAAAAAAAAAAATFfiAExX4gBMV+IsTFfi5kxX4v9MV+LQTFfiFUxX4gBMV+IATFfiAExX + 4nFMV+L/TFfi/0xX4p5MV+IETFfiAExX4gAAAAAAAAAAAAAAAABMV+IATFfiCkxX4sJMV+L/TFfi/0xX + 4tJMV+ITTFfiAAAAAAAAAAAAAAAAAExX4gBMV+IATFfiAExX4olMV+L/TFfi/0xX4odMV+IATFfiAExX + 4gBMV+IATFfiIExX4thMV+L/TFfi8kxX4k9MV+IATFfiAExX4gAAAAAAAAAAAExX4gBMV+IJTFfiwUxX + 4v9MV+L/TFfi0kxX4hJMV+IAAAAAAAAAAABMV+IATFfiAExX4gBMV+I9TFfi6UxX4v9MV+LlTFfiLkxX + 4gBMV+IAAAAAAExX4gBMV+IATFfib0xX4v1MV+L/TFfi00xX4ixMV+IATFfiAExX4gAAAAAATFfiAExX + 4gBMV+J1TFfi6UxX4utMV+KFTFfiBExX4gAAAAAATFfiAExX4gBMV+IATFfiH0xX4sVMV+L/TFfi/0xX + 4oRMV+IATFfiAExX4gAAAAAATFfiAExX4gBMV+IPTFfisExX4v9MV+L/TFfixUxX4ixMV+IATFfiAExX + 4gBMV+IATFfiAExX4gVMV+IpTFfiK0xX4gdMV+IATFfiAExX4gBMV+IATFfiAExX4iFMV+K2TFfi/0xX + 4v9MV+LBTFfiGExX4gBMV+IAAAAAAAAAAAAAAAAATFfiAExX4gBMV+InTFfizUxX4v9MV+L/TFfi00xX + 4k9MV+IETFfiAExX4gBMV+IATFfiAExX4gBMV+IATFfiAExX4gBMV+IATFfiAExX4gFMV+JCTFfiyExX + 4v9MV+L/TFfi2kxX4jVMV+IATFfiAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiAExX4gBMV+IyTFfizUxX + 4v9MV+L/TFfi8kxX4p5MV+I9TFfiC0xX4gBMV+IATFfiAExX4gBMV+IATFfiAExX4glMV+I1TFfik0xX + 4u1MV+L/TFfi/0xX4tlMV+JATFfiAExX4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAAAABMV+IATFfiAExX + 4gBMV+InTFfisExX4v1MV+L/TFfi/0xX4vBMV+K/TFfiiExX4mBMV+JOTFfiTUxX4l1MV+KDTFfiuUxX + 4uxMV+L/TFfi/0xX4v9MV+K9TFfiMkxX4gBMV+IATFfiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABMV+IATFfiAExX4gBMV+IPTFfib0xX4thMV+L/TFfi/0xX4v9MV+L/TFfi/0xX4vtMV+L7TFfi/kxX + 4v9MV+L/TFfi/0xX4v9MV+LfTFfifExX4hVMV+IATFfiAExX4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABMV+IATFfiAExX4gBMV+IATFfiIExX4nFMV+K/TFfi60xX4vxMV+L/TFfi/0xX + 4v9MV+L/TFfi/UxX4u1MV+LFTFfiekxX4idMV+IATFfiAExX4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATFfiAExX4gBMV+IATFfiAExX4gtMV+ItTFfiVExX + 4nNMV+KDTFfihExX4nVMV+JYTFfiMUxX4g5MV+IATFfiAExX4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExX4gBMV+IATFfiAExX + 4gBMV+IATFfiAExX4gBMV+IATFfiAExX4gBMV+IATFfiAExX4gBMV+IAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/wAA//4AAD/4AAAf8AAAD+AAAAfAAAADwAAAAYAAAAGAEAgAADAMAABw + DgAA8A8AAPAPgAHwD4AB8A+AA/APwAHwD8AB8A+AAfAPgADwDwAA8A8AAHAOAAAwDACAEAgAgAAAAcAA + AAPAAAAD4AAAB/AAAA/4AAAf/gAAf/+AAf8= + + + \ No newline at end of file diff --git a/Source/MyTimeClock/RyLine/Program.cs b/Source/MyTimeClock/RyLine/Program.cs new file mode 100644 index 0000000..07beba0 --- /dev/null +++ b/Source/MyTimeClock/RyLine/Program.cs @@ -0,0 +1,34 @@ +using System; +using System.Windows.Forms; + +namespace RyLine +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main(string[] args) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + // 修改 EWX_SHUTDOWN 或者 EWX_LOGOFF, EWX_REBOOT等实现不同得功能。 + // 在XP下可以看到帮助信息,以得到不同得参数 + // SHUTDOWN /? + if(args.Length==1) + { + RyCode.RunCodeLine(args[0]); + } + else if (args.Length>1) + { + if(args[0]=="SetAutoRun" && args.Length == 4) + { ryCommon.ryStart.SetAutoRun(true, args[1], "\""+args[2]+ "\"" + " "+args[3]); } + else if (args[0] == "DelAutoRun" && args.Length == 2) + { ryCommon.ryStart.SetAutoRun(false, args[1]); } + } + //shoutdown.DoExitWin(shoutdown.EWX_SHUTDOWN + shoutdown.EWX_FORCE); + //Application.Run(new Form1()); + } + } +} diff --git a/Source/MyTimeClock/RyLine/Properties/AssemblyInfo.cs b/Source/MyTimeClock/RyLine/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..33c6792 --- /dev/null +++ b/Source/MyTimeClock/RyLine/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("RyLine")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RyLine")] +[assembly: AssemblyCopyright("Copyright © 2017-2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("0db819bf-05b8-4fd8-9d36-6903f747f372")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 +// 方法是按如下所示使用“*”: : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("2.0.1909.0901")] +[assembly: AssemblyFileVersion("2.0.1909.0901")] \ No newline at end of file diff --git a/Source/MyTimeClock/RyLine/Properties/Resources.Designer.cs b/Source/MyTimeClock/RyLine/Properties/Resources.Designer.cs new file mode 100644 index 0000000..cd50207 --- /dev/null +++ b/Source/MyTimeClock/RyLine/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace RyLine.Properties +{ + + + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RyLine.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 覆盖当前线程的 CurrentUICulture 属性 + /// 使用此强类型的资源类的资源查找。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Source/MyTimeClock/RyLine/Properties/Resources.resx b/Source/MyTimeClock/RyLine/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Source/MyTimeClock/RyLine/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/MyTimeClock/RyLine/Properties/Settings.Designer.cs b/Source/MyTimeClock/RyLine/Properties/Settings.Designer.cs new file mode 100644 index 0000000..9972854 --- /dev/null +++ b/Source/MyTimeClock/RyLine/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace RyLine.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Source/MyTimeClock/RyLine/Properties/Settings.settings b/Source/MyTimeClock/RyLine/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Source/MyTimeClock/RyLine/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Source/MyTimeClock/RyLine/RyCode.cs b/Source/MyTimeClock/RyLine/RyCode.cs new file mode 100644 index 0000000..a286172 --- /dev/null +++ b/Source/MyTimeClock/RyLine/RyCode.cs @@ -0,0 +1,123 @@ +using CoreAudio; +using ryCommon; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace RyLine +{ + class RyCode + { + /// + /// 运行代码 + /// + /// + public static void RunCodeLine(string line) + { + #region 单参数识别 + string line_low = line.ToLower(); + string title = ""; + switch (line_low) + { + case "shutdown": + title = "关机"; + break; + case "reboot": + title = "重启电脑"; + break; + case "logoff": + title = "注销电脑"; + break; + } + if (title != "") + { + RyLine.FrmConfirm frm = new FrmConfirm(); + frm.LblAction.Text = title; + if (frm.ShowDialog() != DialogResult.OK) { return; } + } + switch (line_low) + { + case "shutdown": + shoutdown.DoExitWin(shoutdown.EWX_SHUTDOWN | shoutdown.EWX_FORCE); + break; + case "reboot": + shoutdown.DoExitWin(shoutdown.EWX_REBOOT | shoutdown.EWX_FORCE); + break; + case "logoff": + shoutdown.DoExitWin(shoutdown.EWX_LOGOFF | shoutdown.EWX_FORCE); + break; + case "mute_on"://静音 + try + { + MMDeviceEnumerator DevEnum = new MMDeviceEnumerator(); + var device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); + device.AudioEndpointVolume.Mute = true; + } + catch { } + break; + case "mute_off"://取消静音 + try + { + MMDeviceEnumerator DevEnum = new MMDeviceEnumerator(); + var device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); + device.AudioEndpointVolume.Mute = false; + } + catch { } + break; + case "mute_onoff"://静音/取消静音 + try + { + MMDeviceEnumerator DevEnum = new MMDeviceEnumerator(); + var device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); + device.AudioEndpointVolume.Mute = !device.AudioEndpointVolume.Mute; + } + catch { } + break; + case "timesync"://时间同步 + TimeClock.API.TimeSync.Sync(); + break; + default: + if (line_low.IndexOf("openfile") == 0) //打开文件 + { + #region 打开文件 + string file = line.GetStr("\"", "\"", 0, out int pos, ""); + string pram = ""; + if (file != "") + { pram = line.GetStr(" \"", "\"", pos, out pos, ""); } + if (file != "") + { + RyFiles.RunFile(file, pram); + } + #endregion + } + else if (line_low.IndexOf("sleep(") == 0 || line_low.IndexOf("wait(") == 0) //等待几毫秒 + { + int mill_second= line.GetStr("(", ")", 0, out int pos, "0").ToInt(); + Thread.Sleep(mill_second); + } + else if (line_low.IndexOf("vol=")==0) //设置音量 + { + #region 设置音量 + double vol = line.GetStr("=", "", 0, out int pos, "0").ToDouble(); + try + { + MMDeviceEnumerator DevEnum = new MMDeviceEnumerator(); + var device = DevEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia); + device.AudioEndpointVolume.MasterVolumeLevelScalar = (float)vol; + if(device.AudioEndpointVolume.Mute) + { + device.AudioEndpointVolume.Mute = false; + } + } + catch { } + #endregion + } + break; + } + #endregion + } + } +} diff --git a/Source/MyTimeClock/RyLine/RyLine.csproj b/Source/MyTimeClock/RyLine/RyLine.csproj new file mode 100644 index 0000000..adb20f8 --- /dev/null +++ b/Source/MyTimeClock/RyLine/RyLine.csproj @@ -0,0 +1,104 @@ + + + + + Debug + AnyCPU + {0DB819BF-05B8-4FD8-9D36-6903F747F372} + WinExe + RyLine + RyLine + v4.0 + 512 + + + x86 + true + full + false + ..\..\..\Bin\Debug\MyTimeClock\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + app.manifest + + + terminal_pc_104_48px_1174091_easyicon.net.ico + + + + False + ..\..\..\Bin\Debug\MyTimeClock\CoreAudio.dll + + + ..\..\..\Bin\Debug\MyTimeClock\MyDb.dll + + + ..\..\..\Bin\Debug\MyTimeClock\RyWeb.dll + + + + + + + + + + + + + + + Form + + + FrmConfirm.cs + + + + + + + + + FrmConfirm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + "e:\documentscenter\my documents\visual studio 2017\Projects\开发辅助工具\开发辅助工具\bin\Debug\开发辅助工具.exe" ver "$(ProjectDir)" + + \ No newline at end of file diff --git a/Source/MyTimeClock/RyLine/RyLine.csproj.user b/Source/MyTimeClock/RyLine/RyLine.csproj.user new file mode 100644 index 0000000..d14eb3b --- /dev/null +++ b/Source/MyTimeClock/RyLine/RyLine.csproj.user @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Source/MyTimeClock/RyLine/TimeSync.cs b/Source/MyTimeClock/RyLine/TimeSync.cs new file mode 100644 index 0000000..8329861 --- /dev/null +++ b/Source/MyTimeClock/RyLine/TimeSync.cs @@ -0,0 +1,76 @@ +using DotNet4.Utilities; +using ryCommon; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Runtime.InteropServices; +using System.Text; + +namespace TimeClock.API +{ + public class TimeSync + { + [StructLayoutAttribute(LayoutKind.Sequential)] + public struct SystemTime + { + public short year; + public short month; + public short dayOfWeek; + public short day; + public short hour; + public short minute; + public short second; + public short milliseconds; + } + /// +        /// 设置系统时间 +        /// +        /// +        /// +        [DllImport("kernel32.dll")] + private static extern bool SetLocalTime(ref SystemTime time); + + public static bool SetDate(DateTime dt) + { + SystemTime systemtime; + systemtime.year = (short)dt.Year; + systemtime.month = (short)dt.Month; + systemtime.dayOfWeek = (short)dt.DayOfWeek; + systemtime.day = (short)dt.Day; + systemtime.hour = (short)dt.Hour; + systemtime.minute = (short)dt.Minute; + systemtime.second = (short)dt.Second; + systemtime.milliseconds = (short)dt.Millisecond; + return SetLocalTime(ref systemtime); + } + + public static DateTime ConvertIntDatetime(long utc) + { + return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds((double)utc); + } + public static void Sync() + { + try + { + HttpHelper http = new HttpHelper(); + HttpItem item = new HttpItem() + { + URL = "https://a.jd.com//ajax/queryServerData.html?r=" + Guid.NewGuid().ToString(), + Method = "get" + }; + HttpResult result = http.GetHtml(item); + if (result.StatusCode == HttpStatusCode.OK) + { + var utc = result.Html.GetStr("\"serverTime\":", "}").ToInt64(); + if (utc == 0) { return; } + DateTime dt = ConvertIntDatetime(utc); + SetDate(dt); + } + } + catch + { + } + } + } +} diff --git a/Source/MyTimeClock/RyLine/app.manifest b/Source/MyTimeClock/RyLine/app.manifest new file mode 100644 index 0000000..ce4f492 --- /dev/null +++ b/Source/MyTimeClock/RyLine/app.manifest @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/MyTimeClock/RyLine/ryStart.cs b/Source/MyTimeClock/RyLine/ryStart.cs new file mode 100644 index 0000000..25d3d27 --- /dev/null +++ b/Source/MyTimeClock/RyLine/ryStart.cs @@ -0,0 +1,212 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Win32; +using System.Windows.Forms; + +namespace ryCommon +{ + public class ryStart + { + public static bool Use64bit = false; + /// + /// 设置是否开机启动 + /// + /// 是否开机启动 + /// 开机启动名称 + /// 启动命令 + /// + public static bool SetAutoRun(bool AutoRun, string StartName, string StartCommand) + { + try + { + RegistryKey LMach = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Use64bit ? RegistryView.Registry64: RegistryView.Default); + RegistryKey softwareRun = LMach.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true); + if (AutoRun) + { softwareRun.SetValue(StartName, StartCommand, RegistryValueKind.String); } + else + { + if (softwareRun.GetValue(StartName) != null) + { + softwareRun.DeleteValue(StartName); + } + } + softwareRun.Close(); + LMach.Close(); + return true; + } + catch + { + return false; + } + } + /// + /// 设置是否开机启动 + /// + /// 是否开机启动 + /// 开机启动名称 + /// + public static bool SetAutoRun(bool AutoRun, string StartName) + { + return SetAutoRun(AutoRun, StartName, "\"" + Application.ExecutablePath + "\" q"); + } + /// + /// 把指定文件设置为开机启动或取消开机启动 + /// + /// 是否开机启动 + /// 开机启动名称 + /// 要开机启动的文件路径 + /// + public static bool SetAutoRunByPath(bool AutoRun, string StartName, string Path) + { + return SetAutoRun(AutoRun, StartName, "\"" + Path + "\" q"); + } + /// + /// 检查是否开机启动 + /// + /// 开机启动名称 + /// 开机启动命令 + /// + public static bool isAutoRun(string StartName, string StartCommand) + { + try + { + bool sxResult = false; + RegistryKey LMach = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Use64bit ? RegistryView.Registry64 : RegistryView.Default); + RegistryKey softwareRun = LMach.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); + if (softwareRun.GetValue(StartName, "").ToString() == StartCommand) + { sxResult = true; } + else { sxResult = false; } + softwareRun.Close(); + LMach.Close(); + return sxResult; + } + catch + { + return false; + } + } + /// + /// 检查是否开机启动 + /// + /// 开机启动名称 + /// + public static bool isAutoRun(string StartName) + { + try + { + bool sxResult = false; + RegistryKey LMach = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Use64bit ? RegistryView.Registry64 : RegistryView.Default); + RegistryKey softwareRun = LMach.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); + if (softwareRun.GetValue(StartName, "").ToString() != "") + { sxResult = true; } + else { sxResult = false; } + softwareRun.Close(); + LMach.Close(); + return sxResult; + } + catch + { + return false; + } + } + /// + /// 判断指定文件是否是开机启动 + /// + /// 开机启动名称 + /// 文件路径 + /// + public static bool isAutoRunByPath(string StartName, string Path) + { + return isAutoRun(StartName, "\"" + Path + "\" q"); + } + /// + /// 判断当前程序是否是开机启动 + /// + /// 开机启动名称 + /// + public static bool isAutoRunByMe(string StartName) + { + return isAutoRun(StartName, "\"" + Application.ExecutablePath + "\" q"); + } + /// + /// 判断当前程序是否是开机启动 + /// + /// 开机启动名称 + /// 启动命令行 + /// + public static bool isAutoRunByMe(string StartName, string Cmd) + { + return isAutoRun(StartName, "\"" + Application.ExecutablePath + "\" " + Cmd); + } + /// + /// 设置指定文件的浏览器控件内核版本 + /// + /// 文件名,要求不带路径 + /// 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + /// + public static bool SetIE_EMULATION(string filename, uint IEMode) + { + try + { + RegistryKey LMach = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Use64bit ? RegistryView.Registry64 : RegistryView.Default); + RegistryKey softwareRun = LMach.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true); + softwareRun.SetValue(filename, IEMode, RegistryValueKind.DWord); + softwareRun.Close(); + LMach.Close(); + return true; + } + catch + { + return false; + } + } + public enum ieMode + { + IE7CompatibleView = 7000, + IE8StandardMode = 8000, + IE8Forced = 8888 + } + /// + /// 设置当前软件的浏览器控件内核版本 + /// + /// 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + /// + public static bool SetIE_EMULATION(uint IEMode) + { + return SetIE_EMULATION(System.IO.Path.GetFileName(Application.ExecutablePath), IEMode); + } + /// + /// 设置指定文件的浏览器控件内核版本 + /// + /// 文件名,要求不带路径 + /// IE内核版本 + /// + public static bool SetIE_EMULATION(string filename, ieMode IEMode) + { + try + { + RegistryKey LMach = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Use64bit ? RegistryView.Registry64 : RegistryView.Default); + RegistryKey softwareRun = LMach.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true); + softwareRun.SetValue(filename, IEMode, RegistryValueKind.DWord); + softwareRun.Close(); + LMach.Close(); + return true; + } + catch + { + return false; + } + } + /// + /// 设置当前软件的浏览器控件内核版本 + /// + /// 文件名,要求不带路径 + /// IE内核版本 + /// + public static bool SetIE_EMULATION(ieMode IEMode) + { + return SetIE_EMULATION(System.IO.Path.GetFileName(Application.ExecutablePath), IEMode); + } + } +} diff --git a/Source/MyTimeClock/RyLine/shoutdown.cs b/Source/MyTimeClock/RyLine/shoutdown.cs new file mode 100644 index 0000000..fbe0513 --- /dev/null +++ b/Source/MyTimeClock/RyLine/shoutdown.cs @@ -0,0 +1,48 @@ +using System; +using System.Runtime.InteropServices; +class shoutdown +{ + [StructLayout(LayoutKind.Sequential, Pack = 1)] + internal struct TokPriv1Luid + { + public int Count; + public long Luid; + public int Attr; + } + [DllImport("kernel32.dll", ExactSpelling = true)] + internal static extern IntPtr GetCurrentProcess(); + [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] + internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); + [DllImport("advapi32.dll", SetLastError = true)] + internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); + [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] + internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, + ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen); + [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] + internal static extern bool ExitWindowsEx(int flg, int rea); + internal const int SE_PRIVILEGE_ENABLED = 0x00000002; + internal const int TOKEN_QUERY = 0x00000008; + internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020; + internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; + public const int EWX_LOGOFF = 0x00000000; + public const int EWX_SHUTDOWN = 0x00000001; + public const int EWX_REBOOT = 0x00000002; + public const int EWX_FORCE = 0x00000004; + public const int EWX_POWEROFF = 0x00000008; + public const int EWX_FORCEIFHUNG = 0x00000010; + + public static void DoExitWin(int flg) + { + bool ok; + TokPriv1Luid tp; + IntPtr hproc = GetCurrentProcess(); + IntPtr htok = IntPtr.Zero; + ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); + tp.Count = 1; + tp.Luid = 0; + tp.Attr = SE_PRIVILEGE_ENABLED; + ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid); + ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); + ok = ExitWindowsEx(flg, 0); + } +} diff --git a/Source/MyTimeClock/RyLine/terminal_pc_104_48px_1174091_easyicon.net.ico b/Source/MyTimeClock/RyLine/terminal_pc_104_48px_1174091_easyicon.net.ico new file mode 100644 index 0000000..dd8e7cf Binary files /dev/null and b/Source/MyTimeClock/RyLine/terminal_pc_104_48px_1174091_easyicon.net.ico differ diff --git a/Source/MyTimeClock/TimeClock.sln b/Source/MyTimeClock/TimeClock.sln new file mode 100644 index 0000000..9edbd4c --- /dev/null +++ b/Source/MyTimeClock/TimeClock.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2020 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TimeClock", "TimeClock\TimeClock.csproj", "{62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyTimeClock", "MyTimeClock\MyTimeClock.csproj", "{E546AF59-27BB-4699-AA99-A6D7E738CC9D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RyLine", "RyLine\RyLine.csproj", "{0DB819BF-05B8-4FD8-9D36-6903F747F372}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62B5C3E8-4AF1-4A7F-A40B-A6186F83DBD2}.Release|Any CPU.Build.0 = Release|Any CPU + {E546AF59-27BB-4699-AA99-A6D7E738CC9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E546AF59-27BB-4699-AA99-A6D7E738CC9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E546AF59-27BB-4699-AA99-A6D7E738CC9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E546AF59-27BB-4699-AA99-A6D7E738CC9D}.Release|Any CPU.Build.0 = Release|Any CPU + {0DB819BF-05B8-4FD8-9D36-6903F747F372}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DB819BF-05B8-4FD8-9D36-6903F747F372}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DB819BF-05B8-4FD8-9D36-6903F747F372}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DB819BF-05B8-4FD8-9D36-6903F747F372}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CE996673-C6E2-4D7D-AC4E-8555D86AE868} + EndGlobalSection +EndGlobal diff --git a/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.Designer.cs b/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.Designer.cs new file mode 100644 index 0000000..8b0f067 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.Designer.cs @@ -0,0 +1,42 @@ +namespace ryProcessManager.hezuo +{ + partial class ContextMenuStripRichText + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // ContextMenuStripRichText + // + this.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripRichText_Opening); + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.cs b/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.cs new file mode 100644 index 0000000..c9f4e73 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ryProcessManager.hezuo +{ + public partial class ContextMenuStripRichText : ContextMenuStrip + { + public ContextMenuStripRichText() + { + InitializeComponent(); + AddMenu("撤销", "undo").Click += Undo_Click; + AddMenu("重做", "redo").Click += Redo_Click; + AddSeparatorMenu(); + AddMenu("剪切", "cut").Click += Cut_Click; + AddMenu("复制", "copy").Click += Copy_Click; + AddMenu("粘贴", "paste").Click += Paste_Click; + AddMenu("删除", "del").Click += Del_Click; + AddMenu("全选", "selectall").Click += SelectAll_Click; + } + private void SelectAll_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.SelectAll(); + } + private void Undo_Click(object sender, EventArgs e) + { + if(!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Undo(); + } + private void Redo_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Redo(); + } + private void Cut_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Cut(); + } + private void Copy_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Copy(); + } + private void Paste_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Paste(); + } + private void Del_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.SelectedText=""; + } + private ToolStripSeparator AddSeparatorMenu() + { + ToolStripSeparator item = new ToolStripSeparator(); + base.Items.Add(item); + return item; + } + private ToolStripMenuItem AddMenu(string name, string tag) + { + ToolStripMenuItem item = new ToolStripMenuItem(name) + { + Tag = tag + }; + base.Items.Add(item); + return item; + } + + private void ContextMenuStripRichText_Opening(object sender, CancelEventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + for (int i = 0; i < base.Items.Count; i++) + { + var item = base.Items[i]; + if (item.Tag == null) { continue; } + switch(item.Tag.ToString()) + { + case "undo": + item.Enabled = rich_txt.CanUndo; + break; + case "redo": + item.Enabled = rich_txt.CanRedo; + break; + case "cut": + item.Enabled = (rich_txt.SelectedText != "" && !rich_txt.ReadOnly) ? true : false; + break; + case "copy": + item.Enabled = rich_txt.SelectedText != "" ? true : false; + break; + case "paste": + item.Enabled = rich_txt.CanPaste(DataFormats.GetFormat(DataFormats.Text)); + break; + case "del": + item.Enabled =(rich_txt.SelectedText != "" && !rich_txt.ReadOnly) ? true : false; + break; + case "selectall": + item.Enabled = rich_txt.SelectedText != rich_txt.Text ? true : false; + break; + } + } + } + } +} diff --git a/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.resx b/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.resx new file mode 100644 index 0000000..e5858cc --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/ContextMenuStripRichText.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/API/Hook.cs b/Source/MyTimeClock/TimeClock/API/Hook.cs new file mode 100644 index 0000000..09f207f --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/Hook.cs @@ -0,0 +1,167 @@ +using Microsoft.Win32; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.API +{ + class Hook + { + #region 屏蔽WIN功能键 + public delegate int HookProc(int nCode, int wParam, IntPtr lParam); + private static int hHook = 0; + private const int WH_KEYBOARD_LL = 13; + + //LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,会在你截取之前获得键盘。 + private static HookProc KeyBoardHookProcedure; + //键盘Hook结构函数 + [StructLayout(LayoutKind.Sequential)] + public class KeyBoardHookStruct + { + public int vkCode; + public int scanCode; + public int flags; + public int time; + public int dwExtraInfo; + } + + //设置钩子 + [DllImport("user32.dll")] + private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); + + [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + //抽掉钩子 + private static extern bool UnhookWindowsHookEx(int idHook); + + [DllImport("user32.dll")] + //调用下一个钩子 + private static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); + + [DllImport("kernel32.dll")] + private static extern int GetCurrentThreadId(); + + [DllImport("kernel32.dll")] + private static extern IntPtr GetModuleHandle(string name); + + public static void Hook_Start() + { + // 安装键盘钩子 + if (hHook == 0) + { + KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); + hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure, + GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); + //如果设置钩子失败. + if (hHook == 0) + { + Hook_Clear(); + } + } + } + + //取消钩子事件 + public static bool Hook_Clear() + { + bool retKeyboard = true; + if (hHook != 0) + { + retKeyboard = UnhookWindowsHookEx(hHook); + hHook = 0; + } + return retKeyboard; + //如果去掉钩子失败. + //if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed."); + } + + //这里可以添加自己想要的信息处理 + private static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) + { + if (nCode >= 0) + { + KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); + + if (kbh.vkCode == 91) // 截获左win(开始菜单键) + { + return 1; + } + + if (kbh.vkCode == 92)// 截获右win + { + return 1; + } + + if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc + { + return 1; + } + + if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+f4 + { + return 1; + } + + if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab + { + return 1; + } + + if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift+Esc + { + return 1; + } + + if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+空格 + { + return 1; + } + + if (kbh.vkCode == 241) //截获F1 + { + return 1; + } + + if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) //截获Ctrl+Alt+Delete + { + return 1; + } + + if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift + { + return 1; + } + + if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) //截获Ctrl+Alt+空格 + { + return 1; + } + } + + return CallNextHookEx(hHook, nCode, wParam, lParam); + } + public static void TaskMgrLocking(bool bLock) + { + if (bLock) + { + try + { + RegistryKey r = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true); + r.SetValue("DisableTaskmgr", "1"); //屏蔽任务管理器 + } + catch + { + RegistryKey r = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"); + r.SetValue("DisableTaskmgr", "0"); + } + } + else + { + Registry.CurrentUser.DeleteSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"); + } + } + #endregion + } +} diff --git a/Source/MyTimeClock/TimeClock/API/Msgs.cs b/Source/MyTimeClock/TimeClock/API/Msgs.cs new file mode 100644 index 0000000..01a1924 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/Msgs.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace TimeClock.API +{ + /// + /// 消息类 + /// + public class Msgs + { + /// + /// 提醒变化 + /// + public const int TipChanged = 100; + /// + /// 提醒改变时事件 + /// + public const int Msg_OnTimeTipChanged = 1001; + } +} diff --git a/Source/MyTimeClock/TimeClock/API/RichImg.cs b/Source/MyTimeClock/TimeClock/API/RichImg.cs new file mode 100644 index 0000000..743ec3e --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/RichImg.cs @@ -0,0 +1,166 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.API +{ + /// + /// RichTextBox插入图片使用的静态类 + /// 资料来源:www.baidu.com + /// + public class RTB_InsertImg + { + public const int + EmfToWmfBitsFlagsDefault = 0x00000000, + EmfToWmfBitsFlagsEmbedEmf = 0x00000001, + EmfToWmfBitsFlagsIncludePlaceable = 0x00000002, + EmfToWmfBitsFlagsNoXORClip = 0x00000004; + + [DllImport("gdiplus.dll")] + public static extern uint GdipEmfToWmfBits(IntPtr _hEmf, uint _bufferSize, byte[] _buffer, int _mappingMode, int _flags); + + private struct RtfFontFamilyDef + { + public const string Unknown = @"\fnil"; + public const string Roman = @"\froman"; + public const string Swiss = @"\fswiss"; + public const string Modern = @"\fmodern"; + public const string Script = @"\fscript"; + public const string Decor = @"\fdecor"; + public const string Technical = @"\ftech"; + public const string BiDirect = @"\fbidi"; + } + + private const int MM_ISOTROPIC = 7; + private const int MM_ANISOTROPIC = 8; + private const int HMM_PER_INCH = 2540; + private const int TWIPS_PER_INCH = 1440; + + private const string FF_UNKNOWN = "UNKNOWN"; + + private const string RTF_HEADER = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033"; + private const string RTF_DOCUMENT_PRE = @"\viewkind4\uc1\pard\cf1\f0\fs20"; + private const string RTF_DOCUMENT_POST = @"\cf0\fs17}"; + private const string RTF_IMAGE_POST = @"}"; + + private static HybridDictionary rtfFontFamily; + + static RTB_InsertImg() + { + rtfFontFamily = new HybridDictionary(); + rtfFontFamily.Add(FontFamily.GenericMonospace.Name, RtfFontFamilyDef.Modern); + rtfFontFamily.Add(FontFamily.GenericSansSerif.Name, RtfFontFamilyDef.Swiss); + rtfFontFamily.Add(FontFamily.GenericSerif.Name, RtfFontFamilyDef.Roman); + rtfFontFamily.Add(FF_UNKNOWN, RtfFontFamilyDef.Unknown); + } + + private static string GetFontTable(Font _font) + { + StringBuilder _fontTable = new StringBuilder(); + _fontTable.Append(@"{\fonttbl{\f0"); + _fontTable.Append(@"\"); + if (rtfFontFamily.Contains(_font.FontFamily.Name)) + _fontTable.Append(rtfFontFamily[_font.FontFamily.Name]); + else + _fontTable.Append(rtfFontFamily[FF_UNKNOWN]); + _fontTable.Append(@"\fcharset0 "); + _fontTable.Append(_font.Name); + _fontTable.Append(@";}}"); + return _fontTable.ToString(); + } + + /// + /// 在RichTextBox当前光标处插入一副图像。 + /// + /// 多格式文本框控件 + /// 插入的图像 + public static void InsertImage(RichTextBox rtb, Image image) + { + StringBuilder _rtf = new StringBuilder(); + _rtf.Append(RTF_HEADER); + _rtf.Append(GetFontTable(rtb.Font)); + _rtf.Append(GetImagePrefix(rtb, image)); + _rtf.Append(GetRtfImage(rtb, image)); + _rtf.Append(RTF_IMAGE_POST); + rtb.SelectedRtf = _rtf.ToString(); + } + + private static string GetImagePrefix(RichTextBox rtb, Image _image) + { + float xDpi; + float yDpi; + using (Graphics _graphics = rtb.CreateGraphics()) + { + xDpi = _graphics.DpiX; + yDpi = _graphics.DpiY; + } + + StringBuilder _rtf = new StringBuilder(); + int picw = (int)Math.Round((_image.Width / xDpi) * HMM_PER_INCH); + int pich = (int)Math.Round((_image.Height / yDpi) * HMM_PER_INCH); + int picwgoal = (int)Math.Round((_image.Width / xDpi) * TWIPS_PER_INCH); + int pichgoal = (int)Math.Round((_image.Height / yDpi) * TWIPS_PER_INCH); + _rtf.Append(@"{\pict\wmetafile8"); + _rtf.Append(@"\picw"); + _rtf.Append(picw); + _rtf.Append(@"\pich"); + _rtf.Append(pich); + _rtf.Append(@"\picwgoal"); + _rtf.Append(picwgoal); + _rtf.Append(@"\pichgoal"); + _rtf.Append(pichgoal); + _rtf.Append(" "); + return _rtf.ToString(); + } + + private static string GetRtfImage(RichTextBox rtb, Image _image) + { + StringBuilder _rtf = null; + MemoryStream _stream = null; + Graphics _graphics = null; + Metafile _metaFile = null; + IntPtr _hdc; + try + { + _rtf = new StringBuilder(); + _stream = new MemoryStream(); + using (_graphics = rtb.CreateGraphics()) + { + _hdc = _graphics.GetHdc(); + _metaFile = new Metafile(_stream, _hdc); + _graphics.ReleaseHdc(_hdc); + } + using (_graphics = Graphics.FromImage(_metaFile)) + { + _graphics.DrawImage(_image, new Rectangle(0, 0, _image.Width, _image.Height)); + } + IntPtr _hEmf = _metaFile.GetHenhmetafile(); + uint _bufferSize = GdipEmfToWmfBits(_hEmf, 0, null, MM_ANISOTROPIC, EmfToWmfBitsFlagsDefault); + byte[] _buffer = new byte[_bufferSize]; + uint _convertedSize = GdipEmfToWmfBits(_hEmf, _bufferSize, _buffer, MM_ANISOTROPIC, EmfToWmfBitsFlagsDefault); + for (int i = 0; i < _buffer.Length; ++i) + { + _rtf.Append(String.Format("{0:X2}", _buffer[i])); + } + + return _rtf.ToString(); + } + finally + { + if (_graphics != null) + _graphics.Dispose(); + if (_metaFile != null) + _metaFile.Dispose(); + if (_stream != null) + _stream.Close(); + } + } + } +} diff --git a/Source/MyTimeClock/TimeClock/API/SoundPlay.cs b/Source/MyTimeClock/TimeClock/API/SoundPlay.cs new file mode 100644 index 0000000..51f8185 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/SoundPlay.cs @@ -0,0 +1,167 @@ +using NAudio.Wave; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; + +namespace TimeClock.API +{ + class SoundPlay + { + private readonly WaveOut waveOut = null; + /// + /// 实例化音频播放类 + /// + public SoundPlay() + { + waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()); + } + /// + /// 实例化音频播放类 + /// + /// + public SoundPlay(string path) + { + waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()); + FilePath = path; + } + /// + /// 音频文件地址 + /// + public string FilePath { get; set; } + public event EventHandler OnPlayEnd; + /// + /// 播放 + /// + public void Play() + { + Play(FilePath); + } + /// + /// 播放指定音频 + /// + /// + public void Play(string path) + { + if (!System.IO.File.Exists(path)) { return; } + try + { + var ms = System.IO.File.OpenRead(path); + WaveStream wavStream = null; + switch (System.IO.Path.GetExtension(path).ToLower()) + { + case ".wav": + var rdr2 = new WaveFileReader(ms); + wavStream = WaveFormatConversionStream.CreatePcmStream(rdr2); + break; + case ".mp3": + var rdr = new Mp3FileReader(ms); + wavStream = WaveFormatConversionStream.CreatePcmStream(rdr); + break; + } + if (wavStream == null) { ms.Close(); return; } + using (var baStream = new BlockAlignReductionStream(wavStream)) + { + waveOut.Init(baStream); + waveOut.Play(); + while (waveOut.PlaybackState == PlaybackState.Playing) + { + Thread.Sleep(10); + } + } + ms.Close(); + } + catch { } + } + /// + /// 播放状态 + /// + public PlaybackState PlaybackState + { + get { return waveOut.PlaybackState; } + } + /// + /// 异步播放指定音频 + /// + /// + public void PlaySync(string path) + { + if (!System.IO.File.Exists(path)) { return; } + Thread th = new Thread(delegate() { + Play(path); + OnPlayEnd?.Invoke(this,new EventArgs()); + }); + th.Start(); + } + /// + /// 停止播放 + /// + public void Stop() + { + try + { + waveOut.Stop(); + } + catch + { + } + } + /// + /// 恢复播放 + /// + public void Resume() + { + try + { + waveOut.Resume(); + } + catch + { + } + } + /// + /// 暂停播放 + /// + public void Pause() + { + try + { + waveOut.Pause(); + } + catch + { + } + } + /// + /// 设置/获取音量,范围为0-1 + /// + public float Volume + { + get { return waveOut.Volume; } + set + { + try + { + waveOut.Volume = value; + } + catch + { + } + } + } + /// + /// 销毁数据 + /// + ~SoundPlay() + { + try + { + waveOut.Dispose(); + } + catch + { + } + } + } +} diff --git a/Source/MyTimeClock/TimeClock/API/SpVoice.cs b/Source/MyTimeClock/TimeClock/API/SpVoice.cs new file mode 100644 index 0000000..da717a7 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/API/SpVoice.cs @@ -0,0 +1,172 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Reflection; +using System.Diagnostics; +using System.Runtime.InteropServices; + +namespace COM +{ + [Guid("ED5DCE10-F40B-4655-9E7B-903779C77AF2")] + public partial class SpVoice : Object + { + public enum Flags + { + SVSFDefault = 0, + SVSFlagsAsync = 1, + SVSFPurgeBeforeSpeak = 2, + SVSFIsFilename = 4, + SVSFIsXML = 8, + SVSFIsNotXML = 16, + SVSFPersistXML = 32, + SVSFNLPSpeakPunc = 64, + SVSFParseSapi = 128, + SVSFParseSsml = 256, + SVSFParseAutodetect = 0, + SVSFNLPMask = 64, + SVSFParseMask = 384, + SVSFVoiceMask = 511, + SVSFUnusedFlags = -512 + } + + public enum Priority + { + SVPNormal = 0, + SVPAlert = 1, + SVPOver = 2 + } + } + public partial class SpVoice : Object + { + private Type _ComType = null; + private object _ComObject = null; + + public SpVoice() + { + this.Init(); + } + + public bool Init() + { + this._ComType = Type.GetTypeFromProgID("SAPI.SpVoice", true); // CLSID {269316D8-57BD-11D2-9EEE-00C04F797396} + if (this._ComType == null) + { + throw new Exception("COM调用失败"); + } + this._ComObject = Activator.CreateInstance(this._ComType, true); + return this._ComObject != null; + } + + public int Release() + { + return Marshal.ReleaseComObject(this._ComObject); + } + + public int Rate + { + get + { + return (int)this._ComType.InvokeMember("Rate", BindingFlags.GetProperty, null, this._ComObject, null); + } + set + { + this._ComType.InvokeMember("Rate", BindingFlags.SetProperty, null, this._ComObject, new object[] { value }); + } + } + + public void Pause() + { + this._ComType.InvokeMember("Pause", BindingFlags.InvokeMethod, null, this._ComObject, null); + } + + public void Resume() + { + this._ComType.InvokeMember("Resume", BindingFlags.InvokeMethod, null, this._ComObject, null); + } + + public int Volume + { + get + { + return (int)this._ComType.InvokeMember("Volume", BindingFlags.GetProperty, null, this._ComObject, null); + } + set + { + this._ComType.InvokeMember("Volume", BindingFlags.SetProperty, null, this._ComObject, new object[] { value }); + } + } + + public int Skip(int Type, int NumItems) + { + return (int)this._ComType.InvokeMember("Skip", BindingFlags.InvokeMethod, null, this._ComObject, new object[] { Type, NumItems }); + } + + public bool IsUISupported(string TypeOfUI, object ExtraData) + { + return (bool)this._ComType.InvokeMember("IsUISupported", BindingFlags.InvokeMethod, null, this._ComObject, new object[] { TypeOfUI, ExtraData }); + } + + public bool WaitUntilDone(int msTimeout) + { + return (bool)this._ComType.InvokeMember("WaitUntilDone", BindingFlags.InvokeMethod, null, this._ComObject, new object[] { msTimeout }); + } + + public void DisplayUI(int hWndParent, string Title, string TypeOfUI, object ExtraData) + { + this._ComType.InvokeMember("DisplayUI", BindingFlags.InvokeMethod, null, this._ComObject, new object[] { hWndParent, Title, TypeOfUI, ExtraData }); + } + + public void Speak(string Text, Flags Flags) + { + this._ComType.InvokeMember("Speak", BindingFlags.InvokeMethod, null, this._ComObject, new object[] { Text, Flags }); + } + + public Priority Property + { + get + { + return (Priority)this._ComType.InvokeMember("Priority", BindingFlags.GetProperty, null, this._ComObject, null); + } + set + { + this._ComType.InvokeMember("Priority", BindingFlags.SetProperty, null, this._ComType, new object[] { value }); + } + } + + public List GetVoices() + { + List _ret = new List(); + object Item = null, _Voices = this._ComType.InvokeMember("GetVoices", BindingFlags.InvokeMethod, null, this._ComObject, null); + int Count = (int)_Voices.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, _Voices, null); + for (int i = 0; i < Count; i++) + { + Item = _Voices.GetType().InvokeMember("Item", BindingFlags.InvokeMethod, null, _Voices, new object[] { i }); + if (Item != null) + { + _ret.Add(Item.GetType().InvokeMember("GetDescription", BindingFlags.InvokeMethod, null, Item, null).ToString()); + } + } + return _ret; + } + + public bool SetVoices(string Name) + { + bool _ret = false; + object Item = null, _Voices = this._ComType.InvokeMember("GetVoices", BindingFlags.InvokeMethod, null, this._ComObject, null); + int Count = (int)_Voices.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, _Voices, null); + for (int i = 0; i < Count; i++) + { + Item = _Voices.GetType().InvokeMember("Item", BindingFlags.InvokeMethod, null, _Voices, new object[] { i }); + if (Item != null) + { + var _str = Item.GetType().InvokeMember("GetDescription", BindingFlags.InvokeMethod, null, Item, null).ToString(); + if (_str == Name) + { + this._ComType.InvokeMember("Voice", BindingFlags.SetProperty, null, this._ComObject, new object[] { Item }); + } + } + } + return _ret; + } + } +} diff --git a/Source/MyTimeClock/TimeClock/ChinaDate.cs b/Source/MyTimeClock/TimeClock/ChinaDate.cs new file mode 100644 index 0000000..2a426cc --- /dev/null +++ b/Source/MyTimeClock/TimeClock/ChinaDate.cs @@ -0,0 +1,1115 @@ +using System.Globalization; +using System.Collections; +using System; +using System.Collections.Generic; +using ryCommon; + +/// +/// 中国农历 +/// +/// 日期:2011-01-13 +/// 作者:http://www.cnblogs.com/zjfree/ +public static class ChinaDate +{ + public enum TCalendarType + { + ctinvalid, + ctJulian, + ctGregorian, + ctInvalid + } + private static ChineseLunisolarCalendar china = new ChineseLunisolarCalendar(); + private static Hashtable gHoliday = new Hashtable(); + private static Hashtable nHoliday = new Hashtable(); + private static readonly int[] SCnLeapNumber = + { + 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, + 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 15, 15, + 15, 16, 16, 16, 17, 17, 17, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, + 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 25, 26, 26, 26, 27, 27, 27, + 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 33, 33, 33, 34, + 34, 34, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 39, 39, 40, 40, + 40, 41, 41, 41, 42, 42, 43, 43, 43, 44, 44, 44, 45, 45, 46, 46, 46, + 47, 47, 47, 48, 48, 48, 49, 49, 50, 50, 50, 51, 51, 52, 52, 52, 53, + 53, 53, 54, 54, 54, 55, 55, 56, 56, 56, 56, 57, 57, 57, 58, 58, 59, + 59, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 64, 64, 65, 65, + 65, 65, 66, 66, 66, 67, 67, 68, 68, 69, 69, 69, 69, 70, 71, 71, 71, + 71, 71, 71, 72, 72, 73, 73, 74, 74, 74, 75, 75, 75, 75, 76, 76, 77, + 77, 77, 77, 78, 79, 79, 79, 79, 79, 80, 80, 80, 81, 82, 82, 82, 83, + 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 86, 87, 87, 87, 87, 88, 88, + 89, 89, 90, 90, 91, 91, 91, 92, 92, 93, 93, 94, 94, 94, 94, 95, 95, + 96, 96, 96, 96, 97, 97, 98, 98, 98, 99, 99, 100, 100, 100, 101, 101, + 101, 102, 102, 102, 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, + 106, 107, 107, 107, 108, 108, 109, 109, 109, 110, 110, 111, 111, 111, + 112, 112, 112, 113, 113, 114, 114, 114, 115, 115, 116, 116, 116, 117, + 117, 117, 117, 118, 118, 119, 119, 119, 120, 120, 121, 121, 121, 122, + 122, 122, 123, 123, 124, 124, 124, 124, 125, 125, 126, 126, 126, 126, + 127, 127, 128, 128, 129, 129, 130, 130, 130, 130, 131, 131, 132, 132, + 132, 133, 133, 133, 134, 134, 135, 135, 135, 136, 136, 136, 137, 137, + 137, 138, 138, 139, 139, 139, 140, 140, 141, 141, 141, 142, 142, 142, + 143, 143, 143, 144, 144, 144, 145, 145, 146, 146, 146, 147, 147, 147, + 148, 148, 149, 149, 149, 150, 150, 150, 151, 151, 151, 152, 152, 153, + 153, 153, 154, 154, 154, 155, 155, 156, 156, 156, 157, 157, 157, 158, + 158, 158, 159, 159, 160, 160, 160, 161, 161, 161, 162, 162, 163, 163, + 163, 164, 164, 164, 165, 165, 165, 166, 166, 167, 167, 167, 168, 168, + 168, 169, 169, 170, 170, 170, 171, 171, 171, 172, 172, 172, 173, 173, + 174, 174, 174, 175, 175, 175, 176, 176, 177, 177, 177, 178, 178, 178, + 179, 179, 179, 180, 180, 181, 181, 181, 182, 182, 182, 183, 183, 184, + 184, 184, 185, 185, 185, 186, 186, 186, 187, 187, 188, 188, 188, 189, + 189, 189, 190, 190, 191, 191, 191, 192, 192, 192, 193, 193, 193, 194, + 194, 195, 195, 195, 196, 196, 196, 197, 197, 198, 198, 198, 199, 199, + 199, 200, 200, 200, 201, 201, 202, 202, 202, 203, 203, 203, 204, 204, + 205, 205, 205, 206, 206, 206, 207, 207, 207, 208, 208, 209, 209, 209, + 210, 210, 210, 211, 211, 212, 212, 212, 213, 213, 213, 214, 214, 214, + 214, 214, 215, 215, 215, 216, 216, 216, 217, 217, 218, 218, 218, 219, + 219, 219, 220, 220, 221, 221, 221, 222, 222, 222, 223, 223, 223, 224, + 224, 225, 225, 225, 226, 226, 226, 227, 227, 228, 228, 228, 229, 229, + 229, 230, 230, 230, 231, 231, 232, 232, 232, 233, 233, 233, 234, 234, + 235, 235, 235, 236, 236, 236, 237, 237, 237, 238, 238, 239, 239, 239, + 240, 240, 240, 241, 241, 242, 242, 242, 243, 243, 243, 244, 244, 244, + 245, 245, 246, 246, 246, 247, 247, 247, 248, 248, 249, 249, 249, 250, + 250, 250, 251, 251, 252, 252, 252, 253, 253, 253, 254, 254, 254, 255, + 255, 256, 256, 256, 257, 257, 257, 258, 258, 259, 259, 259, 260, 260, + 260, 261, 261, 261, 262, 262, 263, 263, 263, 264, 264, 264, 265, 265, + 266, 266, 266, 267, 267, 267, 268, 268, 268, 269, 269, 270, 270, 270, + 271, 271, 271, 272, 272, 273, 273, 273, 274, 274, 274, 275, 275, 276, + 276, 276, 277, 277, 277, 278, 278, 278, 279, 279, 280, 280, 280, 281, + 281, 281, 282, 282, 283, 283, 283, 284, 284, 284, 285, 285, 285, 286, + 286, 287, 287, 287, 288, 288, 288, 289, 289, 290, 290, 290, 291, 291, + 291, 292, 292, 292, 293, 293, 294, 294, 294, 295, 295, 295, 296, 296, + 297, 297, 297, 298, 298, 298, 299, 299, 299, 300, 300, 301, 301, 301, + 302, 302, 302, 303, 303, 304, 304, 304, 305, 305, 305, 306, 306, 306, + 307, 307, 308, 308, 308, 309, 309, 309, 310, 310, 311, 311, 312, 312, + 312, 313, 313, 313, 314, 314, 315, 315, 315, 316, 316, 316, 317, 317, + 317, 318, 318, 319, 319, 319, 320, 320, 320, 321, 321, 322, 322, 322, + 323, 323, 323, 324, 324, 325, 325, 325, 326, 326, 326, 327, 327, 327, + 328, 328, 329, 329, 329, 330, 330, 330, 331, 331, 332, 332, 332, 333, + 333, 333, 334, 334, 334, 335, 335, 336, 336, 336, 337, 337, 337, 338, + 338, 339, 339, 339, 340, 340, 340, 341, 341, 341, 342, 342, 343, 343, + 343, 344, 344, 344, 345, 345, 346, 346, 346, 347, 347, 347, 348, 348, + 348, 349, 349, 350, 350, 350, 351, 351, 351, 352, 352, 353, 353, 353, + 354, 354, 354, 355, 355, 355, 356, 356, 357, 357, 357, 358, 358, 358, + 359, 359, 360, 360, 360, 361, 361, 361, 362, 362, 362, 363, 363, 364, + 364, 364, 365, 365, 365, 366, 366, 367, 367, 367, 368, 368, 368, 369, + 369, 369, 370, 370, 371, 371, 371, 372, 372, 372, 373, 373, 374, 374, + 374, 375, 375, 375, 376, 376, 376, 377, 377, 378, 378, 378, 379, 379, + 379, 380, 380, 381, 381, 381, 382, 382, 382, 383, 383, 383, 384, 384, + 385, 385, 385, 386, 386, 386, 387, 387, 388, 388, 388, 389, 389, 389, + 390, 390, 390, 391, 391, 392, 392, 392, 393, 393, 393, 394, 394, 395, + 395, 395, 396, 396, 396, 397, 397, 397, 398, 398, 399, 399, 399, 400, + 400, 400, 401, 401, 402, 402, 402, 403, 403, 403, 404, 404, 404, 405, + 405, 406, 406, 406, 407, 407, 407, 408, 408, 409, 409, 409, 410, 410, + 410, 411, 411, 411, 412, 412, 413, 413, 413, 414, 414, 414, 415, 415, + 416, 416, 416, 417, 417, 417, 418, 418, 418, 419, 419, 420, 420, 420, + 421, 421, 421, 422, 422, 423, 423, 423, 424, 424, 424, 425, 425, 425, + 426, 426, 427, 427, 427, 428, 428, 428, 429, 429, 430, 430, 430, 431, + 431, 431, 432, 432, 432, 433, 433, 434, 434, 434, 435, 435, 435, 436, + 436, 437, 437, 437, 438, 438, 438, 439, 439, 439, 440, 440, 441, 441, + 441, 442, 442, 442, 443, 443, 444, 444, 444, 445, 445, 445, 446, 446, + 446, 447, 447, 448, 448, 448, 449, 449, 449, 450, 450, 451, 451, 451, + 452, 452, 452, 453, 453, 453, 454, 454, 455, 455, 455, 456, 456, 456, + 457, 457, 458, 458, 458, 459, 459, 459, 460, 460, 460, 461, 461, 462, + 462, 462, 463, 463, 463, 464, 464, 465, 465, 465, 466, 466, 466, 467, + 467, 467, 468, 468, 469, 469, 469, 470, 470, 470, 471, 471, 472, 472, + 472, 473, 473, 473, 474, 474, 474, 475, 475, 475, 476, 476, 477, 477, + 477, 478, 478, 478, 479, 479, 480, 480, 480, 481, 481, 481, 482, 482, + 482, 483, 483, 484, 484, 484, 485, 485, 485, 486, 486, 487, 487, 487, + 488, 488, 488, 489, 489, 489, 490, 490, 491, 491, 491, 492, 492, 492, + 493, 493, 494, 494, 494, 495, 495, 495, 496, 496, 496, 497, 497, 498, + 498, 498, 499, 499, 499, 500, 500, 501, 501, 501, 502, 502, 502, 503, + 503, 503, 504, 504, 505, 505, 505, 506, 506, 506, 507, 507, 508, 508, + 508, 509, 509, 509, 510, 510, 510, 511, 511, 512, 512, 512, 513, 513, + 513, 514, 514, 515, 515, 515, 516, 516, 516, 517, 517, 517, 518, 518, + 519, 519, 519, 520, 520, 520, 521, 521, 522, 522, 522, 523, 523, 523, + 524, 524, 524, 525, 525, 526, 526, 526, 527, 527, 527, 528, 528, 529, + 529, 529, 530, 530, 530, 531, 531, 531, 532, 532, 533, 533, 533, 534, + 534, 534, 535, 535, 536, 536, 536, 537, 537, 537, 538, 538, 538, 539, + 539, 540, 540, 540, 541, 541, 541, 542, 542, 543, 543, 543, 544, 544, + 544, 545, 545, 545, 546, 546, 547, 547, 547, 548, 548, 548, 549, 549, + 550, 550, 550, 551, 551, 551, 552, 552, 552, 553, 553, 554, 554, 554, + 555, 555, 555, 556, 556, 557, 557, 557, 558, 558, 558, 559, 559, 559, + 560, 560, 561, 561, 561, 562, 562, 562, 563, 563, 563, 564, 564, 565, + 565, 565, 566, 566, 566, 567, 567, 568, 568, 568, 569, 569, 569, 570, + 570, 570, 571, 571, 572, 572, 572, 573, 573, 573, 574, 574, 575, 575, + 575, 576, 576, 576, 577, 577, 578, 578, 578, 579, 579, 579, 580, 580, + 580, 581, 581, 582, 582, 582, 583, 583, 583, 584, 584, 584, 585, 585, + 586, 586, 586, 587, 587, 587, 588, 588, 589, 589, 589, 590, 590, 590, + 591, 591, 591, 592, 592, 593, 593, 593, 594, 594, 594, 595, 595, 596, + 596, 596, 597, 597, 597, 598, 598, 598, 599, 599, 600, 600, 600, 601, + 601, 601, 602, 602, 603, 603, 603, 604, 604, 604, 605, 605, 605, 606, + 606, 607, 607, 607, 608, 608, 608, 609, 609, 610, 610, 610, 611, 611, + 611, 612, 612, 612, 613, 613, 614, 614, 614, 615, 615, 615, 616, 616, + 617, 617, 617, 618, 618, 618, 619, 619, 619, 620, 620, 621, 621, 621, + 622, 622, 622, 623, 623, 624, 624, 624, 625, 625, 625, 626, 626, 626, + 627, 627, 628, 628, 628, 629, 629, 629, 630, 630, 631, 631, 631, 632, + 632, 632, 633, 633, 633, 634, 634, 635, 635, 635, 636, 636, 636, 637, + 637, 638, 638, 638, 639, 639, 639, 640, 640, 640, 641, 641, 642, 642, + 642, 643, 643, 643, 644, 644, 645, 645, 645, 646, 646, 646, 647, 647, + 647, 648, 648, 649, 649, 649, 650, 650, 650, 651, 651, 652, 652, 652, + 653, 653, 653, 654, 654, 654, 655, 655, 656, 656, 656, 657, 657, 657, + 658, 658, 659, 659, 659, 660, 660, 660, 661, 661, 661, 662, 662, 663, + 663, 663, 664, 664, 664, 665, 665, 666, 666, 666, 667, 667, 667, 668, + 668, 668, 669, 669, 670, 670, 670, 671, 671, 671, 672, 672, 673, 673, + 673, 674, 674, 674, 675, 675, 675, 676, 676, 677, 677, 677, 678, 678, + 678, 679, 679, 680, 680, 680, 681, 681, 681, 682, 682, 682, 683, 683, + 684, 684, 684, 685, 685, 685, 686, 686, 687, 687, 687, 688, 688, 688, + 689, 689, 689, 690, 690, 691, 691, 691, 692, 692, 692, 693, 693, 694, + 694, 694, 695, 695, 695, 696, 696, 696, 697, 697, 698, 698, 698, 699, + 699, 699, 700, 700, 701, 701, 701, 702, 702, 702, 703, 703, 703, 704, + 704, 705, 705, 705, 706, 706, 706, 707, 707, 707, 708, 708, 709, 709, + 709, 710, 710, 710, 711, 711, 712, 712, 712, 713, 713, 713, 714, 714, + 714, 715, 715, 716, 716, 716, 717, 717, 717, 718, 718, 719, 719, 719, + 720, 720, 720, 721, 721, 721, 722, 722, 723, 723, 723, 724, 724, 724, + 725, 725, 726, 726, 726, 727, 727, 727, 728, 728, 728, 729, 729, 730, + 730, 730, 731, 731, 731, 732, 732, 733, 733, 733, 734, 734, 734, 735, + 735, 736, 736, 736, 737, 737, 737, 738, 738, 738, 739, 739, 740, 740, + 740, 741, 741, 741, 742, 742, 742, 743, 743, 744, 744, 744, 745, 745, + 745, 746, 746, 747, 747, 747, 748, 748, 748, 749, 749, 749, 750, 750, + 751, 751, 751, 752, 752, 752, 754, 754, 755, 755, 755, 756, 756, 756, + 757, 757, 757, 758, 758, 759, 759, 759, 760, 760, 760, 761, 761, 762, + 762, 762, 763, 763, 763, 764, 764, 764, 765, 765, 766, 766, 766, 767, + 767, 767, 768, 768, 769, 769, 769, 770, 770, 770, 771, 771, 771, 772, + 772, 773, 773, 773, 774, 774, 774, 775, 775, 776, 776, 776, 777, 777, + 777, 778, 778, 778, 779, 779, 780, 780, 780, 781, 781, 781, 782, 782, + 783, 783, 783, 784, 784, 784, 785, 785, 785, 786, 786, 787, 787, 787, + 788, 788, 788, 789, 789, 790, 790, 790, 791, 791, 791, 792, 792, 792, + 793, 793, 794, 794, 794, 795, 795, 795, 796, 796, 796, 797, 797, 798, + 798, 798, 799, 799, 799, 800, 800, 801, 801, 801, 802, 802, 802, 803, + 803, 804, 804, 804, 805, 805, 805, 806, 806, 806, 807, 807, 808, 808, + 808, 809, 809, 809, 810, 810, 810, 811, 811, 812, 812, 812, 813, 813, + 813, 814, 814, 815, 815, 815, 816, 816, 816, 817, 817, 818, 818, 818, + 819, 819, 819, 820, 820, 820, 821, 821, 822, 822, 822, 823, 823, 823, + 824, 824, 825, 825, 825, 826, 826, 826, 827, 827, 827, 828, 828, 829, + 829, 829, 830, 830, 830, 831, 831, 832, 832, 832, 833, 833, 833, 834, + 834, 834, 835, 835, 836, 836, 836, 837, 837, 837, 838, 838, 839, 839, + 839, 840, 840, 840, 841, 841, 841, 842, 842, 843, 843, 843, 844, 844, + 844, 845, 845, 845, 846, 846, 847, 847, 847, 848, 848, 848, 849, 849, + 850, 850, 850, 851, 851, 851, 852, 852, 852, 853, 853, 854, 854, 854, + 855, 855, 855, 856, 856, 857, 857, 857, 858, 858, 858, 859, 859, 859, + 860, 860, 861, 861, 861, 862, 862, 862, 863, 863, 864, 864, 863, 864, + 864, 864, 865, 865, 865, 866, 866, 867, 867, 867, 868, 868, 868, 869, + 869, 870, 870, 870, 871, 871, 871, 872, 872, 873, 873, 873, 874, 874, + 874, 875, 875, 875, 876, 876, 877, 877, 877, 878, 878, 878, 879, 879, + 879, 880, 880, 881, 881, 881, 882, 882, 882, 883, 883, 884, 884, 884, + 885, 885, 885, 886, 886, 886, 887, 887, 888, 888, 888, 889, 889, 889, + 890, 890, 891, 891, 891, 892, 892, 892, 893, 893, 893, 894, 894, 895, + 895, 895, 896, 896, 896, 897, 897, 898, 898, 898, 899, 899, 899, 900, + 900, 900, 901, 901, 902, 902, 902, 903, 903, 903, 904, 904, 905, 905, + 905, 906, 906, 906, 907, 907, 907, 908, 908, 909, 909, 909, 910, 910, + 910, 911, 911, 912, 912, 912, 913, 913, 913, 914, 914, 914, 915, 915, + 916, 916, 916, 917, 917, 917, 918, 918, 919, 919, 919, 920, 920, 920, + 921, 921, 921, 922, 922, 923, 923, 923, 924, 924, 924, 925, 925, 925, + 926, 926, 927, 927, 927, 928, 928, 928, 929, 929, 930, 930, 930, 931, + 931, 931, 932, 932, 932, 933, 933, 934, 934, 934, 935, 935, 935, 936, + 936, 937, 937, 937, 938, 938, 938, 939, 939, 939, 940, 940, 941, 941, + 941, 942, 942, 942, 943, 943, 944, 944, 944, 945, 945, 945, 946, 946, + 946, 947, 947, 948, 948, 948, 949, 949, 949, 950, 950, 951, 951, 951, + 952, 952, 952, 953, 953, 953, 954, 954, 955, 955, 955, 956, 956, 956, + 957, 957, 958, 958, 958, 959, 959, 959, 960, 960, 960, 961, 961, 962, + 962, 962, 963, 963, 963, 964, 964, 965, 965, 965, 966, 966, 966, 967, + 967, 967, 968, 968, 969, 969, 969, 970, 970, 970, 971, 971, 971, 972, + 972, 973, 973, 973, 974, 974, 974, 975, 975, 976, 976, 976, 977, 977, + 977, 978, 978, 978, 979, 979, 980, 980, 980, 981, 981, 981, 982, 982, + 983, 983, 983, 984, 984, 984, 985, 985, 986, 986, 986, 987, 987, 987, + 988, 988, 988, 989, 989, 990, 990, 990, 991, 991, 991, 992, 992, 993, + 993, 993, 994, 994, 994, 995, 995, 995, 996, 996, 997, 997, 997, 998, + 998, 998, 999, 999, 1000, 1000, 1000, 1001, 1001, 1001, 1002, 1002, + 1002, 1003, 1003, 1004, 1004, 1004, 1005, 1005, 1005, 1006, 1006, + 1006, 1007, 1007, 1008, 1008, 1008, 1009, 1009, 1009, 1010, 1010, + 1011, 1011, 1011, 1012, 1012, 1012, 1013, 1013, 1013, 1014, 1014, + 1015, 1015, 1015, 1016, 1016, 1016, 1017, 1017, 1018, 1018, 1018, + 1019, 1019, 1019, 1020, 1020, 1020, 1021, 1021, 1022, 1022, 1022, + 1023, 1023, 1023, 1024, 1024, 1025, 1025, 1025, 1026, 1026, 1026, + 1027, 1027, 1027, 1028, 1028, 1029, 1029, 1029, 1030, 1030, 1030, + 1031, 1031, 1032, 1032, 1032, 1033, 1033, 1033, 1034, 1034, 1034, + 1035, 1035, 1036, 1036, 1036, 1037, 1037, 1037, 1038, 1038, 1039, + 1039, 1039, 1040, 1040, 1040, 1041, 1041, 1042, 1042, 1042, 1043, + 1043, 1043, 1044, 1044, 1044, 1045, 1045, 1046, 1046, 1046, 1047, + 1047, 1047, 1048, 1048, 1048, 1049, 1049, 1050, 1050, 1050, 1051, + 1051, 1051, 1052, 1052, 1053, 1053, 1053, 1054, 1054, 1054, 1055, + 1055, 1055, 1056, 1056, 1057, 1057, 1057, 1058, 1058, 1058, 1059, + 1059, 1060, 1060, 1060, 1061, 1061, 1061, 1062, 1062, 1062, 1063, + 1063, 1064, 1064, 1064, 1065, 1065, 1065, 1066, 1066, 1067, 1067, + 1067, 1068, 1068, 1068, 1069, 1069, 1069, 1070, 1070, 1071, 1071, + 1071, 1072, 1072, 1072, 1073, 1073, 1074, 1074, 1074, 1075, 1075, + 1075, 1076, 1076, 1076, 1077, 1077, 1078, 1078, 1078, 1079, 1079, + 1079, 1080, 1080, 1081, 1081, 1081, 1082, 1082, 1082, 1083, 1083, + 1083, 1084, 1084 + }; + private static string SCnLeapMonth = + "0c0080050010a0070030c0080050010a0070030c0080050020a0070030c0080050020a" + + "0070030c0090050020a0070030c0090050020a0060030c0060030c00900600c0c0060c" + + "00c00c00c0c000600c0c0006090303030006000c00c060c0006c00000c0c0c00600030" + + "30006c00009009c0090c00c009000300030906030030c0c00060c00090c0060600c003" + + "0060c00c003006009060030c0060060c0090900c00090c0090c00c0060300060600030" + + "30c0c00030c0060030c0090060030c0090300c0080050020a0060030c0080050020b00" + + "70030c0090050010a0070030b0090060020a0070040c0080050020a0060030c0080050" + + "020b0070030c0090050010a0070030b0090060020a0070040c0080050020a0060030c0" + + "080050020b0070030c0090050000c00900909009009090090090090900900909009009" + + "0090900900909009009009090090090900900900909009009090090090900900900909" + + "00900909009009009090090090900900900909009009090060030c0090050010a00700" + + "30b008005001090070040c0080050020a0060030c0090040010a0060030c0090050010" + + "a0070030b0080050010a008005001090050020a0060030c0080040010a0060030c0090" + + "050010a0070030b0080050010a0070030b008005001090070040c0080050020a006003" + + "0c0080040010a0060030c0090050010a0070030b008005001090070040c0080050020a" + + "0060030c0080040010a0060030c0090050010a0060030c0090050010a0070030b00800" + + "5001090070040c0080050020a0060030c0080040010a0070030b0080050010a0070040" + + "c0080050020a0060030c0080040010a0070030c0090050010a0070030b0080050020a0" + + "060030c0080040010a0060030c0090050050020a0060030c0090050010b0070030c009" + + "0050010a0070040c0080040020a0060030c0080050020a0060030c0090050010a00700" + + "30b0080040020a0060040c0090050020b0070030c00a0050010a0070030b0090050020" + + "a0070030c0080040020a0060030c0090050010a0070030c0090050030b007005001090" + + "050020a007004001090060020c0070050c0090060030b0080040020a0060030b008004" + + "0010a0060030b0080050010a0050040c0080050010a0060030c0080050010b0070030c" + + "007005001090070030b0070040020a0060030c0080040020a0070030b0090050010a00" + + "60040c0080050020a0060040c0080050010b0070030c007005001090070030c0080050" + + "020a0070030c0090050020a0070030c0090050020a0060040c0090050020a0060040c0" + + "090050010b0070030c0080050030b007004001090060020c008004002090060020a008" + + "004001090050030b0080040020a0060040b0080040c00a0060020b0070050010900600" + + "30b0070050020a0060020c008004002090070030c008005002090070040c0080040020" + + "a0060040b0090050010a0060030b0080050020a0060040c0080050010b007003001080" + + "05001090070030c0080050020a007003001090050030a0070030b0090050020a006004" + + "0c0090050030b0070040c0090050010c0070040c0080060020b00700400a090060020b" + + "007003002090060020a005004001090050030b007004001090050040c0080040c00a00" + + "60020c007005001090060030b0070050020a0060020c008004002090060030b0080040" + + "02090060030b0080040020a0060040b0080040010b0060030b0070050010a006004002" + + "0700500308006004003070050030700600400307005003080060040030700500409006" + + "0040030700500409006005002070050030a00600500307005004002060040020600500" + + "30020600400307005004090060040030700500408007005003080050040a0060050030" + + "7005004002060050030800500400206005002070050040020600500307006004002070" + + "050030800600400307005004080060040a006005003080050040020700500409006004" + + "002060050030b006005002070050030800600400307005004080060040030700500408" + + "0060040020"; + // { * 自公元前 850 年开始的农历闰月信息 -849~2100,移植自中国日历类} + private static string[] JQ = { "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至", "小寒", "大寒" }; + private static int[] MonthDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + private static int[] MonthDays2 = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + + static ChinaDate() + { + //公历节日 + gHoliday.Add("0101", "元旦"); + gHoliday.Add("0214", "情人节"); + gHoliday.Add("0305", "雷锋日"); + gHoliday.Add("0308", "妇女节"); + gHoliday.Add("0312", "植树节"); + gHoliday.Add("0315", "消权日"); + gHoliday.Add("0401", "愚人节"); + gHoliday.Add("0501", "劳动节"); + gHoliday.Add("0504", "青年节"); + gHoliday.Add("0601", "儿童节"); + gHoliday.Add("0701", "建党节"); + gHoliday.Add("0801", "建军节"); + gHoliday.Add("0910", "教师节"); + gHoliday.Add("1001", "国庆节"); + gHoliday.Add("1224", "平安夜"); + gHoliday.Add("1225", "圣诞节"); + + //农历节日 + nHoliday.Add("0101", "春节"); + nHoliday.Add("0115", "元宵节"); + nHoliday.Add("0505", "端午节"); + nHoliday.Add("0815", "中秋节"); + nHoliday.Add("0909", "重阳节"); + nHoliday.Add("1208", "腊八节"); + } + + /// + /// 获取农历 + /// + /// + /// + public static string GetChinaDate(DateTime dt) + { + if (dt > china.MaxSupportedDateTime || dt < china.MinSupportedDateTime) + { + //日期范围:1901 年 2 月 19 日 - 2101 年 1 月 28 日 + throw new Exception(string.Format("日期超出范围!必须在{0}到{1}之间!", china.MinSupportedDateTime.ToString("yyyy-MM-dd"), china.MaxSupportedDateTime.ToString("yyyy-MM-dd"))); + } + string str = string.Format("{0} {1}{2}", GetYear(dt), GetMonth(dt), GetDay(dt)); + string strJQ = GetSolarTerm(dt); + if (strJQ != "") + { + str += " (" + strJQ + ")"; + } + //string strHoliday = GetHoliday(dt); + //string strChinaHoliday = GetChinaHoliday(dt); + //if (strHoliday != "") + //{ + // str += " " + strHoliday; + //} + //if (strChinaHoliday != "") + //{ + // str += " " + strChinaHoliday; + //} + + return str; + } + // 移植自中国日历类 + private static int GetLeapMonth(int AYear) + { + char C = SCnLeapMonth[AYear + 849]; + if (C >= 48 && C <= 57) //0-9 + { return (int)C-48; } + else if(C >= 97 && C <= 122) //a-z + { + return 10 + (int)C - 97; + } + else { return -1; } + } + // 移植自中国日历类 + private static int GetLeapNum(int AYear) + { + if(AYear < 0) + { + return SCnLeapNumber[AYear + 849]; + } + else { return SCnLeapNumber[AYear - 1 + 849]; } + } + // 获得某农历年的闰月,返回 1~12 对应一月到十二月,返回 0 表示无闰月 + public static int GetLunarLeapMonth(int AYear) + { + int result= GetLeapMonth(AYear); + if (result < 0) { result = 0; } + return result; + } + public enum TLunarSearchDirection + { + lsdInvalid, lsdUp, lsdDown + } + // {* 日月食类型, 无, 日食, 月全食, 月偏食 } + public enum TEclipseType + { + etNone, etSolar, etMoonFull, etMoonHalf + } + //{* 月相, 无, 朔, 望} + public enum TMoonPhase + { + mpNone, mpShuo, mpWang + } + // 获得一大于零的数的小数部分 + private static double GetTail(double X) + { + if (X > 0) { return X -Math.Truncate(X); } + else { return X +Math.Truncate(X); } + } + // 某角度计算函数,移植自中国日历类 + private static double GetAng(double X, double T, double C1, double T0, double T2, double T3) + { + return GetTail(C1 * X) * 2 *Math.PI + T0 - T2 * T * T - T3 * T * T * T; + } + // 获得某公历年月日的农历日数和该日月相以及日月食类型和时刻 + public static double GetLunarMoon(int AYear, int AMonth, int ADay, out TEclipseType EclipseType, out TMoonPhase MoonPhase, out double theTime) + { + double T= (AYear - 1899.5) / 100; + int Ms=Convert.ToInt32(Math.Floor((AYear - 1900) * 12.3685)); + double Rpi= 180 / Math.PI; + double Zone= 8; + double F0= GetAng(Ms, T, 0, 0.75933, 2.172e-4, 1.55e-7) + + 0.53058868 * Ms - 8.37e-4 * T + Zone / 24 + 0.5; + double Fc= 0.1734 - 3.93e-4 * T; + double J0= 693595 + 29 * Ms; + double Aa0= GetAng(Ms, T, 0.08084821133, 359.2242 / Rpi, 0.0000333 / Rpi, 0.00000347 / Rpi); + double Ab0= GetAng(Ms, T, 7.171366127999999e-2, 306.0253 / Rpi, -0.0107306 / Rpi, -0.00001236 / Rpi); + double Ac0= GetAng(Ms, T, 0.08519585128, 21.2964 / Rpi, 0.0016528 / Rpi, 0.00000239 / Rpi); + EclipseType= TEclipseType.etNone; + int LunDay= -1; + double ShuoTime = 0; + int WangDay = 0; + double WangTime = 0; + double K1 = -1; double K = -1; + int StdDays = GetEquStandardDays(AYear, AMonth, ADay); + while(K <= 13) + { + double Aa = Aa0 + 0.507984293 * K; + double Ab = Ab0 + 6.73377553 * K; + double Ac = Ac0 + 6.818486628 * K; + double F1 = F0 + 1.53058868 * K + Fc * Math.Sin(Aa) - 0.4068 * Math.Sin(Ab) + + 0.0021 *Math.Sin(2 * Aa) + 0.0161 * Math.Sin(2 * Ab) + 0.0104 * Math.Sin(2 * Ac) + - 0.0074 * Math.Sin(Aa - Ab) - 0.0051 * Math.Sin(Aa + Ab); + double J = J0 + 28 * K + F1; + int LunDay0= StdDays - (int)Math.Floor(J); + if((K == Math.Floor(K)) && (LunDay0 >= 0) &&(LunDay0 <= 29)) + { + K1= K; + ShuoTime= GetTail(J); + LunDay= LunDay0 + 1; + } + if(K == K1 + 0.5) + { + WangTime= GetTail(J); + WangDay= (int)Math.Floor(J) - (StdDays - LunDay + 1) + 1; + } + if(((LunDay == 1) &&(K == K1)) || ((LunDay == WangDay) &&(K == K1 + 0.5))) + { + if(Math.Abs(Math.Sin(Ac)) <= 0.36) + { + double S= 5.19595 - 0.0048 * Math.Cos(Aa) + 0.002 * Math.Cos(2 * Aa) - 0.3283 * Math.Cos(Ab) + - 0.006 * Math.Cos(Aa + Ab) + 0.0041 * Math.Cos(Aa - Ab); + double R= 0.207 * Math.Sin(Aa) + 0.0024 * Math.Sin(2 * Aa) - 0.039 * Math.Sin(Ab) + + 0.0115 * Math.Sin(2 * Ab) - 0.0073 * Math.Sin(Aa + Ab) - 0.0067 * Math.Sin(Aa - Ab) + + 0.0117 * Math.Sin(2 * Ac); + double P= Math.Abs(S * Math.Sin(Ac) + R * Math.Cos(Ac)); + double Q= 0.0059 + 0.0046 * Math.Cos(Ac) - 0.0182 * Math.Cos(Ab) + 0.0004 * Math.Cos(2 * Ab) + - 0.0005 * Math.Cos(Aa + Ab); + if(P - Q <= 1.5572) + { + EclipseType= TEclipseType.etSolar; // 日食 + if (K != Math.Floor(K)) + { + if(P + Q >= 1.0129) + { + EclipseType = TEclipseType.etMoonHalf; //月偏食 + } + else + { + EclipseType= TEclipseType.etMoonFull; //月全食 + } + } + } + } + } + K= K + 0.5; + } + // 1924.3.5 ~ 4.3 少一天 + if((AYear == 1924) &&(((AMonth == 3) &&(ADay >= 5)) ||((AMonth == 4) &&(ADay <= 3)))) + { + LunDay++; + if(LunDay > 30) { LunDay= LunDay - 30; } + } + // 2018.11.7 ~ 12.6 多一天 + if ((AYear == 2018) &&(((AMonth == 11) &&(ADay >= 7)) ||((AMonth == 12) &&(ADay <= 6)))) + { + LunDay--; + if (LunDay <1) { LunDay = LunDay + 30; } + } + //2025.4.27 ~ 5.26 少一天 + if ((AYear == 2025) && (((AMonth == 4) && (ADay >= 7)) || ((AMonth == 5) && (ADay <=26)))) + { + LunDay++; + if (LunDay > 30) { LunDay = LunDay - 30; } + } + double Result= LunDay; + if(LunDay == 1)// 朔日 + { + MoonPhase=TMoonPhase.mpShuo; + theTime= ShuoTime; + } + else if (LunDay == WangDay) + { + MoonPhase = TMoonPhase.mpWang; + theTime = WangTime; + } + else + { + MoonPhase = TMoonPhase.mpNone; + theTime = -1; + } + return Result; + } + //获得某公历年月日的农历月数 + public static double GetLunarMonth(int AYear,int AMonth,int ADay) + { + double LunDay= GetLunarMoon(AYear, AMonth, ADay,out TEclipseType aEclipsType,out TMoonPhase aMoonPhase,out double aTime); + if(aTime != -1) { LunDay= LunDay + aTime; } + LunDay= Math.Floor(LunDay - Math.Floor(LunDay / 100) * 100); + int LeapMons= GetLeapNum(AYear); + int NMonth= (int)Math.Round((GetEquStandardDays(AYear, AMonth, ADay) + - GetEquStandardDays(-849, 1, 21) - LunDay) / 29.530588) - LeapMons; + //历史上的修改月建 + if(AYear <= 240)NMonth++; + if (AYear <= 237) NMonth--; + if (AYear < 24) NMonth++; + if (AYear < 9) NMonth--; + if (AYear <= -255) NMonth++; + if (AYear <= -256) NMonth += 2 ; + if (AYear <= -722) NMonth++; + double Result= Math.Round(GetRemain(NMonth - 3, 12) + 1); + if((Result == GetLeapMonth(AYear - 1)) &&(AMonth == 1) &&(ADay < LunDay)) + { + Result= -Result; //如果 AYear - 1年末是闰月且该月接到了 AYear 年,则 AYear 年年初也是闰月 + } + else if(Result == GetLeapMonth(AYear)) + { + // 如果得到的月份数与当年所闰的月相同,比如1612年1月31号。 + // 上面计算所得的是11月,并且1612年年底有个闰11月,这俩不能混淆 + if(AMonth.IsInRange(1,2) && (GetLeapMonth(AYear) != 12)) + { + // 粗略判断,如果月份在年初,且今年闰月不是12月,就说明两个月不是一个年的, + // 所以不是闰月,修正为普通月。但这个修正可能不是太准确 + + // 比如1984年有闰10月,而1984.1.1的农历月为10, + // 但这是从1983年阴历接过来的,所以不是1984年的闰10月 + Result= Result + 1; + } + else { Result= -Result; } + } + else + { + if (Result < GetLeapMonth(AYear) || (AMonth < Result) && (GetLeapMonth(AYear) > 0)) + { + Result = Result + 1; //如果 AYear 年是闰月但当月未过闰月则前面多扣除了本年的闰月,这里应当补偿 + } + Result= Math.Round(GetRemain(Result - 1, 12) + 1); + } + // 小数的求余数 + double GetRemain(double X,double W) + { + return GetTail(X / W) * W; + } + return Result; + } + public static bool GetLunarFromDay(int AYear, int AMonth, int ADay, out int LunarYear,out int LunarMonth,out int LunarDay,out bool IsLeapMonth) + { + bool Result= false; + LunarYear = 0; + LunarMonth = 0; + LunarDay = 0; + IsLeapMonth = false; + if ((AYear >= -849) &&(AYear <= 2100)) + { + LunarDay=(int)Math.Floor(GetLunarMoon(AYear, AMonth, ADay,out TEclipseType aEclipsType,out TMoonPhase aMoonPhase,out double aTime)); + LunarMonth= (int)Math.Floor(GetLunarMonth(AYear, AMonth, ADay)); + IsLeapMonth= LunarMonth < 0; + if (IsLeapMonth) + { LunarMonth= -LunarMonth; } + LunarYear= AYear; + // 农历在下半年,公历在上半年,则农历应为上一年 + if ((LunarMonth > 6) &&(AMonth < 6)) + { + LunarYear--; + } + Result = true; + } + return Result; + } + // 获得某公历年月日的农历月日和是否闰月的信息 + public static bool GetLunarMonthDayFromDay(int AYear, int AMonth, int ADay, out int LunarMonth, out int LunarDay, out bool IsLeapMonth) + { + bool Result = false; + LunarMonth = 0; + LunarDay = 0; + IsLeapMonth = false; + if ((AYear >= -849) &&(AYear <= 2100)) + { + LunarDay=(int)Math.Floor(GetLunarMoon(AYear, AMonth, ADay,out TEclipseType aEclipsType,out TMoonPhase aMoonPhase,out double aTime)); + LunarMonth= (int)Math.Floor(GetLunarMonth(AYear, AMonth, ADay)); + IsLeapMonth= LunarMonth < 0; + if(IsLeapMonth) + LunarMonth = -LunarMonth; + Result= true; + } + return Result; + } + // 获得等效标准日数对应的某公历日,倒推而来 + private static bool GetDayFromEquStandardDays(int EquDays,out int AYear,out int AMonth,out int ADay) + { + const int D1 = 365; + const int D4 = D1 * 4 + 1; + const int D100 = D4 * 25 - 1; + const int D400 = D100 * 4 + 1; + bool result = false; + AYear = 0; AMonth = 0; ADay = 0; + if (EquDays < 0) { return result; }// 暂不处理公元前的等效标准日 + if(EquDays<= 577735)// 如果是 1582.10.4 (577735) 及之前为Julian历,需要修正 + { + int Diff= EquDays /(365 * 100) - EquDays /(365 * 400); + EquDays -= 10;// Gregorian 删去的 10 天 + EquDays += 12 - Diff; // 补上多闰的 12 天中多闰的部分 + } + int T= EquDays; + int Y= 1; + while (T >= D400) + { + + T -= D400; + Y += 400; + } + int I= T / D100; + int D= T % D100; + if(I==4) + { + I--; + D += D100; + } + Y += I * 100; + I= D / D4; + D= D % D4; + Y += I * 4; + I= D / D1; + D= D % D1; + if(I==4) + { + I--; + D += D1; + } + Y += I; + int[] DayTable = null; + if (GetIsLeapYear(Y)) { DayTable = MonthDays2; } else { DayTable = MonthDays; } + int M= 0; + while(true) + { + I = DayTable[M]; + if (D < I) break; + D -= I; + M++; + } + AYear= Y; + AMonth= M+1; + ADay= D + 1; + result= true; + return result; + } + // 比较两个农历日期(包括闰月信息),1 >=< 2 分别返回 1、0、-1 + public static int Compare2LunarDay(int Year1, int Month1, int Day1, bool IsLeap1, int Year2, int Month2, int Day2, bool IsLeap2) + { + if(Year1 > Year2) + { + return 1; + } + else if(Year1 == Year2) + { + if(Month1 > Month2) + { + return 1; + } + else if(Month1 == Month2) + { + if(IsLeap1 == IsLeap2) + { + if (Day1 > Day2) + { + return 1; + } + else if(Day1 == Day2) + { + return 0; + } + else { return -1; } + } + else if(IsLeap1 && !IsLeap2) + { + return 1; + } + else { return -1; } + } + else + { + return -1; + } + } + else { return -1; } + } + // 获得某农历年月日(加是否闰月)的公历年月日 + // 该函数采用反向二分法查找 + public static bool GetDayFromLunar(int ALunarYear,int ALunarMonth,int ALunarDay,bool IsLeapMonth,out int AYear,out int AMonth,out int ADay) + { + AYear = -1; AMonth = -1; ADay = 1; + bool result = false; + if (IsLeapMonth && (GetLunarLeapMonth(ALunarYear)!= ALunarMonth)) { return result; } // 该年无此闰月则退出 + // 初始范围为本公历年一月一日到次年十二月三十一日,这样做的前提是历史上正月初一 + // 没有落到公历年年前去。如果有这样的情况,可考虑适当扩大搜索范围,比如从 + // 上一公历年一月一日到次年十二月三十一日,但又可能引发下面对搜索范围判断的错 + int StartYear= ALunarYear; + int StartMonth = 1; + int StartDay = 1; + int StartDays = GetEquStandardDays(StartYear, StartMonth, StartDay); + int EndYear= ALunarYear + 1; + int EndMonth= 12; + int EndDay= 31; + int EndDays= GetEquStandardDays(EndYear, EndMonth, EndDay); + bool Only2= false; + TLunarSearchDirection Lsd = TLunarSearchDirection.lsdInvalid; + int TempYear= StartYear; + int TempLunarYear= StartYear; + int OldTempLunarMonth= 0; + int Count= 0; + while(StartDays < EndDays) + { + Count++; + if (Count > 100) { break; } // 避免陷入死循环 + int InterDays= (StartDays + EndDays) / 2; + if (Only2) + { InterDays++; } + if (EndDays - StartDays == 1) + { Only2 = true; } + GetDayFromEquStandardDays(InterDays,out TempYear,out int TempMonth,out int TempDay); + GetLunarMonthDayFromDay(TempYear, TempMonth, TempDay,out int TempLunarMonth,out int TempLunarDay, out bool TempIsLeap); + switch(Lsd) + { + case TLunarSearchDirection.lsdUp: + // 往未来搜索时如果农历月由大变小了,说明跨了年,年份得加一 + if (TempLunarMonth < OldTempLunarMonth) + TempLunarYear++; + break; + case TLunarSearchDirection.lsdDown: + // 往过去搜索时如果农历月由小变大了,说明跨了年,年份得减一 + if (TempLunarMonth > OldTempLunarMonth) + TempLunarYear--; + break; + } + switch(Compare2LunarDay(TempLunarYear, TempLunarMonth, TempLunarDay, TempIsLeap, + ALunarYear, ALunarMonth, ALunarDay, IsLeapMonth)) + { + case -1: + StartDays= InterDays; + Lsd= TLunarSearchDirection.lsdUp; // 往未来搜索 + break; + case 0: + AYear= TempYear; + AMonth= TempMonth; + ADay= TempDay; + return true; + case 1: + EndDays= InterDays; + Lsd= TLunarSearchDirection.lsdDown; // 往过去搜索 + break; + } + OldTempLunarMonth= TempLunarMonth; + } + return false; + } + public static int GetLunarMonthDays(int ALunarYear,int ALunarMonth,bool IsLeapMonth=false) + { + // 该年无此闰月则退出 + if (IsLeapMonth && (GetLunarLeapMonth(ALunarYear) != ALunarMonth)) { return -1; } + if(!GetDayFromLunar(ALunarYear, ALunarMonth, 1, IsLeapMonth,out int AYear,out int AMonth,out int ADay)) { return -1; } + int EquDay1= GetEquStandardDays(AYear, AMonth, ADay); + bool ALeap = false; + if(GetLunarLeapMonth(ALunarYear) == ALunarMonth) + { + if(IsLeapMonth)// 如果输入就是闰月,则后推一个月 + { + ALunarMonth++; + if(ALunarMonth>12) + { ALunarMonth -= 12;ALunarYear++; } + } + else { ALeap = true; } + } + else + { + ALunarMonth++; + if(ALunarMonth > 12) + { + ALunarMonth -= 12; ALunarYear++; + } + } + if(!GetDayFromLunar(ALunarYear, ALunarMonth, 1, ALeap,out AYear,out AMonth,out ADay)) { return -1; } + int EquDay2= GetEquStandardDays(AYear, AMonth, ADay); + return EquDay2 - EquDay1; + } + /// + /// 获取农历年份 + /// + /// + /// + public static string GetYear(DateTime dt) + { + int yearIndex = china.GetSexagenaryYear(dt); + string yearTG = " 甲乙丙丁戊己庚辛壬癸"; + string yearDZ = " 子丑寅卯辰巳午未申酉戌亥"; + string yearSX = " 鼠牛虎兔龙蛇马羊猴鸡狗猪"; + int year = china.GetYear(dt); + int yTG = china.GetCelestialStem(yearIndex); + int yDZ = china.GetTerrestrialBranch(yearIndex); + + string str = string.Format("[{0}]{1}{2}年", yearSX[yDZ], yearTG[yTG], yearDZ[yDZ]); + return str; + } + + /// + /// 获取农历月份 + /// + /// + /// + public static string GetMonth(DateTime dt) + { + int year = china.GetYear(dt); + int iMonth = china.GetMonth(dt); + int leapMonth = china.GetLeapMonth(year); + bool isLeapMonth = iMonth == leapMonth; + if (leapMonth != 0 && iMonth >= leapMonth) + { + iMonth--; + } + + string szText = "正二三四五六七八九十"; + string strMonth = isLeapMonth ? "闰" : ""; + if (iMonth <= 10) + { + strMonth += szText.Substring(iMonth - 1, 1); + } + else if (iMonth == 11) + { + strMonth += "冬"; + } + else + { + strMonth += "腊"; + } + return strMonth + "月"; + } + + /// + /// 获取农历日期 + /// + /// + /// + public static string GetDay(DateTime dt) + { + return GetDay(china.GetDayOfMonth(dt)); + } + public static string GetDay(int iDay) + { + string szText1 = "初十廿三"; + string szText2 = "一二三四五六七八九十"; + string strDay; + if (iDay == 20) + { + strDay = "二十"; + } + else if (iDay == 30) + { + strDay = "三十"; + } + else + { + strDay = szText1.Substring((iDay - 1) / 10, 1); + strDay = strDay + szText2.Substring((iDay - 1) % 10, 1); + } + return strDay; + } + + /// + /// 获取节气 + /// + /// + /// + public static string GetSolarTerm(DateTime dt) + { + int index = GetJieQiFromDay(dt.Year, dt.Month, dt.Day); + if (index == -1) + { return ""; } + return JQ[index]; + } + public static double GetJieQiDayTimeFromYear(int AYear, int N) + { + double juD, tht, yrD, shuoD; + if (AYear <= 0) { AYear++; } // 对没有公元 0 年的调整 + juD = AYear * (365.2423112 - 6.4e-14 * (AYear - 100) * (AYear - 100) + - 3.047e-8 * (AYear - 100)) + 15.218427 * N + 1721050.71301; + tht = 3e-4 * AYear - 0.372781384 - 0.2617913325 * N; + yrD = (1.945 * Math.Sin(tht) - 0.01206 * Math.Sin(2 * tht)) * (1.048994 - 2.583e-5 * AYear); + shuoD = -18e-4 * Math.Sin(2.313908653 * AYear - 0.439822951 - 3.0443 * N); + return juD + yrD + shuoD - GetEquStandardDays(AYear, 1, 0) - 1721425; // 定气 + } + private static TCalendarType GetCalendarType(int AYear, int AMonth, int ADay) + { + if (AYear > 1582) + return TCalendarType.ctGregorian; + else if (AYear < 1582) + return TCalendarType.ctJulian; + else if (AMonth < 10) + return TCalendarType.ctJulian; + else if ((AMonth == 10) && (ADay <= 4)) + return TCalendarType.ctJulian; + else if ((AMonth == 10) && (ADay >= 5 && ADay <= 14)) + return TCalendarType.ctInvalid; + else + return TCalendarType.ctGregorian; + } + public static int GetEquStandardDays(int AYear, int AMonth, int ADay) + { + TCalendarType AType = GetCalendarType(AYear, AMonth, ADay); + if (AType == TCalendarType.ctGregorian) + { + int aa = (AYear - 1) * 365 + ((AYear - 1) / 4) - ((AYear - 1) / 100) + + ((AYear - 1) / 400); + return (AYear - 1) * 365 + ((AYear - 1) / 4) - ((AYear - 1) / 100) + + ((AYear - 1) / 400) + GetDayFromYearBegin(AYear, AMonth, ADay); + } + else if (AType == TCalendarType.ctJulian) + { + return (AYear - 1) * 365 + ((AYear - 1) / 4) + + GetDayFromYearBegin(AYear, AMonth, ADay) - 2; + } + return 0; + } + private static int GetDayFromYearBegin(int AYear, int AMonth, int ADay) + { + int[] JQData1 = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; + int[] JQData2 = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }; + bool IsLeapYear = GetIsLeapYear(AYear); + if (IsLeapYear) + { + return JQData2[AMonth - 1] + ADay; + } + else + { + return JQData1[AMonth - 1] + ADay; + } + } + // 取本月天数,不考虑 1582 年 10 月的特殊情况 + private static int GetMonthDays(int AYear, int AMonth) + { + switch (AMonth) + { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + return 31; + case 4: + case 6: + case 9: + case 11: + return 30; + case 2: + if (GetIsLeapYear(AYear)) + { return 29; } + else { return 28; } + default: + return 0; + } + } + public static int GetJieQiFromDay(DateTime dt) + { + return GetJieQiFromDay(dt.Year,dt.Month,dt.Day); + } + public static int GetJieQiFromDay(int AYear, int AMonth, int ADay) + { + int Idx; + int result = -1; + Idx = (AMonth - 1) * 2; + if (ADay >= 15) { Idx++; } + if (GetJieQiInAYear(AYear, Idx, out int Month, out int Day, out int DummyHour, out int DummyMinute)) + { + if ((AMonth == Month) && (ADay == Day)) + { + // 此时 I 表示 0 是小寒 + result = Idx - 2; + // 转换成 0 是立春 + if (result < 0) + result += 24; + return result; + } + } + return result; + } + private static bool GetJieQiInAYear(int AYear, int N, out int AMonth, out int ADay, out int AHour, out int AMinitue) + { + double Days; + int Day; + bool Result = N >= 0 && N <= 23; + AMonth = 1; + if (Result) + { + Days = GetJieQiDayTimeFromYear(AYear, N + 1); + for (int i = 1; i <= 12; i++) + { + Day = GetMonthDays(AYear, i); + if (Days > Day) + { + Days = Days - Day; + } + else + { + AMonth = i; break; + } + } + ADay = Convert.ToInt32(Math.Floor(Days)); + Days = Days - ADay; + AHour = Convert.ToInt32(Math.Floor(Days * 24)); + Days = Days * 24 - AHour; + AMinitue = Convert.ToInt32(Math.Round(Days * 60)); + // 如果分恰好等于 60,则小时数要加一,如果小时恰好到了 24,则天数要加一 + if (AMinitue >= 60) + { + AMinitue -= 60; AHour++; + if (AHour >= 24) { AHour -= 24; ADay++; } + // 节气不在月底,因此一般不用考虑天数加一后月份改变的情况 + } + } + else + { + AMonth = 0; + ADay = 0; + AHour = 0; + AMinitue = 0; + } + return Result; + } + private static bool GetIsLeapYear(int AYear) + { + if (GetCalendarType(AYear, 1, 1) == TCalendarType.ctGregorian) + { + return (AYear % 4 == 0) && ((AYear % 100 != 0) || (AYear % 400 == 0)); + } + else if (AYear >= 0) + { + return (AYear % 4 == 0); + } + else // 需要独立判断公元前的原因是没有公元 0 年 + { + return (AYear - 3) % 4 == 0; + } + } + /// + /// 获取公历节日 + /// + /// + /// + public static string GetHoliday(DateTime dt) + { + string strReturn = ""; + object g = gHoliday[dt.Month.ToString("00") + dt.Day.ToString("00")]; + if (g != null) + { + strReturn = g.ToString(); + } + + return strReturn; + } + + /// + /// 获取农历节日 + /// + /// + /// + public static string GetChinaHoliday(DateTime dt) + { + string strReturn = ""; + int year = china.GetYear(dt); + int iMonth = china.GetMonth(dt); + int leapMonth = china.GetLeapMonth(year); + int iDay = china.GetDayOfMonth(dt); + if (china.GetDayOfYear(dt) == china.GetDaysInYear(year)) + { + strReturn = "除夕"; + } + else if (leapMonth != iMonth) + { + if (leapMonth != 0 && iMonth >= leapMonth) + { + iMonth--; + } + object n = nHoliday[iMonth.ToString("00") + iDay.ToString("00")]; + if (n != null) + { + if (strReturn == "") + { + strReturn = n.ToString(); + } + else + { + strReturn += " " + n.ToString(); + } + } + } + + return strReturn; + } +} diff --git a/Source/MyTimeClock/TimeClock/Controls/LunarDay.Designer.cs b/Source/MyTimeClock/TimeClock/Controls/LunarDay.Designer.cs new file mode 100644 index 0000000..8e0af1a --- /dev/null +++ b/Source/MyTimeClock/TimeClock/Controls/LunarDay.Designer.cs @@ -0,0 +1,93 @@ +namespace TimeClock +{ + partial class LunarDay + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.LblDay = new System.Windows.Forms.Label(); + this.LblLunarDay = new System.Windows.Forms.Label(); + this.LblState = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // LblDay + // + this.LblDay.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.LblDay.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblDay.Location = new System.Drawing.Point(0, 9); + this.LblDay.Name = "LblDay"; + this.LblDay.Size = new System.Drawing.Size(78, 28); + this.LblDay.TabIndex = 0; + this.LblDay.Text = "1"; + this.LblDay.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // LblLunarDay + // + this.LblLunarDay.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.LblLunarDay.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblLunarDay.Location = new System.Drawing.Point(0, 39); + this.LblLunarDay.Name = "LblLunarDay"; + this.LblLunarDay.Size = new System.Drawing.Size(78, 14); + this.LblLunarDay.TabIndex = 1; + this.LblLunarDay.Text = "初一"; + this.LblLunarDay.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // LblState + // + this.LblState.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.LblState.ForeColor = System.Drawing.Color.White; + this.LblState.Location = new System.Drawing.Point(0, 0); + this.LblState.Name = "LblState"; + this.LblState.Size = new System.Drawing.Size(17, 17); + this.LblState.TabIndex = 2; + this.LblState.Text = "休"; + this.LblState.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.LblState.Visible = false; + // + // LunarDay + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.LblState); + this.Controls.Add(this.LblLunarDay); + this.Controls.Add(this.LblDay); + this.Name = "LunarDay"; + this.Size = new System.Drawing.Size(78, 68); + this.Paint += new System.Windows.Forms.PaintEventHandler(this.LunarDay_Paint); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label LblDay; + private System.Windows.Forms.Label LblLunarDay; + private System.Windows.Forms.Label LblState; + } +} diff --git a/Source/MyTimeClock/TimeClock/Controls/LunarDay.cs b/Source/MyTimeClock/TimeClock/Controls/LunarDay.cs new file mode 100644 index 0000000..1a1c0f6 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/Controls/LunarDay.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ryControls; +using System.Drawing.Drawing2D; + +namespace TimeClock +{ + public partial class LunarDay : UserControl + { + public LunarDay() + { + InitializeComponent(); + LblDay.Left = border_width; + LblDay.Width = Width - border_width - border_width; + LblLunarDay.Left = border_width; + LblLunarDay.Width = Width - border_width - border_width; + LblDay.Click += LblDay_Click; + LblLunarDay.Click += LblDay_Click; + LblState.Location = new Point(border_width, border_width); + LblState.Visible = false; + } + int border_width = 4; + public DateTime Date { get; set; } = DateTime.Now; + private void LblDay_Click(object sender, EventArgs e) + { + base.OnClick(e); ; + } + /// + /// 设置休息状态,1为休息,-1为上班,其它为不显示 + /// + /// + public void SetRestState(int i) + { + if (i == -1) { LblState.Text = "班"; LblState.BackColor = Color.FromArgb(234, 131, 117); LblState.Visible = true; } + else if (i == 1) { LblState.Text = "休"; LblState.BackColor = Color.FromArgb(0, 192, 0); LblState.Visible = true; } + else { LblState.Visible = false; } + } + private int _day = 1; + /// + /// 日期 + /// + public int Day + { + get { return _day; } + set { _day = value;LblDay.Text = _day.ToString(); } + } + /// + /// 农历 + /// + public string Lunar_Day + { + get { return LblLunarDay.Text; } + set { LblLunarDay.Text = value; } + } + /// + /// 阳历日期字体颜色 + /// + public Color Day_ForeColor + { + get { return LblDay.ForeColor; } + set { LblDay.ForeColor = value; } + } + /// + /// 阳历日期字体 + /// + public Font Day_Font + { + get { return LblDay.Font; } + set { LblDay.Font = value; } + } + /// + /// 农历日期字体 + /// + public Font Lunar_Day_Font + { + get { return LblLunarDay.Font; } + set { LblLunarDay.Font = value; } + } + /// + /// 农历部分字体颜色 + /// + public Color Lunar_Day_ForeColor + { + get { return LblLunarDay.ForeColor; } + set { LblLunarDay.ForeColor = value; } + } + private bool _Selected = false; + public bool Selected + { + get { return _Selected; } + set { _Selected = value;Refresh(); } + } + private void LunarDay_Paint(object sender, PaintEventArgs e) + { + if(Selected) + e.Graphics.DrawRectangle(new Pen(Color.DeepSkyBlue,border_width), new Rectangle(0, 0, this.Width, this.Height)); + } + private void DrawBorder(Graphics g, Rectangle rect, RoundStyle roundStyle, int radius) + { + rect.Width -= 1; + rect.Height -= 1; + using (GraphicsPath path =ryControls.Drawing.CreatePath(rect, radius, roundStyle, false)) + { + SolidBrush myBrush = new SolidBrush(Color.White); + using (Pen pen = new Pen(Color.Black)) + { + + g.FillPath(myBrush, path); + g.DrawPath(pen, path); + } + } + } + } +} diff --git a/Source/MyTimeClock/TimeClock/Controls/LunarDay.resx b/Source/MyTimeClock/TimeClock/Controls/LunarDay.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/Controls/LunarDay.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/Controls/Rili.Designer.cs b/Source/MyTimeClock/TimeClock/Controls/Rili.Designer.cs new file mode 100644 index 0000000..e50daeb --- /dev/null +++ b/Source/MyTimeClock/TimeClock/Controls/Rili.Designer.cs @@ -0,0 +1,193 @@ +namespace TimeClock.Controls +{ + partial class Rili + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.PnlWeek = new System.Windows.Forms.Panel(); + this.PnlDate = new System.Windows.Forms.Panel(); + this.PnlDay = new System.Windows.Forms.Panel(); + this.CbbMonth = new ryControls.RyComboBox(); + this.label6 = new System.Windows.Forms.Label(); + this.NumYear = new System.Windows.Forms.NumericUpDown(); + this.BtnMonthNext = new System.Windows.Forms.Button(); + this.BtnMonthPrev = new System.Windows.Forms.Button(); + this.BtnToday = new System.Windows.Forms.Button(); + this.PnlDate.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumYear)).BeginInit(); + this.SuspendLayout(); + // + // PnlWeek + // + this.PnlWeek.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlWeek.Location = new System.Drawing.Point(0, 25); + this.PnlWeek.Name = "PnlWeek"; + this.PnlWeek.Size = new System.Drawing.Size(645, 25); + this.PnlWeek.TabIndex = 0; + // + // PnlDate + // + this.PnlDate.Controls.Add(this.BtnToday); + this.PnlDate.Controls.Add(this.BtnMonthPrev); + this.PnlDate.Controls.Add(this.BtnMonthNext); + this.PnlDate.Controls.Add(this.CbbMonth); + this.PnlDate.Controls.Add(this.label6); + this.PnlDate.Controls.Add(this.NumYear); + this.PnlDate.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlDate.Location = new System.Drawing.Point(0, 0); + this.PnlDate.Name = "PnlDate"; + this.PnlDate.Size = new System.Drawing.Size(645, 25); + this.PnlDate.TabIndex = 1; + // + // PnlDay + // + this.PnlDay.Dock = System.Windows.Forms.DockStyle.Fill; + this.PnlDay.Location = new System.Drawing.Point(0, 50); + this.PnlDay.Name = "PnlDay"; + this.PnlDay.Size = new System.Drawing.Size(645, 369); + this.PnlDay.TabIndex = 1; + // + // CbbMonth + // + this.CbbMonth.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbMonth.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbMonth.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbMonth.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbMonth.FormattingEnabled = true; + this.CbbMonth.Items.AddRange(new object[] { + "一月", + "二月", + "三月", + "四月", + "五月", + "六月", + "七月", + "八月", + "九月", + "十月", + "十一月", + "十二月"}); + this.CbbMonth.Location = new System.Drawing.Point(128, 1); + this.CbbMonth.Name = "CbbMonth"; + this.CbbMonth.Size = new System.Drawing.Size(91, 24); + this.CbbMonth.TabIndex = 7; + this.CbbMonth.SelectedIndexChanged += new System.EventHandler(this.CbbMonth_SelectedIndexChanged); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(85, 7); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(17, 12); + this.label6.TabIndex = 6; + this.label6.Text = "年"; + // + // NumYear + // + this.NumYear.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumYear.Location = new System.Drawing.Point(3, 1); + this.NumYear.Maximum = new decimal(new int[] { + 2100, + 0, + 0, + 0}); + this.NumYear.Minimum = new decimal(new int[] { + 1901, + 0, + 0, + 0}); + this.NumYear.Name = "NumYear"; + this.NumYear.Size = new System.Drawing.Size(76, 23); + this.NumYear.TabIndex = 5; + this.NumYear.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumYear.Value = new decimal(new int[] { + 1901, + 0, + 0, + 0}); + this.NumYear.ValueChanged += new System.EventHandler(this.NumYear_ValueChanged); + // + // BtnMonthNext + // + this.BtnMonthNext.Location = new System.Drawing.Point(221, 1); + this.BtnMonthNext.Name = "BtnMonthNext"; + this.BtnMonthNext.Size = new System.Drawing.Size(21, 23); + this.BtnMonthNext.TabIndex = 8; + this.BtnMonthNext.Text = "▶"; + this.BtnMonthNext.UseVisualStyleBackColor = true; + this.BtnMonthNext.Click += new System.EventHandler(this.BtnMonthNext_Click); + // + // BtnMonthPrev + // + this.BtnMonthPrev.Location = new System.Drawing.Point(105, 1); + this.BtnMonthPrev.Name = "BtnMonthPrev"; + this.BtnMonthPrev.Size = new System.Drawing.Size(21, 23); + this.BtnMonthPrev.TabIndex = 9; + this.BtnMonthPrev.Text = "◀"; + this.BtnMonthPrev.UseVisualStyleBackColor = true; + this.BtnMonthPrev.Click += new System.EventHandler(this.BtnMonthPrev_Click); + // + // BtnToday + // + this.BtnToday.Location = new System.Drawing.Point(248, 1); + this.BtnToday.Name = "BtnToday"; + this.BtnToday.Size = new System.Drawing.Size(60, 23); + this.BtnToday.TabIndex = 10; + this.BtnToday.Text = "今天"; + this.BtnToday.UseVisualStyleBackColor = true; + this.BtnToday.Click += new System.EventHandler(this.BtnToday_Click); + // + // Rili + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.PnlDay); + this.Controls.Add(this.PnlWeek); + this.Controls.Add(this.PnlDate); + this.Name = "Rili"; + this.Size = new System.Drawing.Size(645, 419); + this.PnlDate.ResumeLayout(false); + this.PnlDate.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumYear)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel PnlWeek; + private System.Windows.Forms.Panel PnlDay; + private System.Windows.Forms.Panel PnlDate; + private ryControls.RyComboBox CbbMonth; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.NumericUpDown NumYear; + private System.Windows.Forms.Button BtnMonthPrev; + private System.Windows.Forms.Button BtnMonthNext; + private System.Windows.Forms.Button BtnToday; + } +} diff --git a/Source/MyTimeClock/TimeClock/Controls/Rili.cs b/Source/MyTimeClock/TimeClock/Controls/Rili.cs new file mode 100644 index 0000000..0cd1b62 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/Controls/Rili.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ryCommon; + +namespace TimeClock.Controls +{ + public partial class Rili : UserControl + { + private List list_lunar = new List(); + public Rili() + { + InitializeComponent(); + ryCommon.ListX list = new ListX(PnlDay) + { + MaxColCount = 7, + spaceX = 1, + spaceY = 1 + }; + int day_width = 0; + for (int i = 0; i < 35; i++) + { + LunarDay lunarday = new LunarDay + { + Day = i + 1, + Lunar_Day = (i + 1).ToString(), + //Size = new Size(120, 120) + }; + lunarday.Click += Lunarday_Click; + if (day_width == 0) + { + day_width = lunarday.Width; + } + list_lunar.Add(lunarday); + list.Add(lunarday); + } + list.ReDraw(); + for(int i=0;i<7;i++) + { + Label lbl_week = new Label + { + AutoSize = false, + TextAlign = ContentAlignment.MiddleCenter, + Text = "星期" + RyDate.GetWeekName(i + 1), + Left = i * day_width, + Width = day_width, + Parent = PnlWeek + }; + } + DateTime = DateTime.Now; + } + + private void Lunarday_Click(object sender, EventArgs e) + { + //throw new NotImplementedException(); + LunarDay lunarday=(LunarDay)sender; + //if(lunarday.Date.Month!=DateTime.Month) + //{ + // DateTime = lunarday.Date; + //} + for (int i = 0; i < list_lunar.Count; i++) + { + if(list_lunar[i]==lunarday) + { + list_lunar[i].Selected=true; + } + else { list_lunar[i].Selected = false ; } + } + } + + private DateTime _DateTime = DateTime.Now; + public DateTime DateTime + { + get { return _DateTime; } + set + { + if (_DateTime != value) + { + _DateTime = value; + ChangeDate(value); + } + } + + } + private void ChangeDate(DateTime dt) + { + ProcUse = true; + NumYear.Value = dt.Year; + CbbMonth.SelectedIndex = dt.Month - 1; + ProcUse = false; + var month_date= RyDate.GetMonthStart(dt); + var start_week = RyDate.GetWeek_index(month_date); + var dt_now = DateTime.Now; + for (int i = 0; i <35; i++) + { + var dt_2 = month_date.AddDays(i+1- start_week); + var lunar = list_lunar[i]; + lunar.Day = dt_2.Day; + var ChinaHoliday= ChinaDate.GetChinaHoliday(dt_2); + var WorldHoliday = ChinaDate.GetHoliday(dt_2); + var JieqiHoliday = ChinaDate.GetSolarTerm(dt_2); + + bool Holiday = false; + string Holiday_Str = ""; + if (ChinaHoliday != "") + { Holiday_Str = ChinaHoliday;} + if (WorldHoliday != "") + { Holiday_Str += " " + WorldHoliday; } + if (JieqiHoliday!="") + { Holiday_Str += " " + JieqiHoliday; } + if (Holiday_Str!="") + { + lunar.Lunar_Day = Holiday_Str.Trim(); lunar.Lunar_Day_ForeColor = Color.Orange; Holiday = true; + } + else + { + var lunar_day_str = ChinaDate.GetDay(dt_2); + if (lunar_day_str == "初一") + { + lunar.Lunar_Day = ChinaDate.GetMonth(dt_2); + } + else + { + lunar.Lunar_Day = lunar_day_str; + } + } + lunar.Date = dt_2; + if (dt_2.Month!=dt.Month)//不是当月 + { + lunar.Day_ForeColor = Color.FromArgb(190,190,190); + if (!Holiday) + { lunar.Lunar_Day_ForeColor = Color.FromArgb(190, 190, 190); } + lunar.BackColor = Color.White; + } + else + { + if (dt_2.Date == dt_now.Date) + { + lunar.BackColor = Color.FromArgb(47, 152, 222); + lunar.Day_ForeColor = Color.White; + if (!Holiday) + { lunar.Lunar_Day_ForeColor = Color.White; } + } + else + { + lunar.Day_ForeColor = Color.Black; + if (!Holiday) + { lunar.Lunar_Day_ForeColor = Color.Black; } + lunar.BackColor = Color.White; + } + } + } + } + bool ProcUse = false; + private void NumYear_ValueChanged(object sender, EventArgs e) + { + if (ProcUse) { return; } + DateTime = new DateTime(NumYear.Value.ToInt(), CbbMonth.SelectedIndex + 1, 1); + } + + private void CbbMonth_SelectedIndexChanged(object sender, EventArgs e) + { + if (ProcUse) { return; } + DateTime = new DateTime(NumYear.Value.ToInt(), CbbMonth.SelectedIndex + 1, 1); + } + + private void BtnMonthPrev_Click(object sender, EventArgs e) + { + DateTime = DateTime.AddMonths(-1); + } + + private void BtnMonthNext_Click(object sender, EventArgs e) + { + DateTime = DateTime.AddMonths(1); + } + + private void BtnToday_Click(object sender, EventArgs e) + { + DateTime = DateTime.Now; + } + } +} diff --git a/Source/MyTimeClock/TimeClock/Controls/Rili.resx b/Source/MyTimeClock/TimeClock/Controls/Rili.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/Controls/Rili.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/Custom.cs b/Source/MyTimeClock/TimeClock/DbOp/Custom.cs new file mode 100644 index 0000000..9f64c93 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/Custom.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace TimeClock.DbOp +{ + public class Custom + { + /// + /// 动作列表 + /// + public static List ActionList = new List(); + /// + /// 是否显示上班快速提醒 + /// + public static bool WorkQuickTip { get; set; } = true; + /// + /// 软件运行名 + /// + public static string AutoRunName { get; set; } = "TimeClock"; + /// + /// 软件参数 + /// + public static string AutoRunPram { get; set; } = "q"; + /// + /// 软件名 + /// + public static string AppTitle { get; set; } = "定时提醒助手"; + /// + /// 软件网址 + /// + public static string Soft_Url { get; set; } = "http://www.itrycn.com"; + /// + /// 是否显示捐赠方式 + /// + public static bool DonateVisabled { get; set; } = true; + /// + /// 关于界面内容,只有不显示捐赠方式时,才会显示该提示。 + /// + public static string AboutText { get; set; } = "#softname# #ver#\r\n强大的定时提醒工具,丰富的提醒类别,满足各种需求。"; + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.Designer.cs new file mode 100644 index 0000000..43f676f --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.Designer.cs @@ -0,0 +1,314 @@ +namespace TimeClock.DbOp +{ + partial class FrmAddHoliday + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.label1 = new System.Windows.Forms.Label(); + this.txtName = new ryControls.TextBoxEx2(); + this.CbbSType = new ryControls.RyComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.NumStartYear = new System.Windows.Forms.NumericUpDown(); + this.NumEndYear = new System.Windows.Forms.NumericUpDown(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.TxtTime = new ryControls.TextBoxEx2(); + this.label6 = new System.Windows.Forms.Label(); + this.TxtDes = new ryControls.TextBoxEx2(); + this.NumSorts = new System.Windows.Forms.NumericUpDown(); + this.label7 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.NumStartYear)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumEndYear)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumSorts)).BeginInit(); + this.SuspendLayout(); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.ForeColor = System.Drawing.Color.White; + this.btnCancel.Location = new System.Drawing.Point(263, 319); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(65, 27); + this.btnCancel.TabIndex = 5; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.ForeColor = System.Drawing.Color.White; + this.btnOK.Location = new System.Drawing.Point(192, 319); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(65, 27); + this.btnOK.TabIndex = 4; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 7; + this.label1.Text = "节日名称"; + // + // txtName + // + this.txtName.BackColor = System.Drawing.Color.White; + this.txtName.EmptyText = ""; + this.txtName.Location = new System.Drawing.Point(10, 24); + this.txtName.MaxLength = 999999999; + this.txtName.Multiline = false; + this.txtName.Name = "txtName"; + this.txtName.OnlyNumeric = false; + this.txtName.PasswordChar = '\0'; + this.txtName.ReadOnly = false; + this.txtName.SelectedText = ""; + this.txtName.SelectionLength = 0; + this.txtName.SelectionStart = 0; + this.txtName.Size = new System.Drawing.Size(231, 25); + this.txtName.TabIndex = 6; + this.txtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.txtName.ToolTip = ""; + // + // CbbSType + // + this.CbbSType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbSType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbSType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbSType.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbSType.FormattingEnabled = true; + this.CbbSType.Items.AddRange(new object[] { + "公历节日", + "农历节日", + "星期节日", + "节气"}); + this.CbbSType.Location = new System.Drawing.Point(10, 67); + this.CbbSType.Name = "CbbSType"; + this.CbbSType.Size = new System.Drawing.Size(143, 24); + this.CbbSType.TabIndex = 10; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(8, 52); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 9; + this.label2.Text = "节日类型"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(161, 52); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 11; + this.label3.Text = "开始年份"; + // + // NumStartYear + // + this.NumStartYear.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumStartYear.Location = new System.Drawing.Point(163, 67); + this.NumStartYear.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NumStartYear.Name = "NumStartYear"; + this.NumStartYear.Size = new System.Drawing.Size(78, 23); + this.NumStartYear.TabIndex = 12; + this.NumStartYear.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // NumEndYear + // + this.NumEndYear.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumEndYear.Location = new System.Drawing.Point(247, 67); + this.NumEndYear.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NumEndYear.Name = "NumEndYear"; + this.NumEndYear.Size = new System.Drawing.Size(78, 23); + this.NumEndYear.TabIndex = 14; + this.NumEndYear.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumEndYear.Value = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(245, 52); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 12); + this.label4.TabIndex = 13; + this.label4.Text = "结束年份"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(8, 96); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(53, 12); + this.label5.TabIndex = 16; + this.label5.Text = "节日时间"; + // + // TxtTime + // + this.TxtTime.BackColor = System.Drawing.Color.White; + this.TxtTime.EmptyText = ""; + this.TxtTime.Location = new System.Drawing.Point(10, 111); + this.TxtTime.MaxLength = 999999999; + this.TxtTime.Multiline = false; + this.TxtTime.Name = "TxtTime"; + this.TxtTime.OnlyNumeric = false; + this.TxtTime.PasswordChar = '\0'; + this.TxtTime.ReadOnly = false; + this.TxtTime.SelectedText = ""; + this.TxtTime.SelectionLength = 0; + this.TxtTime.SelectionStart = 0; + this.TxtTime.Size = new System.Drawing.Size(315, 25); + this.TxtTime.TabIndex = 15; + this.TxtTime.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtTime.ToolTip = ""; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(8, 139); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(53, 12); + this.label6.TabIndex = 17; + this.label6.Text = "节日说明"; + // + // TxtDes + // + this.TxtDes.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtDes.BackColor = System.Drawing.Color.White; + this.TxtDes.EmptyText = ""; + this.TxtDes.Location = new System.Drawing.Point(10, 154); + this.TxtDes.MaxLength = 999999999; + this.TxtDes.Multiline = true; + this.TxtDes.Name = "TxtDes"; + this.TxtDes.OnlyNumeric = false; + this.TxtDes.PasswordChar = '\0'; + this.TxtDes.ReadOnly = false; + this.TxtDes.SelectedText = ""; + this.TxtDes.SelectionLength = 0; + this.TxtDes.SelectionStart = 0; + this.TxtDes.Size = new System.Drawing.Size(315, 159); + this.TxtDes.TabIndex = 18; + this.TxtDes.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtDes.ToolTip = ""; + // + // NumSorts + // + this.NumSorts.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumSorts.Location = new System.Drawing.Point(247, 24); + this.NumSorts.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NumSorts.Name = "NumSorts"; + this.NumSorts.Size = new System.Drawing.Size(78, 23); + this.NumSorts.TabIndex = 20; + this.NumSorts.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(245, 9); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(29, 12); + this.label7.TabIndex = 19; + this.label7.Text = "排序"; + // + // FrmAddHoliday + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(338, 356); + this.Controls.Add(this.NumSorts); + this.Controls.Add(this.label7); + this.Controls.Add(this.TxtDes); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.TxtTime); + this.Controls.Add(this.NumEndYear); + this.Controls.Add(this.label4); + this.Controls.Add(this.NumStartYear); + this.Controls.Add(this.label3); + this.Controls.Add(this.CbbSType); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtName); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Name = "FrmAddHoliday"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "新增"; + ((System.ComponentModel.ISupportInitialize)(this.NumStartYear)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumEndYear)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumSorts)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.ButtonEx btnCancel; + private ryControls.ButtonEx btnOK; + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 txtName; + private ryControls.RyComboBox CbbSType; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.NumericUpDown NumStartYear; + private System.Windows.Forms.NumericUpDown NumEndYear; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private ryControls.TextBoxEx2 TxtTime; + private System.Windows.Forms.Label label6; + private ryControls.TextBoxEx2 TxtDes; + private System.Windows.Forms.NumericUpDown NumSorts; + private System.Windows.Forms.Label label7; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.cs new file mode 100644 index 0000000..d379587 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.cs @@ -0,0 +1,94 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmAddHoliday : Form + { + public ModalForm mr = null; + public string tableName = "Holidays"; + public int isAdd = 1; + public string selectId = "-1"; + public FrmAddHoliday() + { + InitializeComponent(); + CbbSType.SelectedIndex = 0; + } + #region 需要修改 + public void GetInfo(string id) + { + selectId = id; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Holidays_ConnStr) == 1) + { + DataSet ds = db.ReadData(tableName, id); + if (mydb.HaveData(ds)) + { + DataRow reader = ds.Tables[0].Rows[0]; + #region 读取信息 + txtName.Text = reader["Name"].ToString(); + NumSorts.Value = reader["Sorts"].ToInt(); + TxtDes.Text = reader["Des"].ToString(); + NumStartYear.Value = reader["startYear"].ToInt(); + NumEndYear.Value = reader["endYear"].ToInt(); + CbbSType.SelectedIndex= reader["sType"].ToInt(); + TxtTime.Text= reader["Holiday_Time"].ToString(); + #endregion + } + } + db.Free(); + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if (txtName.Text == "") + { + MessageBox.Show("节日名称不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + if (TxtTime.Text.Length != 4) + { + MessageBox.Show("节日时间只能为4位数字。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + RyQuickSQL mySQL = new RyQuickSQL(tableName); + mySQL.AddField("Name", txtName.Text); + mySQL.AddField("Sorts", NumSorts.Value); + mySQL.AddField("startYear", NumStartYear.Value); + mySQL.AddField("endYear", NumEndYear.Value); + mySQL.AddField("sType", CbbSType.SelectedIndex); + mySQL.AddField("Holiday_Time", TxtTime.Text); + mySQL.AddField("Des", TxtDes.Text); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Holidays_ConnStr) == 1) + { + if (isAdd >= 1) + { + mySQL.AddField("addTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetInsertSQL(), db.GetParameter(mySQL)); + } + else + { + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + selectId, db.GetParameter(mySQL)); + } + } + ModalForm.SetDialogResult(this, mr, DialogResult.OK); + } + #endregion + + private void BtnCancel_Click(object sender, EventArgs e) + { + ModalForm.SetDialogResult(this, mr, DialogResult.Cancel); + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddHoliday.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.Designer.cs new file mode 100644 index 0000000..cf7d3ec --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.Designer.cs @@ -0,0 +1,541 @@ +using ryControls; + +namespace TimeClock.DbOp +{ + partial class FrmAddTodo + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.label1 = new System.Windows.Forms.Label(); + this.txtName = new ryControls.TextBoxEx2(); + this.label6 = new System.Windows.Forms.Label(); + this.NumSorts = new System.Windows.Forms.NumericUpDown(); + this.label7 = new System.Windows.Forms.Label(); + this.ChkToDoTime = new System.Windows.Forms.CheckBox(); + this.dateTimePicker1 = new ryControls.DateTimePickerEX(); + this.dateTimePicker2 = new ryControls.DateTimePickerEX(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.CbbSType = new ryControls.RyComboBox(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.linkLabel3 = new System.Windows.Forms.LinkLabel(); + this.linkLabel4 = new System.Windows.Forms.LinkLabel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panelEx1 = new ryControls.PanelEx(); + this.txtContent = new System.Windows.Forms.RichTextBox(); + this.MenuNote = new System.Windows.Forms.ContextMenuStrip(this.components); + this.撤销ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.重做ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.剪切ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.复制ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.粘贴ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.全选ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.字体ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.字体颜色ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); + this.标为重点ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.标为常规ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.插入ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.插入时间ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.fontDialog1 = new System.Windows.Forms.FontDialog(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + ((System.ComponentModel.ISupportInitialize)(this.NumSorts)).BeginInit(); + this.panel1.SuspendLayout(); + this.panelEx1.SuspendLayout(); + this.MenuNote.SuspendLayout(); + this.SuspendLayout(); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnCancel.Location = new System.Drawing.Point(462, 429); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(65, 27); + this.btnCancel.TabIndex = 5; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnOK.Location = new System.Drawing.Point(391, 429); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(65, 27); + this.btnOK.TabIndex = 4; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 7; + this.label1.Text = "待办名称"; + // + // txtName + // + this.txtName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtName.BackColor = System.Drawing.Color.White; + this.txtName.EmptyText = ""; + this.txtName.Location = new System.Drawing.Point(10, 24); + this.txtName.MaxLength = 999999999; + this.txtName.Multiline = false; + this.txtName.Name = "txtName"; + this.txtName.OnlyNumeric = false; + this.txtName.PasswordChar = '\0'; + this.txtName.ReadOnly = false; + this.txtName.SelectedText = ""; + this.txtName.SelectionLength = 0; + this.txtName.SelectionStart = 0; + this.txtName.Size = new System.Drawing.Size(354, 25); + this.txtName.TabIndex = 6; + this.txtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.txtName.ToolTip = ""; + this.txtName.WordWrap = true; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(8, 104); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(29, 12); + this.label6.TabIndex = 17; + this.label6.Text = "备注"; + // + // NumSorts + // + this.NumSorts.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NumSorts.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumSorts.Location = new System.Drawing.Point(466, 26); + this.NumSorts.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NumSorts.Name = "NumSorts"; + this.NumSorts.Size = new System.Drawing.Size(62, 23); + this.NumSorts.TabIndex = 20; + this.NumSorts.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.NumSorts, "数值越大表示紧急程度越高,优先级越高。"); + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(464, 9); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(41, 12); + this.label7.TabIndex = 19; + this.label7.Text = "优先级"; + // + // ChkToDoTime + // + this.ChkToDoTime.AutoSize = true; + this.ChkToDoTime.Location = new System.Drawing.Point(10, 55); + this.ChkToDoTime.Name = "ChkToDoTime"; + this.ChkToDoTime.Size = new System.Drawing.Size(84, 16); + this.ChkToDoTime.TabIndex = 21; + this.ChkToDoTime.Text = "待办时间段"; + this.ChkToDoTime.UseVisualStyleBackColor = true; + this.ChkToDoTime.CheckedChanged += new System.EventHandler(this.ChkToDoTime_CheckedChanged); + // + // dateTimePicker1 + // + this.dateTimePicker1.Checked = false; + this.dateTimePicker1.CustomFormat = "yyyy-MM-dd dddd HH:mm"; + this.dateTimePicker1.Enabled = false; + this.dateTimePicker1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dateTimePicker1.Location = new System.Drawing.Point(34, 73); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.ShowCheckBox = true; + this.dateTimePicker1.Size = new System.Drawing.Size(225, 23); + this.dateTimePicker1.TabIndex = 22; + // + // dateTimePicker2 + // + this.dateTimePicker2.CustomFormat = "yyyy-MM-dd dddd HH:mm"; + this.dateTimePicker2.Enabled = false; + this.dateTimePicker2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dateTimePicker2.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dateTimePicker2.Location = new System.Drawing.Point(300, 73); + this.dateTimePicker2.Name = "dateTimePicker2"; + this.dateTimePicker2.ShowCheckBox = true; + this.dateTimePicker2.Size = new System.Drawing.Size(225, 23); + this.dateTimePicker2.TabIndex = 23; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(271, 79); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(17, 12); + this.label2.TabIndex = 24; + this.label2.Text = "到"; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(371, 9); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 25; + this.label3.Text = "完成程度"; + // + // CbbSType + // + this.CbbSType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CbbSType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbSType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbSType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbSType.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbSType.FormattingEnabled = true; + this.CbbSType.Location = new System.Drawing.Point(370, 24); + this.CbbSType.Name = "CbbSType"; + this.CbbSType.Size = new System.Drawing.Size(90, 24); + this.CbbSType.TabIndex = 26; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(5, 4); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(29, 12); + this.linkLabel1.TabIndex = 27; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "今天"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Location = new System.Drawing.Point(42, 4); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(29, 12); + this.linkLabel2.TabIndex = 28; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "明天"; + this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked); + // + // linkLabel3 + // + this.linkLabel3.AutoSize = true; + this.linkLabel3.Location = new System.Drawing.Point(79, 4); + this.linkLabel3.Name = "linkLabel3"; + this.linkLabel3.Size = new System.Drawing.Size(23, 12); + this.linkLabel3.TabIndex = 29; + this.linkLabel3.TabStop = true; + this.linkLabel3.Text = "3天"; + this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked); + // + // linkLabel4 + // + this.linkLabel4.AutoSize = true; + this.linkLabel4.Location = new System.Drawing.Point(110, 4); + this.linkLabel4.Name = "linkLabel4"; + this.linkLabel4.Size = new System.Drawing.Size(29, 12); + this.linkLabel4.TabIndex = 30; + this.linkLabel4.TabStop = true; + this.linkLabel4.Text = "一周"; + this.linkLabel4.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel4_LinkClicked); + // + // panel1 + // + this.panel1.Controls.Add(this.linkLabel1); + this.panel1.Controls.Add(this.linkLabel4); + this.panel1.Controls.Add(this.linkLabel2); + this.panel1.Controls.Add(this.linkLabel3); + this.panel1.Enabled = false; + this.panel1.Location = new System.Drawing.Point(300, 50); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(205, 22); + this.panel1.TabIndex = 31; + // + // panelEx1 + // + this.panelEx1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx1.Controls.Add(this.txtContent); + this.panelEx1.Location = new System.Drawing.Point(12, 119); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.Padding = new System.Windows.Forms.Padding(3); + this.panelEx1.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx1.Size = new System.Drawing.Size(515, 301); + this.panelEx1.TabIndex = 32; + this.panelEx1.TileBackColor = System.Drawing.Color.White; + // + // txtContent + // + this.txtContent.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtContent.ContextMenuStrip = this.MenuNote; + this.txtContent.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtContent.Location = new System.Drawing.Point(3, 3); + this.txtContent.Name = "txtContent"; + this.txtContent.Size = new System.Drawing.Size(509, 295); + this.txtContent.TabIndex = 0; + this.txtContent.Text = ""; + // + // MenuNote + // + this.MenuNote.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.撤销ToolStripMenuItem, + this.重做ToolStripMenuItem, + this.toolStripMenuItem1, + this.剪切ToolStripMenuItem, + this.复制ToolStripMenuItem, + this.粘贴ToolStripMenuItem, + this.删除ToolStripMenuItem, + this.toolStripMenuItem2, + this.全选ToolStripMenuItem, + this.toolStripMenuItem3, + this.字体ToolStripMenuItem, + this.字体颜色ToolStripMenuItem, + this.toolStripMenuItem4, + this.标为重点ToolStripMenuItem, + this.标为常规ToolStripMenuItem, + this.插入ToolStripMenuItem}); + this.MenuNote.Name = "MenuNote"; + this.MenuNote.Size = new System.Drawing.Size(146, 292); + this.MenuNote.Opening += new System.ComponentModel.CancelEventHandler(this.MenuNote_Opening); + // + // 撤销ToolStripMenuItem + // + this.撤销ToolStripMenuItem.Name = "撤销ToolStripMenuItem"; + this.撤销ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Z"; + this.撤销ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.撤销ToolStripMenuItem.Text = "撤销"; + this.撤销ToolStripMenuItem.Click += new System.EventHandler(this.撤销ToolStripMenuItem_Click); + // + // 重做ToolStripMenuItem + // + this.重做ToolStripMenuItem.Name = "重做ToolStripMenuItem"; + this.重做ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Y"; + this.重做ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.重做ToolStripMenuItem.Text = "重做"; + this.重做ToolStripMenuItem.Click += new System.EventHandler(this.重做ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(142, 6); + // + // 剪切ToolStripMenuItem + // + this.剪切ToolStripMenuItem.Name = "剪切ToolStripMenuItem"; + this.剪切ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+X"; + this.剪切ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.剪切ToolStripMenuItem.Text = "剪切"; + this.剪切ToolStripMenuItem.Click += new System.EventHandler(this.剪切ToolStripMenuItem_Click); + // + // 复制ToolStripMenuItem + // + this.复制ToolStripMenuItem.Name = "复制ToolStripMenuItem"; + this.复制ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; + this.复制ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.复制ToolStripMenuItem.Text = "复制"; + this.复制ToolStripMenuItem.Click += new System.EventHandler(this.复制ToolStripMenuItem_Click); + // + // 粘贴ToolStripMenuItem + // + this.粘贴ToolStripMenuItem.Name = "粘贴ToolStripMenuItem"; + this.粘贴ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V"; + this.粘贴ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.粘贴ToolStripMenuItem.Text = "粘贴"; + this.粘贴ToolStripMenuItem.Click += new System.EventHandler(this.粘贴ToolStripMenuItem_Click); + // + // 删除ToolStripMenuItem + // + this.删除ToolStripMenuItem.Name = "删除ToolStripMenuItem"; + this.删除ToolStripMenuItem.ShortcutKeyDisplayString = "Delete"; + this.删除ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.删除ToolStripMenuItem.Text = "删除"; + this.删除ToolStripMenuItem.Click += new System.EventHandler(this.删除ToolStripMenuItem_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(142, 6); + // + // 全选ToolStripMenuItem + // + this.全选ToolStripMenuItem.Name = "全选ToolStripMenuItem"; + this.全选ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+A"; + this.全选ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.全选ToolStripMenuItem.Text = "全选"; + this.全选ToolStripMenuItem.Click += new System.EventHandler(this.全选ToolStripMenuItem_Click); + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(142, 6); + // + // 字体ToolStripMenuItem + // + this.字体ToolStripMenuItem.Name = "字体ToolStripMenuItem"; + this.字体ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.字体ToolStripMenuItem.Text = "字体"; + this.字体ToolStripMenuItem.Click += new System.EventHandler(this.字体ToolStripMenuItem_Click); + // + // 字体颜色ToolStripMenuItem + // + this.字体颜色ToolStripMenuItem.Name = "字体颜色ToolStripMenuItem"; + this.字体颜色ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.字体颜色ToolStripMenuItem.Text = "字体颜色"; + this.字体颜色ToolStripMenuItem.Click += new System.EventHandler(this.字体颜色ToolStripMenuItem_Click); + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(142, 6); + // + // 标为重点ToolStripMenuItem + // + this.标为重点ToolStripMenuItem.Name = "标为重点ToolStripMenuItem"; + this.标为重点ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.标为重点ToolStripMenuItem.Text = "标为重点"; + this.标为重点ToolStripMenuItem.Click += new System.EventHandler(this.标为重点ToolStripMenuItem_Click); + // + // 标为常规ToolStripMenuItem + // + this.标为常规ToolStripMenuItem.Name = "标为常规ToolStripMenuItem"; + this.标为常规ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.标为常规ToolStripMenuItem.Text = "标为常规"; + this.标为常规ToolStripMenuItem.Click += new System.EventHandler(this.标为常规ToolStripMenuItem_Click); + // + // 插入ToolStripMenuItem + // + this.插入ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.插入时间ToolStripMenuItem}); + this.插入ToolStripMenuItem.Name = "插入ToolStripMenuItem"; + this.插入ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.插入ToolStripMenuItem.Text = "插入"; + // + // 插入时间ToolStripMenuItem + // + this.插入时间ToolStripMenuItem.Name = "插入时间ToolStripMenuItem"; + this.插入时间ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.插入时间ToolStripMenuItem.Text = "插入时间"; + this.插入时间ToolStripMenuItem.Click += new System.EventHandler(this.插入时间ToolStripMenuItem_Click); + // + // FrmAddTodo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(541, 463); + this.Controls.Add(this.panelEx1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.CbbSType); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.dateTimePicker2); + this.Controls.Add(this.dateTimePicker1); + this.Controls.Add(this.ChkToDoTime); + this.Controls.Add(this.NumSorts); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtName); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Name = "FrmAddTodo"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "新增"; + this.Load += new System.EventHandler(this.FrmAddTodo_Load); + ((System.ComponentModel.ISupportInitialize)(this.NumSorts)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panelEx1.ResumeLayout(false); + this.MenuNote.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.ButtonEx btnCancel; + private ryControls.ButtonEx btnOK; + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 txtName; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.NumericUpDown NumSorts; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.CheckBox ChkToDoTime; + private DateTimePickerEX dateTimePicker1; + private DateTimePickerEX dateTimePicker2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private ryControls.RyComboBox CbbSType; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.LinkLabel linkLabel3; + private System.Windows.Forms.LinkLabel linkLabel4; + private System.Windows.Forms.Panel panel1; + private ryControls.PanelEx panelEx1; + private System.Windows.Forms.RichTextBox txtContent; + private System.Windows.Forms.ContextMenuStrip MenuNote; + private System.Windows.Forms.ToolStripMenuItem 撤销ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 重做ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 剪切ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 复制ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 粘贴ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem 全选ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem 标为重点ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 标为常规ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 字体颜色ToolStripMenuItem; + private System.Windows.Forms.ColorDialog colorDialog1; + private System.Windows.Forms.ToolStripMenuItem 字体ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; + private System.Windows.Forms.FontDialog fontDialog1; + private System.Windows.Forms.ToolStripMenuItem 插入ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 插入时间ToolStripMenuItem; + private System.Windows.Forms.ToolTip toolTip1; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.cs new file mode 100644 index 0000000..1418cd0 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.cs @@ -0,0 +1,285 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmAddTodo : Form + { + public ModalForm mr = null; + public string tableName = "ToDo"; + public int isAdd = 1; + public string selectId = "-1"; + public FrmAddTodo() + { + InitializeComponent(); + CbbSType.Items.AddRange(new StateInfo[] { + new StateInfo { Text = "未完成",id=0 }, + new StateInfo { Text = "已完成",id=100 }, + new StateInfo { Text = "任务作废",id=-1 } + }); + CbbSType.SelectedIndex = 0; + dateTimePicker1.Value = DateTime.Now.Date; + } + DataRow base_info; + #region 需要修改 + public void GetInfo(string id) + { + selectId = id; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1) + { + DataSet ds = db.ReadData(tableName, id); + if (mydb.HaveData(ds)) + { + DataRow reader = ds.Tables[0].Rows[0]; + base_info = reader; + #region 读取信息 + txtName.Text = reader["Name"].ToString(); + NumSorts.Value = reader["Sorts"].ToInt(); + txtContent.Rtf = reader["des_rtf"].ToString(); + var startTime= reader["startTime"].ToInt64(); + var endTime = reader["endTime"].ToInt64(); + dateTimePicker1.Checked = startTime != 0; + dateTimePicker2.Checked = endTime != 0; + var dt_base = new DateTime(1970, 1, 1); + dateTimePicker1.Value = dt_base.AddSeconds(startTime); + dateTimePicker2.Value = dt_base.AddSeconds(endTime); + if(startTime==0 && endTime==0) + { + ChkToDoTime.Checked = false; + } + else + { + ChkToDoTime.Checked = true; + } + var state = reader["state"].ToInt(); + for (int i = 0; i < CbbSType.Items.Count; i++) + { + StateInfo item = (StateInfo)CbbSType.Items[i]; + if (item.id == state) + { + CbbSType.SelectedIndex = i; + break; + } + } + #endregion + } + } + db.Free(); + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if (txtName.Text == "") + { + MessageBox.Show("待办名称不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + RyQuickSQL mySQL = new RyQuickSQL(tableName); + mySQL.AddField("Name", txtName.Text); + mySQL.AddField("Sorts", NumSorts.Value); + var dt_base = new DateTime(1970, 1, 1); + var startTime = (dateTimePicker1.Value- dt_base).TotalSeconds.ToInt64(); + var endTime = (dateTimePicker2.Value - dt_base).TotalSeconds.ToInt64(); + if (!dateTimePicker1.Checked) { startTime = 0; }; + if (!dateTimePicker2.Checked) { endTime = 0; }; + if (!ChkToDoTime.Checked) { startTime = 0; endTime = 0; } + mySQL.AddField("startTime", startTime); + mySQL.AddField("endTime", endTime); + var state = ((StateInfo)CbbSType.SelectedItem).id; + mySQL.AddField("state", state); + mySQL.AddField("Des", txtContent.Text); + mySQL.AddField("Des_rtf", txtContent.Rtf); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1) + { + if (isAdd >= 1) + { + mySQL.AddField("addTime", DateTime.Now); + mySQL.AddField("editTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetInsertSQL(), db.GetParameter(mySQL)); + } + else + { + mySQL.AddField("editTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + selectId, db.GetParameter(mySQL)); + string log_text = ""; + #region 设置变化日志 + if (txtName.Text != base_info["Name"].ToString()) + { + log_text += "标题从[" + base_info["Name"].ToString() + "]改为[" + txtName.Text + "],"; + } + if (NumSorts.Value.ToInt() != base_info["Sorts"].ToInt()) + { + log_text += "优先级从" + base_info["Sorts"].ToInt() + "调整为" + NumSorts.Value.ToInt() + ","; + } + if (txtContent.Rtf != base_info["des_rtf"].ToString()) + { + log_text += "内容,"; + } + #region 判断时间有没有变化 + var _base_startTime = base_info["startTime"].ToInt64(); + var _base_endTime = base_info["endTime"].ToInt64(); + if (startTime != _base_startTime || endTime != _base_endTime) + { + log_text += "待办时间从["+GetTimeStr(_base_startTime, _base_endTime) +"]调整为["+ GetTimeStr(startTime, endTime) + "],"; + } + string GetTimeStr(Int64 _startTime,Int64 _endTime) + { + if (_startTime == 0 && _endTime == 0) + { + return "无限期"; + } + else + { + string text = ""; + if (_startTime == 0) { text= "立即开始"; } + else { text= dt_base.AddSeconds(_startTime).ToString("yyyy-MM-dd dddd HH:mm:ss"); } + if (_endTime == 0) { text+= "->无限期"; } + else { return text += "->"+dt_base.AddSeconds(_endTime).ToString("yyyy -MM-dd dddd HH:mm:ss"); } + return text; + } + } + #endregion + if (state != base_info["state"].ToInt()) + { + TipInfo tip = new TipInfo { state = state }; + TipInfo base_tip = new TipInfo { state = base_info["state"].ToInt() }; + log_text += "状态从[" + base_tip.State_Str + "]调整为[" + tip.State_Str + "],"; + } + #endregion + Itrycn_Db.AddTodo_Log(db,selectId.ToInt(), "编辑待办", "编辑" + log_text.Trim(',')); + } + } + db.Free(); + ModalForm.SetDialogResult(this, mr, DialogResult.OK); + } + #endregion + + private void BtnCancel_Click(object sender, EventArgs e) + { + ModalForm.SetDialogResult(this, mr, DialogResult.Cancel); + } + + private void ChkToDoTime_CheckedChanged(object sender, EventArgs e) + { + dateTimePicker1.Enabled = ChkToDoTime.Checked; + dateTimePicker2.Enabled = ChkToDoTime.Checked; + panel1.Enabled = ChkToDoTime.Checked; + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(1).AddMilliseconds(-1); + } + + private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(2).AddMilliseconds(-1); + } + + private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(4).AddMilliseconds(-1); + } + + private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(8).AddMilliseconds(-1); + } + + private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Undo(); + } + + private void 重做ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Redo(); + } + + private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Cut(); + } + + private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Copy(); + } + + private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Paste(); + } + + private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectedText = ""; + } + + private void 全选ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectAll(); + } + + private void MenuNote_Opening(object sender, CancelEventArgs e) + { + 撤销ToolStripMenuItem.Enabled = txtContent.CanUndo; + 重做ToolStripMenuItem.Enabled = txtContent.CanRedo; + 剪切ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 复制ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 粘贴ToolStripMenuItem.Enabled = Clipboard.GetText() != ""; + 删除ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + } + + private void 标为重点ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectionBackColor = Color.Yellow; + } + + private void 标为常规ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectionBackColor = Color.Transparent; + } + + + private void 字体颜色ToolStripMenuItem_Click(object sender, EventArgs e) + { + colorDialog1.Color = txtContent.SelectionColor; + if (colorDialog1.ShowDialog()==DialogResult.OK) + { + txtContent.SelectionColor = colorDialog1.Color; + } + } + + private void 字体ToolStripMenuItem_Click(object sender, EventArgs e) + { + fontDialog1.Font = txtContent.SelectionFont; + if (fontDialog1.ShowDialog() == DialogResult.OK) + { + txtContent.SelectionFont = fontDialog1.Font; + } + } + + private void 插入时间ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectedText = DateTime.Now.ToDateTimeStr(); + } + + private void FrmAddTodo_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.resx new file mode 100644 index 0000000..145a23b --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddSticky.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 381, 17 + + + 17, 17 + + + 132, 17 + + + 259, 17 + + + 381, 17 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.Designer.cs new file mode 100644 index 0000000..cf7d3ec --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.Designer.cs @@ -0,0 +1,541 @@ +using ryControls; + +namespace TimeClock.DbOp +{ + partial class FrmAddTodo + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.label1 = new System.Windows.Forms.Label(); + this.txtName = new ryControls.TextBoxEx2(); + this.label6 = new System.Windows.Forms.Label(); + this.NumSorts = new System.Windows.Forms.NumericUpDown(); + this.label7 = new System.Windows.Forms.Label(); + this.ChkToDoTime = new System.Windows.Forms.CheckBox(); + this.dateTimePicker1 = new ryControls.DateTimePickerEX(); + this.dateTimePicker2 = new ryControls.DateTimePickerEX(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.CbbSType = new ryControls.RyComboBox(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.linkLabel3 = new System.Windows.Forms.LinkLabel(); + this.linkLabel4 = new System.Windows.Forms.LinkLabel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panelEx1 = new ryControls.PanelEx(); + this.txtContent = new System.Windows.Forms.RichTextBox(); + this.MenuNote = new System.Windows.Forms.ContextMenuStrip(this.components); + this.撤销ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.重做ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.剪切ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.复制ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.粘贴ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.全选ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.字体ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.字体颜色ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); + this.标为重点ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.标为常规ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.插入ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.插入时间ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.fontDialog1 = new System.Windows.Forms.FontDialog(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + ((System.ComponentModel.ISupportInitialize)(this.NumSorts)).BeginInit(); + this.panel1.SuspendLayout(); + this.panelEx1.SuspendLayout(); + this.MenuNote.SuspendLayout(); + this.SuspendLayout(); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnCancel.Location = new System.Drawing.Point(462, 429); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(65, 27); + this.btnCancel.TabIndex = 5; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnOK.Location = new System.Drawing.Point(391, 429); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(65, 27); + this.btnOK.TabIndex = 4; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 7; + this.label1.Text = "待办名称"; + // + // txtName + // + this.txtName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtName.BackColor = System.Drawing.Color.White; + this.txtName.EmptyText = ""; + this.txtName.Location = new System.Drawing.Point(10, 24); + this.txtName.MaxLength = 999999999; + this.txtName.Multiline = false; + this.txtName.Name = "txtName"; + this.txtName.OnlyNumeric = false; + this.txtName.PasswordChar = '\0'; + this.txtName.ReadOnly = false; + this.txtName.SelectedText = ""; + this.txtName.SelectionLength = 0; + this.txtName.SelectionStart = 0; + this.txtName.Size = new System.Drawing.Size(354, 25); + this.txtName.TabIndex = 6; + this.txtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.txtName.ToolTip = ""; + this.txtName.WordWrap = true; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(8, 104); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(29, 12); + this.label6.TabIndex = 17; + this.label6.Text = "备注"; + // + // NumSorts + // + this.NumSorts.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NumSorts.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumSorts.Location = new System.Drawing.Point(466, 26); + this.NumSorts.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NumSorts.Name = "NumSorts"; + this.NumSorts.Size = new System.Drawing.Size(62, 23); + this.NumSorts.TabIndex = 20; + this.NumSorts.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.NumSorts, "数值越大表示紧急程度越高,优先级越高。"); + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(464, 9); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(41, 12); + this.label7.TabIndex = 19; + this.label7.Text = "优先级"; + // + // ChkToDoTime + // + this.ChkToDoTime.AutoSize = true; + this.ChkToDoTime.Location = new System.Drawing.Point(10, 55); + this.ChkToDoTime.Name = "ChkToDoTime"; + this.ChkToDoTime.Size = new System.Drawing.Size(84, 16); + this.ChkToDoTime.TabIndex = 21; + this.ChkToDoTime.Text = "待办时间段"; + this.ChkToDoTime.UseVisualStyleBackColor = true; + this.ChkToDoTime.CheckedChanged += new System.EventHandler(this.ChkToDoTime_CheckedChanged); + // + // dateTimePicker1 + // + this.dateTimePicker1.Checked = false; + this.dateTimePicker1.CustomFormat = "yyyy-MM-dd dddd HH:mm"; + this.dateTimePicker1.Enabled = false; + this.dateTimePicker1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dateTimePicker1.Location = new System.Drawing.Point(34, 73); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.ShowCheckBox = true; + this.dateTimePicker1.Size = new System.Drawing.Size(225, 23); + this.dateTimePicker1.TabIndex = 22; + // + // dateTimePicker2 + // + this.dateTimePicker2.CustomFormat = "yyyy-MM-dd dddd HH:mm"; + this.dateTimePicker2.Enabled = false; + this.dateTimePicker2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dateTimePicker2.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dateTimePicker2.Location = new System.Drawing.Point(300, 73); + this.dateTimePicker2.Name = "dateTimePicker2"; + this.dateTimePicker2.ShowCheckBox = true; + this.dateTimePicker2.Size = new System.Drawing.Size(225, 23); + this.dateTimePicker2.TabIndex = 23; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(271, 79); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(17, 12); + this.label2.TabIndex = 24; + this.label2.Text = "到"; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(371, 9); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 25; + this.label3.Text = "完成程度"; + // + // CbbSType + // + this.CbbSType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CbbSType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbSType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbSType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbSType.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbSType.FormattingEnabled = true; + this.CbbSType.Location = new System.Drawing.Point(370, 24); + this.CbbSType.Name = "CbbSType"; + this.CbbSType.Size = new System.Drawing.Size(90, 24); + this.CbbSType.TabIndex = 26; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(5, 4); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(29, 12); + this.linkLabel1.TabIndex = 27; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "今天"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Location = new System.Drawing.Point(42, 4); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(29, 12); + this.linkLabel2.TabIndex = 28; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "明天"; + this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked); + // + // linkLabel3 + // + this.linkLabel3.AutoSize = true; + this.linkLabel3.Location = new System.Drawing.Point(79, 4); + this.linkLabel3.Name = "linkLabel3"; + this.linkLabel3.Size = new System.Drawing.Size(23, 12); + this.linkLabel3.TabIndex = 29; + this.linkLabel3.TabStop = true; + this.linkLabel3.Text = "3天"; + this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked); + // + // linkLabel4 + // + this.linkLabel4.AutoSize = true; + this.linkLabel4.Location = new System.Drawing.Point(110, 4); + this.linkLabel4.Name = "linkLabel4"; + this.linkLabel4.Size = new System.Drawing.Size(29, 12); + this.linkLabel4.TabIndex = 30; + this.linkLabel4.TabStop = true; + this.linkLabel4.Text = "一周"; + this.linkLabel4.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel4_LinkClicked); + // + // panel1 + // + this.panel1.Controls.Add(this.linkLabel1); + this.panel1.Controls.Add(this.linkLabel4); + this.panel1.Controls.Add(this.linkLabel2); + this.panel1.Controls.Add(this.linkLabel3); + this.panel1.Enabled = false; + this.panel1.Location = new System.Drawing.Point(300, 50); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(205, 22); + this.panel1.TabIndex = 31; + // + // panelEx1 + // + this.panelEx1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx1.Controls.Add(this.txtContent); + this.panelEx1.Location = new System.Drawing.Point(12, 119); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.Padding = new System.Windows.Forms.Padding(3); + this.panelEx1.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx1.Size = new System.Drawing.Size(515, 301); + this.panelEx1.TabIndex = 32; + this.panelEx1.TileBackColor = System.Drawing.Color.White; + // + // txtContent + // + this.txtContent.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtContent.ContextMenuStrip = this.MenuNote; + this.txtContent.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtContent.Location = new System.Drawing.Point(3, 3); + this.txtContent.Name = "txtContent"; + this.txtContent.Size = new System.Drawing.Size(509, 295); + this.txtContent.TabIndex = 0; + this.txtContent.Text = ""; + // + // MenuNote + // + this.MenuNote.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.撤销ToolStripMenuItem, + this.重做ToolStripMenuItem, + this.toolStripMenuItem1, + this.剪切ToolStripMenuItem, + this.复制ToolStripMenuItem, + this.粘贴ToolStripMenuItem, + this.删除ToolStripMenuItem, + this.toolStripMenuItem2, + this.全选ToolStripMenuItem, + this.toolStripMenuItem3, + this.字体ToolStripMenuItem, + this.字体颜色ToolStripMenuItem, + this.toolStripMenuItem4, + this.标为重点ToolStripMenuItem, + this.标为常规ToolStripMenuItem, + this.插入ToolStripMenuItem}); + this.MenuNote.Name = "MenuNote"; + this.MenuNote.Size = new System.Drawing.Size(146, 292); + this.MenuNote.Opening += new System.ComponentModel.CancelEventHandler(this.MenuNote_Opening); + // + // 撤销ToolStripMenuItem + // + this.撤销ToolStripMenuItem.Name = "撤销ToolStripMenuItem"; + this.撤销ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Z"; + this.撤销ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.撤销ToolStripMenuItem.Text = "撤销"; + this.撤销ToolStripMenuItem.Click += new System.EventHandler(this.撤销ToolStripMenuItem_Click); + // + // 重做ToolStripMenuItem + // + this.重做ToolStripMenuItem.Name = "重做ToolStripMenuItem"; + this.重做ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Y"; + this.重做ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.重做ToolStripMenuItem.Text = "重做"; + this.重做ToolStripMenuItem.Click += new System.EventHandler(this.重做ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(142, 6); + // + // 剪切ToolStripMenuItem + // + this.剪切ToolStripMenuItem.Name = "剪切ToolStripMenuItem"; + this.剪切ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+X"; + this.剪切ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.剪切ToolStripMenuItem.Text = "剪切"; + this.剪切ToolStripMenuItem.Click += new System.EventHandler(this.剪切ToolStripMenuItem_Click); + // + // 复制ToolStripMenuItem + // + this.复制ToolStripMenuItem.Name = "复制ToolStripMenuItem"; + this.复制ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; + this.复制ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.复制ToolStripMenuItem.Text = "复制"; + this.复制ToolStripMenuItem.Click += new System.EventHandler(this.复制ToolStripMenuItem_Click); + // + // 粘贴ToolStripMenuItem + // + this.粘贴ToolStripMenuItem.Name = "粘贴ToolStripMenuItem"; + this.粘贴ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V"; + this.粘贴ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.粘贴ToolStripMenuItem.Text = "粘贴"; + this.粘贴ToolStripMenuItem.Click += new System.EventHandler(this.粘贴ToolStripMenuItem_Click); + // + // 删除ToolStripMenuItem + // + this.删除ToolStripMenuItem.Name = "删除ToolStripMenuItem"; + this.删除ToolStripMenuItem.ShortcutKeyDisplayString = "Delete"; + this.删除ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.删除ToolStripMenuItem.Text = "删除"; + this.删除ToolStripMenuItem.Click += new System.EventHandler(this.删除ToolStripMenuItem_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(142, 6); + // + // 全选ToolStripMenuItem + // + this.全选ToolStripMenuItem.Name = "全选ToolStripMenuItem"; + this.全选ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+A"; + this.全选ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.全选ToolStripMenuItem.Text = "全选"; + this.全选ToolStripMenuItem.Click += new System.EventHandler(this.全选ToolStripMenuItem_Click); + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(142, 6); + // + // 字体ToolStripMenuItem + // + this.字体ToolStripMenuItem.Name = "字体ToolStripMenuItem"; + this.字体ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.字体ToolStripMenuItem.Text = "字体"; + this.字体ToolStripMenuItem.Click += new System.EventHandler(this.字体ToolStripMenuItem_Click); + // + // 字体颜色ToolStripMenuItem + // + this.字体颜色ToolStripMenuItem.Name = "字体颜色ToolStripMenuItem"; + this.字体颜色ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.字体颜色ToolStripMenuItem.Text = "字体颜色"; + this.字体颜色ToolStripMenuItem.Click += new System.EventHandler(this.字体颜色ToolStripMenuItem_Click); + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(142, 6); + // + // 标为重点ToolStripMenuItem + // + this.标为重点ToolStripMenuItem.Name = "标为重点ToolStripMenuItem"; + this.标为重点ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.标为重点ToolStripMenuItem.Text = "标为重点"; + this.标为重点ToolStripMenuItem.Click += new System.EventHandler(this.标为重点ToolStripMenuItem_Click); + // + // 标为常规ToolStripMenuItem + // + this.标为常规ToolStripMenuItem.Name = "标为常规ToolStripMenuItem"; + this.标为常规ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.标为常规ToolStripMenuItem.Text = "标为常规"; + this.标为常规ToolStripMenuItem.Click += new System.EventHandler(this.标为常规ToolStripMenuItem_Click); + // + // 插入ToolStripMenuItem + // + this.插入ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.插入时间ToolStripMenuItem}); + this.插入ToolStripMenuItem.Name = "插入ToolStripMenuItem"; + this.插入ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.插入ToolStripMenuItem.Text = "插入"; + // + // 插入时间ToolStripMenuItem + // + this.插入时间ToolStripMenuItem.Name = "插入时间ToolStripMenuItem"; + this.插入时间ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.插入时间ToolStripMenuItem.Text = "插入时间"; + this.插入时间ToolStripMenuItem.Click += new System.EventHandler(this.插入时间ToolStripMenuItem_Click); + // + // FrmAddTodo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(541, 463); + this.Controls.Add(this.panelEx1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.CbbSType); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.dateTimePicker2); + this.Controls.Add(this.dateTimePicker1); + this.Controls.Add(this.ChkToDoTime); + this.Controls.Add(this.NumSorts); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtName); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Name = "FrmAddTodo"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "新增"; + this.Load += new System.EventHandler(this.FrmAddTodo_Load); + ((System.ComponentModel.ISupportInitialize)(this.NumSorts)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panelEx1.ResumeLayout(false); + this.MenuNote.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.ButtonEx btnCancel; + private ryControls.ButtonEx btnOK; + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 txtName; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.NumericUpDown NumSorts; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.CheckBox ChkToDoTime; + private DateTimePickerEX dateTimePicker1; + private DateTimePickerEX dateTimePicker2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private ryControls.RyComboBox CbbSType; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.LinkLabel linkLabel3; + private System.Windows.Forms.LinkLabel linkLabel4; + private System.Windows.Forms.Panel panel1; + private ryControls.PanelEx panelEx1; + private System.Windows.Forms.RichTextBox txtContent; + private System.Windows.Forms.ContextMenuStrip MenuNote; + private System.Windows.Forms.ToolStripMenuItem 撤销ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 重做ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 剪切ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 复制ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 粘贴ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem 全选ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem 标为重点ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 标为常规ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 字体颜色ToolStripMenuItem; + private System.Windows.Forms.ColorDialog colorDialog1; + private System.Windows.Forms.ToolStripMenuItem 字体ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; + private System.Windows.Forms.FontDialog fontDialog1; + private System.Windows.Forms.ToolStripMenuItem 插入ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 插入时间ToolStripMenuItem; + private System.Windows.Forms.ToolTip toolTip1; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.cs new file mode 100644 index 0000000..1418cd0 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.cs @@ -0,0 +1,285 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmAddTodo : Form + { + public ModalForm mr = null; + public string tableName = "ToDo"; + public int isAdd = 1; + public string selectId = "-1"; + public FrmAddTodo() + { + InitializeComponent(); + CbbSType.Items.AddRange(new StateInfo[] { + new StateInfo { Text = "未完成",id=0 }, + new StateInfo { Text = "已完成",id=100 }, + new StateInfo { Text = "任务作废",id=-1 } + }); + CbbSType.SelectedIndex = 0; + dateTimePicker1.Value = DateTime.Now.Date; + } + DataRow base_info; + #region 需要修改 + public void GetInfo(string id) + { + selectId = id; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1) + { + DataSet ds = db.ReadData(tableName, id); + if (mydb.HaveData(ds)) + { + DataRow reader = ds.Tables[0].Rows[0]; + base_info = reader; + #region 读取信息 + txtName.Text = reader["Name"].ToString(); + NumSorts.Value = reader["Sorts"].ToInt(); + txtContent.Rtf = reader["des_rtf"].ToString(); + var startTime= reader["startTime"].ToInt64(); + var endTime = reader["endTime"].ToInt64(); + dateTimePicker1.Checked = startTime != 0; + dateTimePicker2.Checked = endTime != 0; + var dt_base = new DateTime(1970, 1, 1); + dateTimePicker1.Value = dt_base.AddSeconds(startTime); + dateTimePicker2.Value = dt_base.AddSeconds(endTime); + if(startTime==0 && endTime==0) + { + ChkToDoTime.Checked = false; + } + else + { + ChkToDoTime.Checked = true; + } + var state = reader["state"].ToInt(); + for (int i = 0; i < CbbSType.Items.Count; i++) + { + StateInfo item = (StateInfo)CbbSType.Items[i]; + if (item.id == state) + { + CbbSType.SelectedIndex = i; + break; + } + } + #endregion + } + } + db.Free(); + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if (txtName.Text == "") + { + MessageBox.Show("待办名称不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + RyQuickSQL mySQL = new RyQuickSQL(tableName); + mySQL.AddField("Name", txtName.Text); + mySQL.AddField("Sorts", NumSorts.Value); + var dt_base = new DateTime(1970, 1, 1); + var startTime = (dateTimePicker1.Value- dt_base).TotalSeconds.ToInt64(); + var endTime = (dateTimePicker2.Value - dt_base).TotalSeconds.ToInt64(); + if (!dateTimePicker1.Checked) { startTime = 0; }; + if (!dateTimePicker2.Checked) { endTime = 0; }; + if (!ChkToDoTime.Checked) { startTime = 0; endTime = 0; } + mySQL.AddField("startTime", startTime); + mySQL.AddField("endTime", endTime); + var state = ((StateInfo)CbbSType.SelectedItem).id; + mySQL.AddField("state", state); + mySQL.AddField("Des", txtContent.Text); + mySQL.AddField("Des_rtf", txtContent.Rtf); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1) + { + if (isAdd >= 1) + { + mySQL.AddField("addTime", DateTime.Now); + mySQL.AddField("editTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetInsertSQL(), db.GetParameter(mySQL)); + } + else + { + mySQL.AddField("editTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + selectId, db.GetParameter(mySQL)); + string log_text = ""; + #region 设置变化日志 + if (txtName.Text != base_info["Name"].ToString()) + { + log_text += "标题从[" + base_info["Name"].ToString() + "]改为[" + txtName.Text + "],"; + } + if (NumSorts.Value.ToInt() != base_info["Sorts"].ToInt()) + { + log_text += "优先级从" + base_info["Sorts"].ToInt() + "调整为" + NumSorts.Value.ToInt() + ","; + } + if (txtContent.Rtf != base_info["des_rtf"].ToString()) + { + log_text += "内容,"; + } + #region 判断时间有没有变化 + var _base_startTime = base_info["startTime"].ToInt64(); + var _base_endTime = base_info["endTime"].ToInt64(); + if (startTime != _base_startTime || endTime != _base_endTime) + { + log_text += "待办时间从["+GetTimeStr(_base_startTime, _base_endTime) +"]调整为["+ GetTimeStr(startTime, endTime) + "],"; + } + string GetTimeStr(Int64 _startTime,Int64 _endTime) + { + if (_startTime == 0 && _endTime == 0) + { + return "无限期"; + } + else + { + string text = ""; + if (_startTime == 0) { text= "立即开始"; } + else { text= dt_base.AddSeconds(_startTime).ToString("yyyy-MM-dd dddd HH:mm:ss"); } + if (_endTime == 0) { text+= "->无限期"; } + else { return text += "->"+dt_base.AddSeconds(_endTime).ToString("yyyy -MM-dd dddd HH:mm:ss"); } + return text; + } + } + #endregion + if (state != base_info["state"].ToInt()) + { + TipInfo tip = new TipInfo { state = state }; + TipInfo base_tip = new TipInfo { state = base_info["state"].ToInt() }; + log_text += "状态从[" + base_tip.State_Str + "]调整为[" + tip.State_Str + "],"; + } + #endregion + Itrycn_Db.AddTodo_Log(db,selectId.ToInt(), "编辑待办", "编辑" + log_text.Trim(',')); + } + } + db.Free(); + ModalForm.SetDialogResult(this, mr, DialogResult.OK); + } + #endregion + + private void BtnCancel_Click(object sender, EventArgs e) + { + ModalForm.SetDialogResult(this, mr, DialogResult.Cancel); + } + + private void ChkToDoTime_CheckedChanged(object sender, EventArgs e) + { + dateTimePicker1.Enabled = ChkToDoTime.Checked; + dateTimePicker2.Enabled = ChkToDoTime.Checked; + panel1.Enabled = ChkToDoTime.Checked; + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(1).AddMilliseconds(-1); + } + + private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(2).AddMilliseconds(-1); + } + + private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(4).AddMilliseconds(-1); + } + + private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + dateTimePicker2.Value = DateTime.Now.Date.AddDays(8).AddMilliseconds(-1); + } + + private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Undo(); + } + + private void 重做ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Redo(); + } + + private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Cut(); + } + + private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Copy(); + } + + private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Paste(); + } + + private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectedText = ""; + } + + private void 全选ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectAll(); + } + + private void MenuNote_Opening(object sender, CancelEventArgs e) + { + 撤销ToolStripMenuItem.Enabled = txtContent.CanUndo; + 重做ToolStripMenuItem.Enabled = txtContent.CanRedo; + 剪切ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 复制ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 粘贴ToolStripMenuItem.Enabled = Clipboard.GetText() != ""; + 删除ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + } + + private void 标为重点ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectionBackColor = Color.Yellow; + } + + private void 标为常规ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectionBackColor = Color.Transparent; + } + + + private void 字体颜色ToolStripMenuItem_Click(object sender, EventArgs e) + { + colorDialog1.Color = txtContent.SelectionColor; + if (colorDialog1.ShowDialog()==DialogResult.OK) + { + txtContent.SelectionColor = colorDialog1.Color; + } + } + + private void 字体ToolStripMenuItem_Click(object sender, EventArgs e) + { + fontDialog1.Font = txtContent.SelectionFont; + if (fontDialog1.ShowDialog() == DialogResult.OK) + { + txtContent.SelectionFont = fontDialog1.Font; + } + } + + private void 插入时间ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectedText = DateTime.Now.ToDateTimeStr(); + } + + private void FrmAddTodo_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.resx new file mode 100644 index 0000000..145a23b --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmAddTodo.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 381, 17 + + + 17, 17 + + + 132, 17 + + + 259, 17 + + + 381, 17 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.Designer.cs new file mode 100644 index 0000000..3e81290 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.Designer.cs @@ -0,0 +1,192 @@ +namespace TimeClock.DbOp +{ + partial class FrmBeforeRestTip + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmBeforeRestTip)); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.label1 = new System.Windows.Forms.Label(); + this.LblSecond = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.LblDelay = new System.Windows.Forms.LinkLabel(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.立即休息ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.panel1 = new System.Windows.Forms.Panel(); + this.LblMode = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.contextMenuStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(26, 47); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(91, 14); + this.label1.TabIndex = 0; + this.label1.Text = "距离休息还有"; + // + // LblSecond + // + this.LblSecond.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblSecond.ForeColor = System.Drawing.Color.Red; + this.LblSecond.Location = new System.Drawing.Point(116, 37); + this.LblSecond.Name = "LblSecond"; + this.LblSecond.Size = new System.Drawing.Size(39, 30); + this.LblSecond.TabIndex = 1; + this.LblSecond.Text = "60"; + this.LblSecond.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(155, 47); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(49, 14); + this.label3.TabIndex = 2; + this.label3.Text = "秒时间"; + // + // LblDelay + // + this.LblDelay.AutoSize = true; + this.LblDelay.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblDelay.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblDelay.Location = new System.Drawing.Point(218, 47); + this.LblDelay.Name = "LblDelay"; + this.LblDelay.Size = new System.Drawing.Size(63, 14); + this.LblDelay.TabIndex = 3; + this.LblDelay.TabStop = true; + this.LblDelay.Text = "延迟休息"; + this.LblDelay.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LblDelay_LinkClicked); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.立即休息ToolStripMenuItem, + this.toolStripMenuItem1}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(125, 32); + // + // 立即休息ToolStripMenuItem + // + this.立即休息ToolStripMenuItem.Name = "立即休息ToolStripMenuItem"; + this.立即休息ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.立即休息ToolStripMenuItem.Text = "立即休息"; + this.立即休息ToolStripMenuItem.Click += new System.EventHandler(this.立即休息ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(121, 6); + // + // panel1 + // + this.panel1.Controls.Add(this.LblMode); + this.panel1.Controls.Add(this.label2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(328, 128); + this.panel1.TabIndex = 4; + this.panel1.Visible = false; + // + // LblMode + // + this.LblMode.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblMode.ForeColor = System.Drawing.Color.Red; + this.LblMode.Location = new System.Drawing.Point(184, 44); + this.LblMode.Name = "LblMode"; + this.LblMode.Size = new System.Drawing.Size(67, 30); + this.LblMode.TabIndex = 2; + this.LblMode.Text = "全屏"; + this.LblMode.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(87, 52); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(98, 14); + this.label2.TabIndex = 0; + this.label2.Text = "暂停计时,因为"; + // + // FrmBeforeRestTip + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(328, 128); + this.Controls.Add(this.panel1); + this.Controls.Add(this.LblDelay); + this.Controls.Add(this.label3); + this.Controls.Add(this.LblSecond); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FrmBeforeRestTip"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "即将进入休息"; + this.TopMost = true; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmBeforeRestTip_FormClosed); + this.Load += new System.EventHandler(this.FrmBeforeRestTip_Load); + this.contextMenuStrip1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label LblSecond; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.LinkLabel LblDelay; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 立即休息ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label LblMode; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.cs new file mode 100644 index 0000000..1487af1 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.cs @@ -0,0 +1,107 @@ +using ryCommon; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmBeforeRestTip : Form + { + bool canDelay = true; + public FrmBeforeRestTip() + { + InitializeComponent(); + Itrycn_Info.StickyList.Add(this); + contextMenuStrip1.Items.Add("推迟2分钟提醒").Tag = 2; + contextMenuStrip1.Items.Add("推迟3分钟提醒").Tag = 2; + contextMenuStrip1.Items.Add("推迟5分钟提醒").Tag = 5; + contextMenuStrip1.Items.Add("推迟8分钟提醒").Tag =8; + for (int i = 0; i < contextMenuStrip1.Items.Count; i++) + { + contextMenuStrip1.Items[i].Click += Menu_Click; + } + canDelay = Itrycn_Info.DelayRestOn; + if (Itrycn_Info.DelayRestOn) + { + canDelay = (Itrycn_Info.DelayRestIndex < Itrycn_Info.DelayRestCount); + } + if (canDelay) { LblDelay.Text = "延迟休息"; } else { LblDelay.LinkColor = Color.Red; LblDelay.Text = "立即休息"; } + } + private void Menu_Click(object sender, EventArgs e) + { + //if (isProcUse) { return; } + ToolStripItem item = (ToolStripItem)sender; + switch (item.Tag) + { + case int n when n > 0: + Itrycn_Info.Timer_index += n * 60; + Itrycn_Info.DelayRestIndex++; + this.Close(); + break; + } + } + private void Timer1_Tick(object sender, EventArgs e) + { + Int64 second=Itrycn_Info.Timer_index; + if(second>=0) + { + if (Itrycn_Info.IsStopCalcRestNowing) + { + if (!panel1.Visible) { panel1.Visible = true; } + LblMode.Text = Itrycn_Info.IsStopCalcRestReason; + } + else + { + if (panel1.Visible) { panel1.Visible = false; } + LblSecond.Text = second.ToInt().ToString(); + } + if (second > 60) { this.Close(); } + else if (Itrycn_Info.IsRestNowing) { this.Close(); } + } + else + { + this.Close(); + } + } + + private void FrmBeforeRestTip_Load(object sender, EventArgs e) + { + } + public void StartLoad() + { + timer1.Start(); + } + private void LblDelay_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + if (canDelay) + { + LinkLabel btn = (LinkLabel)sender; + Point p = new Point(0, btn.Height); + contextMenuStrip1.Show(btn, p); + } + else + { + Itrycn_Info.DelayRestIndex = 0; + Itrycn_Info.Timer_index = 0; + this.Close(); + } + } + + private void 立即休息ToolStripMenuItem_Click(object sender, EventArgs e) + { + Itrycn_Info.DelayRestIndex=0; + Itrycn_Info.Timer_index = 1; + this.Close(); + } + + private void FrmBeforeRestTip_FormClosed(object sender, FormClosedEventArgs e) + { + Itrycn_Info.StickyList.Remove(this); + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.resx new file mode 100644 index 0000000..ab67010 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmBeforeRestTip.resx @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 107, 17 + + + + + AAABAAEAHiAAAAEAIACoDwAAFgAAACgAAAAeAAAAQAAAAAEAIAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAREREAERERANEREQ8REREt0RERGVEREQAREREAERERABEREQAREREAERERABEREQAREREAERE + RABEREQAREREAERERABEREQAREREAERERABEREQAREREAERERABERER2REREgERERBdEREQAREREAAAA + AAAAAAAAREREAERERBpERETMRERE/0RERMxEREQaREREAERERABEREQAREREBURERChERERWREREeURE + RIpERESIREREc0RERE1EREQfREREAkRERABEREQAREREAERERC1EREThRERE/0RERJxEREQHREREAAAA + AAAAAAAAREREAERERAFERESERERE/0RERP9ERER+REREAERERAZERERLREREq0REROZERET8RERE/0RE + RP9ERET/RERE/0RERPpERETeREREmURERDhEREQBREREA0RERJxERET/RERE+0RERGdEREQAREREAAAA + AAAAAAAAREREAERERABEREQdRERE0URERP9ERETiRERET0RERJxERET1RERE/0RERP9ERET+RERE8URE + ROZERETnRERE80RERP9ERET/RERE/0REROtERESBREREWURERPBERET/REREuURERA5EREQAREREAAAA + AAAAAAAAREREAERERABEREQAREREYkRERPpERET/RERE8kRERP9ERET/RERE7kRERKlERERgRERENkRE + RCVEREQnREREPERERG1ERES5RERE9kRERP9ERET9RERE8ERERP9ERETxRERERkRERABEREQAAAAAAAAA + AAAAAAAAAAAAAERERABEREQAREREDURERLhERET/RERE/0RERP9ERES6REREP0RERAREREQAREREAERE + RABEREQAREREAERERABEREQKREREVERERNBERET/RERE/0RERP9ERESaREREA0RERABEREQAAAAAAAAA + AAAAAAAAAAAAAERERABEREQAREREDERERLNERET/RERE/kRERJxEREQUREREAERERABEREQAREREAAAA + AAAAAAAAREREAERERABEREQAREREAERERCZERES7RERE/0RERP9ERESOREREAURERABEREQAAAAAAAAA + AAAAAAAAAAAAAERERABEREQAREREYURERPpERET/RERErkRERBBEREQAREREAERERAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABEREQAREREAERERABEREQkREREzkRERP9ERETsREREPERERABEREQAAAAAAAAA + AAAAAAAAREREAERERABEREQRRERExURERP9ERETiRERELkRERABEREQAREREAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAREREAERERABEREQAREREUERERPRERET/REREn0RERANEREQAAAAAAAAA + AAAAAAAAREREAERERABERERGRERE9kRERP9ERESKREREAERERABEREQAAAAAAAAAAABEREQAREREAERE + RABEREQAREREAERERABEREQAREREAERERABEREQARERECERERLNERET/RERE4kRERCVEREQAREREAAAA + AAAAAAAAREREAERERABERESCRERE/0RERPNEREQ9REREAERERAAAAAAAAAAAAERERABEREQAREREAURE + RAxEREQOREREDkRERAxEREQBREREAERERABEREQAREREAERERGVERET/RERE/ERERFZEREQAREREAAAA + AAAAAAAAREREAERERANERESrRERE/0RERNdEREQYREREAERERAAAAAAAAAAAAERERABEREQAREREYURE + RMdERETJREREyURERMdERERhREREAERERABEREQAREREAERERDVERETwRERE/0RERH9EREQAREREAAAA + AAAAAAAAREREAERERAlERES+RERE/0RERMNEREQLREREAAAAAAAAAAAAAAAAAERERABEREQEREREsURE + RP9ERET/RERE/0RERP9ERESXREREAERERAAAAAAAREREAERERCFERETiRERE/0RERJVEREQAREREAAAA + AAAAAAAAREREAERERAlERETARERE/0RERMBEREQKREREAAAAAAAAAAAAAAAAAERERABEREQEREREsURE + RP9ERESkREREVURERFREREQdREREAERERAAAAAAAREREAERERB9EREThRERE/0RERJdEREQAREREAAAA + AAAAAAAAREREAERERARERESxRERE/0RERNFEREQTREREAAAAAAAAAAAAAAAAAERERABEREQEREREsURE + RP9ERERyREREAERERABEREQAREREAERERABEREQAREREAERERC5ERETsRERE/0RERIZEREQAREREAAAA + AAAAAAAAREREAERERABERESNRERE/0RERO1EREQyREREAERERAAAAAAAAAAAAERERABEREQEREREskRE + RP9ERER1REREAAAAAAAAAAAAAAAAAAAAAABEREQAREREAERERFdERET8RERE/0RERGFEREQAREREAAAA + AABEREQAREREAERERABERERVRERE+0RERP9ERER2REREAERERABEREQAAAAAAERERABEREQDRERErURE + RP9ERERvREREAAAAAAAAAAAAAAAAAERERABEREQAREREAkRERKFERET/RERE7ERERDBEREQAREREAERE + RABEREQAREREBURERAREREQbRERE1kRERP9ERETRREREHERERABEREQAAAAAAERERABEREQARERESERE + RJJEREQmREREAAAAAAAAAAAAREREAERERABEREQAREREOEREROpERET/REREtERERAhEREQFREREBURE + RABEREQDREREd0RERFREREQAREREfERERP9ERET/REREkERERAREREQAREREAERERABEREQAREREAERE + RABEREQAREREAAAAAABEREQAREREAERERABEREQRREREtERERP9ERET3REREU0RERABERERaREREc0RE + RAFERERHRERE8ERERLtEREQLREREGERERMhERET/RERE90RERHZEREQFREREAERERABEREQAREREAERE + RABEREQAREREAERERABEREQAREREAERERA9ERESYRERE/0RERP9ERESlREREB0RERA9ERETCRERE7ERE + REBERESvRERE/0RERPpERERoREREAEREREFERETlRERE/0RERPdERESRREREHkRERABEREQAREREAERE + RABEREQAREREAERERABEREQARERELkRERK1ERET+RERE/0RERM1EREQlREREAERERG9ERET8RERE/0RE + RKZERETqRERE/0RERP9EREThREREOkRERABERERRRERE5ERERP9ERET/RERE00RERHpEREQ1REREFURE + RAtEREQMREREGURERD9ERESMRERE4kRERP9ERET/REREz0RERDREREQAREREP0REROVERET/RERE/0RE + RONERET7RERE/0RERP9ERET/REREzkRERC9EREQAREREPkRERMVERET/RERE/0RERP9ERETvRERE1URE + RMRERETGRERE2URERPRERET/RERE/0RERPtEREStREREKERERABEREQ0RERE00RERP9ERET/RERE/0RE + RPVERETwRERE/0RERP9ERET/RERE/0RERNJEREREREREAERERBVERER1RERE0ERERPlERET/RERE/0RE + RP9ERET/RERE/0RERP9ERET0REREwkRERF9EREQKREREAEREREhERETWRERE/0RERP9ERET/RERE/0RE + ROlERETARERE/0RERP9ERET/RERE/0RERP9ERETqREREfURERBhEREQAREREFERERExERESDREREqERE + ROdERETTREREoURERHpERERBREREDERERABEREQbREREgkREROxERET/RERE/0RERP9ERET/RERE/0RE + RLdEREReRERE9kRERP9ERET/RERE/0RERP9ERET/RERE/0RERNBERER2RERELERERAdEREQAREREBURE + RLBERERsREREAERERABEREQIRERELkRERHlERETTRERE/0RERP9ERET/RERE/0RERP9ERET/RERE80RE + RFZEREQKREREnERERP9ERET/RERE/0RERP9ERET/RERE/0RERP9ERET/RERE60RERG1EREQAREREA0RE + RK5ERERpREREAERERAFERERzRERE7URERP9ERET/RERE/0RERP9ERET/RERE/0RERP9ERET/RERElURE + RAdEREQAREREFkRERKBERET6RERE/0RERP9ERET/RERE/0RERP9ERET7REREpkRERBxEREQAREREA0RE + RK1ERERpREREAERERABEREQfRERErERERPxERET/RERE/0RERP9ERET/RERE/0RERPlERESbREREE0RE + RABEREQAREREAERERApERERbREREtURERN9ERETpRERE4ERERLdERERfREREDERERABEREQAREREDERE + RLpERER5REREAERERABEREQAREREDkRERGNERES5RERE4UREROlERETeREREskRERFhEREQJREREAERE + RABEREQAREREAERERABEREQAREREB0RERB5EREQpREREH0RERAhEREQAREREAERERABEREQAREREe0RE + RPpERETkREREP0RERABEREQAREREAERERABEREQJREREIERERClEREQdREREB0RERABEREQAREREAERE + RAAAAAAAAAAAAERERABEREQAREREAERERABEREQAREREAERERABEREQAREREAERERABEREQGREREtURE + RP9ERET/REREbkRERAAAAAAAREREAERERABEREQAREREAERERABEREQAREREAERERABEREQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERABEREQAREREYURE + RO9ERETSRERELERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACAAAAEgAAABIAAAASAAAAEgAAADMAAAAzAAwAMwA/ADIAf4AyAMAAEgGAABIBgAASA4AQEgOAEBIDg + AASAYHgEACBwAAAgYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADAACAM/+A//A== + + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.Designer.cs new file mode 100644 index 0000000..c8d5ea6 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.Designer.cs @@ -0,0 +1,176 @@ +namespace TimeClock.DbOp +{ + partial class FrmCountdownTip + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.NumDay = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.NumHour = new System.Windows.Forms.NumericUpDown(); + this.label3 = new System.Windows.Forms.Label(); + this.NumMinute = new System.Windows.Forms.NumericUpDown(); + this.CbbMode = new ryControls.RyComboBox(); + this.BtnOK = new ryControls.ButtonEx(); + ((System.ComponentModel.ISupportInitialize)(this.NumDay)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumHour)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumMinute)).BeginInit(); + this.SuspendLayout(); + // + // NumDay + // + this.NumDay.Location = new System.Drawing.Point(12, 49); + this.NumDay.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NumDay.Name = "NumDay"; + this.NumDay.Size = new System.Drawing.Size(69, 21); + this.NumDay.TabIndex = 0; + this.NumDay.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(87, 53); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(17, 12); + this.label1.TabIndex = 1; + this.label1.Text = "天"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(185, 53); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(29, 12); + this.label2.TabIndex = 3; + this.label2.Text = "小时"; + // + // NumHour + // + this.NumHour.Location = new System.Drawing.Point(110, 49); + this.NumHour.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NumHour.Name = "NumHour"; + this.NumHour.Size = new System.Drawing.Size(69, 21); + this.NumHour.TabIndex = 2; + this.NumHour.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(295, 53); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(29, 12); + this.label3.TabIndex = 5; + this.label3.Text = "分钟"; + // + // NumMinute + // + this.NumMinute.Location = new System.Drawing.Point(220, 49); + this.NumMinute.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NumMinute.Name = "NumMinute"; + this.NumMinute.Size = new System.Drawing.Size(69, 21); + this.NumMinute.TabIndex = 4; + this.NumMinute.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // CbbMode + // + this.CbbMode.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbMode.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbMode.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbMode.FormattingEnabled = true; + this.CbbMode.Items.AddRange(new object[] { + "按天", + "按小时", + "按分钟"}); + this.CbbMode.Location = new System.Drawing.Point(12, 16); + this.CbbMode.Name = "CbbMode"; + this.CbbMode.Size = new System.Drawing.Size(121, 24); + this.CbbMode.TabIndex = 6; + this.CbbMode.SelectedIndexChanged += new System.EventHandler(this.CbbMode_SelectedIndexChanged); + // + // BtnOK + // + this.BtnOK.ForeColor = System.Drawing.Color.White; + this.BtnOK.Location = new System.Drawing.Point(317, 128); + this.BtnOK.Name = "BtnOK"; + this.BtnOK.Size = new System.Drawing.Size(64, 28); + this.BtnOK.TabIndex = 7; + this.BtnOK.Text = "确定"; + this.BtnOK.UseVisualStyleBackColor = true; + this.BtnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // FrmCountdownTip + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(393, 168); + this.Controls.Add(this.BtnOK); + this.Controls.Add(this.CbbMode); + this.Controls.Add(this.label3); + this.Controls.Add(this.NumMinute); + this.Controls.Add(this.label2); + this.Controls.Add(this.NumHour); + this.Controls.Add(this.label1); + this.Controls.Add(this.NumDay); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FrmCountdownTip"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "倒计时"; + ((System.ComponentModel.ISupportInitialize)(this.NumDay)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumHour)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumMinute)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.NumericUpDown NumDay; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.NumericUpDown NumHour; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.NumericUpDown NumMinute; + private ryControls.RyComboBox CbbMode; + private ryControls.ButtonEx BtnOK; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.cs new file mode 100644 index 0000000..b2eb836 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.cs @@ -0,0 +1,67 @@ +using ryCommon; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmCountdownTip : Form + { + public FrmCountdownTip() + { + InitializeComponent(); + CbbMode.SelectedIndex = 0; + } + + private void CbbMode_SelectedIndexChanged(object sender, EventArgs e) + { + switch(CbbMode.SelectedIndex) + { + case 0://天 + NumDay.Enabled = true; + NumHour.Enabled = true; + NumMinute.Enabled = true; + NumHour.Maximum = 23; + NumMinute.Maximum = 59; + break; + case 1://小时 + NumDay.Enabled = false; + NumHour.Enabled = true; + NumMinute.Enabled = true; + NumHour.Maximum = 100000; + NumMinute.Maximum = 59; + break; + case 2://分钟 + NumDay.Enabled = false; + NumHour.Enabled = false; + NumMinute.Enabled = true; + NumMinute.Maximum = 1000000; + break; + } + } + public Int64 Minute = 0; + private void BtnOK_Click(object sender, EventArgs e) + { + Int64 minute = 0; + switch (CbbMode.SelectedIndex) + { + case 0://天 + minute = (NumDay.Value * 24 * 60 + NumHour.Value * 60 + NumMinute.Value).ToInt64(); + break; + case 1://小时 + minute = (NumHour.Value * 60 + NumMinute.Value).ToInt64(); + break; + case 2://分钟 + minute = (NumMinute.Value).ToInt64(); + break; + } + Minute = minute; + DialogResult = DialogResult.OK; + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmCountdownTip.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.Designer.cs new file mode 100644 index 0000000..94d4050 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.Designer.cs @@ -0,0 +1,257 @@ +namespace TimeClock.DbOp +{ + partial class FrmDisturbedAdd + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.PnlWeek = new System.Windows.Forms.Panel(); + this.CbbEndWeek = new ryControls.RyComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.CbbStartWeek = new ryControls.RyComboBox(); + this.PnlDate = new System.Windows.Forms.Panel(); + this.Dt_End = new ryControls.DateTimePickerEX(); + this.Dt_start = new ryControls.DateTimePickerEX(); + this.CbbType = new ryControls.RyComboBox(); + this.TxtDes = new ryControls.TextBoxEx2(); + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.PnlWeek.SuspendLayout(); + this.PnlDate.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(194, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(11, 12); + this.label1.TabIndex = 3; + this.label1.Text = "-"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(17, 66); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(29, 12); + this.label2.TabIndex = 9; + this.label2.Text = "备注"; + // + // PnlWeek + // + this.PnlWeek.Controls.Add(this.CbbEndWeek); + this.PnlWeek.Controls.Add(this.label3); + this.PnlWeek.Controls.Add(this.CbbStartWeek); + this.PnlWeek.Location = new System.Drawing.Point(18, 106); + this.PnlWeek.Name = "PnlWeek"; + this.PnlWeek.Size = new System.Drawing.Size(396, 28); + this.PnlWeek.TabIndex = 10; + this.PnlWeek.Visible = false; + // + // CbbEndWeek + // + this.CbbEndWeek.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbEndWeek.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbEndWeek.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbEndWeek.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbEndWeek.FormattingEnabled = true; + this.CbbEndWeek.Items.AddRange(new object[] { + "周一", + "周二", + "周三", + "周四", + "周五", + "周六", + "周日"}); + this.CbbEndWeek.Location = new System.Drawing.Point(209, 1); + this.CbbEndWeek.Name = "CbbEndWeek"; + this.CbbEndWeek.Size = new System.Drawing.Size(184, 24); + this.CbbEndWeek.TabIndex = 15; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(193, 8); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(11, 12); + this.label3.TabIndex = 14; + this.label3.Text = "-"; + // + // CbbStartWeek + // + this.CbbStartWeek.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbStartWeek.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbStartWeek.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbStartWeek.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbStartWeek.FormattingEnabled = true; + this.CbbStartWeek.Items.AddRange(new object[] { + "周一", + "周二", + "周三", + "周四", + "周五", + "周六", + "周日"}); + this.CbbStartWeek.Location = new System.Drawing.Point(3, 1); + this.CbbStartWeek.Name = "CbbStartWeek"; + this.CbbStartWeek.Size = new System.Drawing.Size(184, 24); + this.CbbStartWeek.TabIndex = 13; + // + // PnlDate + // + this.PnlDate.Controls.Add(this.Dt_End); + this.PnlDate.Controls.Add(this.Dt_start); + this.PnlDate.Controls.Add(this.label1); + this.PnlDate.Location = new System.Drawing.Point(15, 34); + this.PnlDate.Name = "PnlDate"; + this.PnlDate.Size = new System.Drawing.Size(401, 30); + this.PnlDate.TabIndex = 11; + // + // Dt_End + // + this.Dt_End.CustomFormat = "HH:mm"; + this.Dt_End.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Dt_End.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.Dt_End.Location = new System.Drawing.Point(215, 2); + this.Dt_End.Name = "Dt_End"; + this.Dt_End.Size = new System.Drawing.Size(180, 21); + this.Dt_End.TabIndex = 16; + // + // Dt_start + // + this.Dt_start.CustomFormat = "HH:mm"; + this.Dt_start.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Dt_start.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.Dt_start.Location = new System.Drawing.Point(4, 3); + this.Dt_start.Name = "Dt_start"; + this.Dt_start.Size = new System.Drawing.Size(180, 21); + this.Dt_start.TabIndex = 15; + // + // CbbType + // + this.CbbType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbType.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbType.FormattingEnabled = true; + this.CbbType.Items.AddRange(new object[] { + "时间", + "日期", + "星期"}); + this.CbbType.Location = new System.Drawing.Point(17, 4); + this.CbbType.Name = "CbbType"; + this.CbbType.Size = new System.Drawing.Size(182, 24); + this.CbbType.TabIndex = 14; + this.CbbType.SelectedIndexChanged += new System.EventHandler(this.CbbType_SelectedIndexChanged); + // + // TxtDes + // + this.TxtDes.BackColor = System.Drawing.Color.White; + this.TxtDes.EmptyText = ""; + this.TxtDes.Location = new System.Drawing.Point(19, 82); + this.TxtDes.MaxLength = 999999999; + this.TxtDes.Multiline = false; + this.TxtDes.Name = "TxtDes"; + this.TxtDes.OnlyNumeric = false; + this.TxtDes.PasswordChar = '\0'; + this.TxtDes.ReadOnly = false; + this.TxtDes.SelectedText = ""; + this.TxtDes.SelectionLength = 0; + this.TxtDes.SelectionStart = 0; + this.TxtDes.Size = new System.Drawing.Size(394, 19); + this.TxtDes.TabIndex = 8; + this.TxtDes.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtDes.ToolTip = ""; + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.ForeColor = System.Drawing.Color.White; + this.btnCancel.Location = new System.Drawing.Point(349, 147); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(65, 27); + this.btnCancel.TabIndex = 7; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.ForeColor = System.Drawing.Color.White; + this.btnOK.Location = new System.Drawing.Point(278, 147); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(65, 27); + this.btnOK.TabIndex = 6; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // FrmDisturbedAdd + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(429, 186); + this.Controls.Add(this.PnlDate); + this.Controls.Add(this.CbbType); + this.Controls.Add(this.PnlWeek); + this.Controls.Add(this.label2); + this.Controls.Add(this.TxtDes); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.Name = "FrmDisturbedAdd"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "免打扰时间段"; + this.PnlWeek.ResumeLayout(false); + this.PnlWeek.PerformLayout(); + this.PnlDate.ResumeLayout(false); + this.PnlDate.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label label1; + private ryControls.ButtonEx btnCancel; + private ryControls.ButtonEx btnOK; + private System.Windows.Forms.Label label2; + public ryControls.TextBoxEx2 TxtDes; + private System.Windows.Forms.Panel PnlWeek; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Panel PnlDate; + public ryControls.RyComboBox CbbType; + public ryControls.RyComboBox CbbEndWeek; + public ryControls.RyComboBox CbbStartWeek; + public ryControls.DateTimePickerEX Dt_End; + public ryControls.DateTimePickerEX Dt_start; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.cs new file mode 100644 index 0000000..32ec518 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.cs @@ -0,0 +1,83 @@ +using ryCommon; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmDisturbedAdd : Form + { + public ModalForm mr = null; + public FrmDisturbedAdd() + { + InitializeComponent(); + Dt_start.Value = DateTime.Now.Date; + Dt_End.Value = DateTime.Now.AddDays(1).Date.AddSeconds(-1); + CbbType.SelectedIndex = 0; + CbbStartWeek.SelectedIndex = 0; + CbbEndWeek.SelectedIndex = 4; + PnlWeek.Left = PnlDate.Left; + PnlWeek.Top = PnlDate.Top; + } + + private void BtnCancel_Click(object sender, EventArgs e) + { + if (mr != null) mr.Form_Result = DialogResult.Cancel; + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if (CbbType.SelectedIndex==1) //日期 + { + if(Dt_End.Value<=Dt_start.Value) + { + MessageBox.Show("请选择正确的时间段。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + } + else if (CbbType.SelectedIndex == 2) //星期 + { + int start_week = CbbStartWeek.SelectedIndex + 1; + int end_week = CbbEndWeek.SelectedIndex + 1; + end_week += 1; + if (end_week > 7) { end_week = 1; } + if (start_week==end_week) + { + MessageBox.Show("不能将全部星期包含进去。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + } + if (mr != null) mr.Form_Result = DialogResult.OK; + } + + private void CbbType_SelectedIndexChanged(object sender, EventArgs e) + { + if(CbbType.SelectedIndex!=2) + { + PnlDate.Visible = true; + PnlWeek.Visible = false; + } + else + { + PnlDate.Visible = false; + PnlWeek.Visible = true; + } + Dt_start.ShowUpDown = CbbType.SelectedIndex == 0; + if (CbbType.SelectedIndex == 1) + { + Dt_start.CustomFormat = "yyyy年MM月dd日 HH:mm"; + } + else + { + Dt_start.CustomFormat = "HH:mm"; + } + Dt_End.CustomFormat = Dt_start.CustomFormat; + Dt_End.ShowUpDown = Dt_start.ShowUpDown; + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmDisturbedAdd.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.Designer.cs new file mode 100644 index 0000000..c01586b --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.Designer.cs @@ -0,0 +1,222 @@ +namespace TimeClock.DbOp +{ + partial class FrmFullScreenTip + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.labelTx1 = new ryControls.LabelTx(); + this.TxtTitle = new System.Windows.Forms.Label(); + this.LblTimeStr = new System.Windows.Forms.Label(); + this.LblTime = new System.Windows.Forms.Label(); + this.BtnClose = new ryControls.ButtonEx(); + this.LblState = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.BtnTuichi = new ryControls.ButtonEx(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.LblCloseTime = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.LblRunTimeStr = new ryControls.LabelTx(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // labelTx1 + // + this.labelTx1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labelTx1.ForeColor = System.Drawing.Color.White; + this.labelTx1.LineDistance = 5; + this.labelTx1.Location = new System.Drawing.Point(132, 131); + this.labelTx1.Name = "labelTx1"; + this.labelTx1.Size = new System.Drawing.Size(656, 24); + this.labelTx1.TabIndex = 1; + this.labelTx1.Text = "未知内容"; + // + // TxtTitle + // + this.TxtTitle.AutoSize = true; + this.TxtTitle.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.TxtTitle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.TxtTitle.Location = new System.Drawing.Point(131, 74); + this.TxtTitle.Name = "TxtTitle"; + this.TxtTitle.Size = new System.Drawing.Size(110, 24); + this.TxtTitle.TabIndex = 3; + this.TxtTitle.Text = "未知标题"; + // + // LblTimeStr + // + this.LblTimeStr.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.LblTimeStr.AutoSize = true; + this.LblTimeStr.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTimeStr.ForeColor = System.Drawing.Color.White; + this.LblTimeStr.Location = new System.Drawing.Point(1082, 894); + this.LblTimeStr.Name = "LblTimeStr"; + this.LblTimeStr.Size = new System.Drawing.Size(63, 14); + this.LblTimeStr.TabIndex = 4; + this.LblTimeStr.Text = "提醒时间"; + // + // LblTime + // + this.LblTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTime.AutoSize = true; + this.LblTime.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTime.ForeColor = System.Drawing.Color.White; + this.LblTime.Location = new System.Drawing.Point(840, 191); + this.LblTime.Name = "LblTime"; + this.LblTime.Size = new System.Drawing.Size(284, 64); + this.LblTime.TabIndex = 5; + this.LblTime.Text = "00:00:00"; + // + // BtnClose + // + this.BtnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BtnClose.BaseColor = System.Drawing.Color.Gray; + this.BtnClose.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.BtnClose.ForeColor = System.Drawing.Color.White; + this.BtnClose.Location = new System.Drawing.Point(900, 271); + this.BtnClose.Name = "BtnClose"; + this.BtnClose.Size = new System.Drawing.Size(124, 80); + this.BtnClose.TabIndex = 6; + this.BtnClose.Text = "关闭"; + this.BtnClose.UseVisualStyleBackColor = true; + this.BtnClose.Click += new System.EventHandler(this.BtnClose_Click); + // + // LblState + // + this.LblState.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblState.Font = new System.Drawing.Font("宋体", 42F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblState.ForeColor = System.Drawing.Color.White; + this.LblState.Location = new System.Drawing.Point(655, 110); + this.LblState.Name = "LblState"; + this.LblState.Size = new System.Drawing.Size(650, 56); + this.LblState.TabIndex = 43; + this.LblState.Text = "正常的提醒"; + this.LblState.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // BtnTuichi + // + this.BtnTuichi.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BtnTuichi.BaseColor = System.Drawing.Color.Gray; + this.BtnTuichi.ForeColor = System.Drawing.Color.White; + this.BtnTuichi.Location = new System.Drawing.Point(1030, 271); + this.BtnTuichi.Name = "BtnTuichi"; + this.BtnTuichi.Size = new System.Drawing.Size(36, 80); + this.BtnTuichi.TabIndex = 0; + this.BtnTuichi.Text = "︾"; + this.BtnTuichi.UseVisualStyleBackColor = true; + this.BtnTuichi.Click += new System.EventHandler(this.BtnTuichi_Click); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(61, 4); + this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStrip1_Opening); + // + // LblCloseTime + // + this.LblCloseTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.LblCloseTime.AutoSize = true; + this.LblCloseTime.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblCloseTime.ForeColor = System.Drawing.Color.White; + this.LblCloseTime.Location = new System.Drawing.Point(12, 894); + this.LblCloseTime.Name = "LblCloseTime"; + this.LblCloseTime.Size = new System.Drawing.Size(35, 14); + this.LblCloseTime.TabIndex = 46; + this.LblCloseTime.Text = "未知"; + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox1.Location = new System.Drawing.Point(810, 383); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(310, 313); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 47; + this.pictureBox1.TabStop = false; + // + // LblRunTimeStr + // + this.LblRunTimeStr.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblRunTimeStr.ForeColor = System.Drawing.Color.DarkGray; + this.LblRunTimeStr.LineDistance = 5; + this.LblRunTimeStr.Location = new System.Drawing.Point(133, 107); + this.LblRunTimeStr.Name = "LblRunTimeStr"; + this.LblRunTimeStr.Size = new System.Drawing.Size(654, 21); + this.LblRunTimeStr.TabIndex = 48; + this.LblRunTimeStr.Text = "未知时间"; + // + // FrmFullScreenTip + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.ClientSize = new System.Drawing.Size(1331, 919); + this.Controls.Add(this.LblRunTimeStr); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.LblCloseTime); + this.Controls.Add(this.BtnTuichi); + this.Controls.Add(this.LblState); + this.Controls.Add(this.BtnClose); + this.Controls.Add(this.LblTime); + this.Controls.Add(this.LblTimeStr); + this.Controls.Add(this.TxtTitle); + this.Controls.Add(this.labelTx1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmFullScreenTip"; + this.Opacity = 0.9D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.Text = "全屏提醒"; + this.TopMost = true; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmFullScreenTip_FormClosing); + this.Load += new System.EventHandler(this.FrmFullScreenTip_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label LblTime; + private ryControls.ButtonEx BtnClose; + public System.Windows.Forms.Label LblTimeStr; + public ryControls.LabelTx labelTx1; + public System.Windows.Forms.Label TxtTitle; + public System.Windows.Forms.Label LblState; + private System.Windows.Forms.Timer timer1; + private ryControls.ButtonEx BtnTuichi; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + public System.Windows.Forms.Label LblCloseTime; + private System.Windows.Forms.PictureBox pictureBox1; + public ryControls.LabelTx LblRunTimeStr; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.cs new file mode 100644 index 0000000..462eff9 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.cs @@ -0,0 +1,203 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmFullScreenTip : Form + { + public FrmFullScreenTip() + { + InitializeComponent(); + LblTimeStr.Text = "弹窗时间:" + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm"); + DateTime dt = DateTime.Now; + LblTime.Text = DateTime.Now.ToString("HH:mm:ss"); + timer1.Enabled = true; + int n = 5-dt.Minute % 5; + contextMenuStrip1.Items.Add("推迟到" + dt.AddMinutes(n - 1).ToString("HH:mm") + "提醒").Tag = dt.AddMinutes(n - 1); + if (n<=1) + { + contextMenuStrip1.Items[0].Visible = false; + } + contextMenuStrip1.Items.Add("推迟到"+dt.AddMinutes(n).ToString("HH:mm")+"提醒").Tag = dt.AddMinutes(n); + contextMenuStrip1.Items.Add("推迟1分钟提醒").Tag = 1; + contextMenuStrip1.Items.Add("推迟2分钟提醒").Tag = 2; + contextMenuStrip1.Items.Add("推迟5分钟提醒").Tag = 5; + contextMenuStrip1.Items.Add("推迟10分钟提醒").Tag = 10; + contextMenuStrip1.Items.Add("推迟15分钟提醒").Tag = 15; + contextMenuStrip1.Items.Add("推迟半小时提醒").Tag = 30; + contextMenuStrip1.Items.Add("推迟1小时提醒").Tag = 60; + contextMenuStrip1.Items.Add("推迟到明天提醒").Tag = 60 * 24; + for(int i=0;i 0; + if (!_HaveCloseMinute) { LblCloseTime.Visible = false; } + sound.Volume = Itrycn_Info.MusicVolume / 100f; + } + public void PlaySound(string path) + { + string _path = ryCommon.RyFiles.GetRealPath(path); + if (_path.IndexOf("\\") == -1) //如果只是文件名,则播放默认目录下的 + { + _path = Itrycn_Info.SysDbFolder + @"\animation\sound\" + _path; + } + Thread th = new Thread(delegate() { sound.Play(_path); }); + th.Start(); + } + API.SoundPlay sound = new API.SoundPlay(); + public void LoadFromFile(string path) + { + try + { + if (!System.IO.File.Exists(path)) { return; } + //pictureBox1.Image = Image.FromFile(path);return; + FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); + //把文件读取到字节数组 + byte[] data = new byte[fs.Length]; + fs.Read(data, 0, data.Length); + fs.Close(); + + //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去 + MemoryStream ms = new MemoryStream(data); + //设置图片框 pictureBox1中的图片 + this.pictureBox1.Image = Image.FromStream(ms); + //pictureBox1.Image = Image.FromStream(fileStream); + //fileStream.Close(); + //fileStream.Dispose(); + } + catch { pictureBox1.Image = null; } + } + private int _CloseMinute =-1; + private bool _HaveCloseMinute = false; + private void FrmFullScreenTip_Click(object sender, EventArgs e) + { + //if (isProcUse) { return; } + ToolStripItem item = (ToolStripItem)sender; + DataProvider mydb = new DataProvider(); + IDbInterface db = TimeClock.Itrycn_Db.CreateDataProvider(TimeClock.Itrycn_Db.dataType); + if (db.ConnDb(TimeClock.Itrycn_Db.SQLConnStr) == 1) + { + switch(item.Tag) + { + case int n when n>0: + Itrycn_Db.AddTip(TxtTitle.Text, labelTx1.Text, DateTime.Now.AddMinutes(item.Tag.ToInt()), 1, RunTimeStr); + this.Close(); + break; + case DateTime n: + if (n > DateTime.Now) + { + Itrycn_Db.AddTip(TxtTitle.Text, labelTx1.Text, n, 1, RunTimeStr); + this.Close(); + } + else + { + MessageBox.Show("当前时间已经过期,请选择合适的时间。","提示",MessageBoxButtons.OK,MessageBoxIcon.Exclamation); + } + break; + } + } + } + + //private bool isProcUse = false; + public int Id { get; set; } = 0; + public string RunTimeStr { get; set; } = ""; + public int isTemp { get; set; } = 0; + public string gif_path { get; set; } = ""; + private void BtnClose_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void timer1_Tick(object sender, EventArgs e) + { + LblTime.Text = DateTime.Now.ToString("HH:mm:ss"); + if(_HaveCloseMinute) + { + _CloseMinute--; + if(_CloseMinute>0) + { + LblCloseTime.Text ="本界面将在 "+ GetDateStr(_CloseMinute)+" 后关闭"; + } + else + { + timer1.Enabled = false; + this.Close(); + } + } + string GetDateStr(int size) + { + string date_str = ""; + int hour = size / 60 / 60; + if (hour > 0) { date_str =hour+ "小时"; } + int minute = (size-hour*60) / 60; + if (minute > 0) { date_str += minute + "分钟"; } + int second = (size - hour * 60- minute*60); + if (second > 0) { date_str += second + "秒"; } + return date_str; + } + } + + private void FrmFullScreenTip_Load(object sender, EventArgs e) + { + if (gif_path == "") + { + string title = TxtTitle.Text; + string[] rule = RyFiles.ReadAllLines(Itrycn_Info.SysDbFolder + "\\animation\\gif.db"); + if (rule == null) { return; } + for (int i = 0; i < rule.Length; i++) + { + if (rule[i] == "") { continue; } + string[] item = rule[i].Split('|'); + if (item.Length <= 1) { continue; } + string tip = item[0]; + if (title.IndexOfEx(tip) < 0) { continue; } + Random rd = new Random(); + string filename = item[rd.Next(1, item.Length - 1)]; + string path = Itrycn_Info.SysDbFolder + "\\animation\\" + filename; + if (!System.IO.File.Exists(path)) { continue; } + LoadFromFile(path); + break; + } + } + else + { + LoadFromFile(gif_path); + } + } + + private void BtnTuichi_Click(object sender, EventArgs e) + { + Button btn = (Button)sender; + Point p = new Point(0, btn.Height); + contextMenuStrip1.Show(btn, p); + } + + private void ContextMenuStrip1_Opening(object sender, CancelEventArgs e) + { + DateTime dt = DateTime.Now; + int n =5- dt.Minute % 5; + contextMenuStrip1.Items[0].Text = "推迟到" + dt.AddMinutes(n - 1).ToString("HH:mm") + "提醒"; + contextMenuStrip1.Items[0].Tag = dt.AddMinutes(n - 1); + contextMenuStrip1.Items[0].Visible = n>1; + contextMenuStrip1.Items[1].Text = "推迟到" + dt.AddMinutes(n).ToString("HH:mm") + "提醒"; + contextMenuStrip1.Items[1].Tag = dt.AddMinutes(n); + } + + private void FrmFullScreenTip_FormClosing(object sender, FormClosingEventArgs e) + { + sound.Stop(); + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.resx new file mode 100644 index 0000000..8a9dee9 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmFullScreenTip.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 107, 17 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.Designer.cs new file mode 100644 index 0000000..8e1d824 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.Designer.cs @@ -0,0 +1,264 @@ +namespace TimeClock.DbOp +{ + partial class FrmHolidayView + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmHolidayView)); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.添加数据ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.修改数据ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除数据ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.ColName = new XPTable.Models.TextColumn(); + this.ColSType = new XPTable.Models.TextColumn(); + this.ColStartYear = new XPTable.Models.TextColumn(); + this.ColEndYear = new XPTable.Models.TextColumn(); + this.ColTime = new XPTable.Models.TextColumn(); + this.btnDel = new ryControls.ButtonEx(); + this.btnEdit = new ryControls.ButtonEx(); + this.btnAdd = new ryControls.ButtonEx(); + this.ctlMyPage1 = new MyPage.ctlMyPage(); + this.rySearch1 = new ryControls.rySearch(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.ContextMenuStrip = this.contextMenuStrip1; + this.table1.EditStartAction = XPTable.Editors.EditStartAction.SingleClick; + this.table1.EnableHeaderContextMenu = false; + this.table1.EnableToolTips = true; + this.table1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table1.FullRowSelect = true; + this.table1.GridColor = System.Drawing.Color.Silver; + this.table1.GridLines = XPTable.Models.GridLines.Rows; + this.table1.GridLineStyle = XPTable.Models.GridLineStyle.Dash; + this.table1.HeaderFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(12, 42); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前还没有任何数据"; + this.table1.Size = new System.Drawing.Size(1028, 551); + this.table1.TabIndex = 29; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + this.table1.ToolTipShowAlways = true; + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.ColName, + this.ColSType, + this.ColStartYear, + this.ColEndYear, + this.ColTime}); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.添加数据ToolStripMenuItem, + this.修改数据ToolStripMenuItem, + this.删除数据ToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(125, 70); + // + // 添加数据ToolStripMenuItem + // + this.添加数据ToolStripMenuItem.Name = "添加数据ToolStripMenuItem"; + this.添加数据ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.添加数据ToolStripMenuItem.Text = "添加数据"; + this.添加数据ToolStripMenuItem.Click += new System.EventHandler(this.添加数据ToolStripMenuItem_Click); + // + // 修改数据ToolStripMenuItem + // + this.修改数据ToolStripMenuItem.Name = "修改数据ToolStripMenuItem"; + this.修改数据ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.修改数据ToolStripMenuItem.Text = "修改数据"; + this.修改数据ToolStripMenuItem.Click += new System.EventHandler(this.修改数据ToolStripMenuItem_Click); + // + // 删除数据ToolStripMenuItem + // + this.删除数据ToolStripMenuItem.Name = "删除数据ToolStripMenuItem"; + this.删除数据ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.删除数据ToolStripMenuItem.Text = "删除数据"; + this.删除数据ToolStripMenuItem.Click += new System.EventHandler(this.删除数据ToolStripMenuItem_Click); + // + // tableModel1 + // + this.tableModel1.RowHeight = 25; + // + // ColName + // + this.ColName.Editable = false; + this.ColName.Tag = null; + this.ColName.Text = "节日名称 "; + this.ColName.Width = 150; + // + // ColSType + // + this.ColSType.Editable = false; + this.ColSType.Tag = null; + this.ColSType.Text = "节日类型"; + this.ColSType.Width = 90; + // + // ColStartYear + // + this.ColStartYear.Editable = false; + this.ColStartYear.Tag = null; + this.ColStartYear.Text = "开始年份"; + // + // ColEndYear + // + this.ColEndYear.Editable = false; + this.ColEndYear.Tag = null; + this.ColEndYear.Text = "结束年份"; + // + // ColTime + // + this.ColTime.Editable = false; + this.ColTime.Tag = null; + this.ColTime.Text = "节日时间"; + this.ColTime.Width = 300; + // + // btnDel + // + this.btnDel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnDel.ForeColor = System.Drawing.Color.White; + this.btnDel.Location = new System.Drawing.Point(978, 12); + this.btnDel.Name = "btnDel"; + this.btnDel.Size = new System.Drawing.Size(62, 24); + this.btnDel.TabIndex = 40; + this.btnDel.Text = "删除"; + this.btnDel.UseVisualStyleBackColor = true; + this.btnDel.Click += new System.EventHandler(this.BtnDel_Click); + // + // btnEdit + // + this.btnEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnEdit.ForeColor = System.Drawing.Color.White; + this.btnEdit.Location = new System.Drawing.Point(910, 12); + this.btnEdit.Name = "btnEdit"; + this.btnEdit.Size = new System.Drawing.Size(62, 24); + this.btnEdit.TabIndex = 39; + this.btnEdit.Text = "修改"; + this.btnEdit.UseVisualStyleBackColor = true; + this.btnEdit.Click += new System.EventHandler(this.BtnEdit_Click); + // + // btnAdd + // + this.btnAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnAdd.ForeColor = System.Drawing.Color.White; + this.btnAdd.Location = new System.Drawing.Point(842, 12); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(62, 24); + this.btnAdd.TabIndex = 38; + this.btnAdd.Text = "添加"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.BtnAdd_Click); + // + // ctlMyPage1 + // + this.ctlMyPage1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ctlMyPage1.Location = new System.Drawing.Point(12, 595); + this.ctlMyPage1.Name = "ctlMyPage1"; + this.ctlMyPage1.PageSize = 50; + this.ctlMyPage1.RecordCount = 0; + this.ctlMyPage1.Size = new System.Drawing.Size(506, 26); + this.ctlMyPage1.SQLText = ""; + this.ctlMyPage1.SQLText2 = ""; + this.ctlMyPage1.T_FirstCaption = "首页"; + this.ctlMyPage1.T_LastCaption = "末页"; + this.ctlMyPage1.T_NextCaption = "下一页"; + this.ctlMyPage1.T_Parameters = null; + this.ctlMyPage1.T_PreCaption = "上一页"; + this.ctlMyPage1.T_SkipCaption = "跳到"; + this.ctlMyPage1.T_TipCaption = "{pageindex}/{pagecount} 页,共 {recordcount} 条记录,每页 {pagesize} 条"; + this.ctlMyPage1.TabIndex = 30; + this.ctlMyPage1.OnPageChange += new System.EventHandler(this.CtlMyPage1_OnPageChange); + // + // rySearch1 + // + this.rySearch1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.rySearch1.EmptyText = "请输入搜索内容"; + this.rySearch1.Location = new System.Drawing.Point(12, 12); + this.rySearch1.Name = "rySearch1"; + this.rySearch1.Size = new System.Drawing.Size(329, 24); + this.rySearch1.TabIndex = 28; + this.rySearch1.OnSearch += new System.EventHandler(this.RySearch1_OnSearch); + // + // FrmHolidayView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1052, 625); + this.Controls.Add(this.btnDel); + this.Controls.Add(this.btnEdit); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.ctlMyPage1); + this.Controls.Add(this.table1); + this.Controls.Add(this.rySearch1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmHolidayView"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "浏览节假日"; + this.Load += new System.EventHandler(this.FrmView_Load); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private ryControls.rySearch rySearch1; + private XPTable.Models.Table table1; + private MyPage.ctlMyPage ctlMyPage1; + private XPTable.Models.TableModel tableModel1; + private XPTable.Models.ColumnModel columnModel1; + private ryControls.ButtonEx btnDel; + private ryControls.ButtonEx btnEdit; + private ryControls.ButtonEx btnAdd; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 添加数据ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 修改数据ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除数据ToolStripMenuItem; + private XPTable.Models.TextColumn ColName; + private XPTable.Models.TextColumn ColSType; + private XPTable.Models.TextColumn ColStartYear; + private XPTable.Models.TextColumn ColEndYear; + private XPTable.Models.TextColumn ColTime; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.cs new file mode 100644 index 0000000..e44f224 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.cs @@ -0,0 +1,256 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmHolidayView : Form + { + string orderSQL = "order by addTime desc"; + string tableName = "Holidays"; + public FrmHolidayView() + { + InitializeComponent(); + } + #region 需要修改的内容 + private void RySearch1_OnSearch(object sender, EventArgs e) + { + //需要修改此处 + LoadDb("(name like @SearchText or des like @SearchText)"); + } + + private void CtlMyPage1_OnPageChange(object sender, EventArgs e) + { + #region 重新载入数据 + tableModel1.Rows.Clear(); + tableModel1.Selections.Clear(); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Holidays_ConnStr) == 1) + { + DataSet ds = db.ReadData(ctlMyPage1.GetSQLText, ctlMyPage1.T_Parameters); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = row["id"].ToString() + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(row["name"].ToString()));//示例 + var Holiday_Time = row["Holiday_Time"].ToString(); + var Holiday_Time_str = ""; + switch (row["sType"].ToInt()) + { + case 0: + if (Holiday_Time.Length == 4) + { + int day = Holiday_Time.Substring(2, 2).ToInt(); + if (day == 0) + { + Holiday_Time_str = Holiday_Time.Substring(0, 2).ToInt() + "月最后一天"; + } + else + { + Holiday_Time_str = Holiday_Time.Substring(0, 2).ToInt() + "月" + day + "日"; + } + } + itemList.Cells.Add(new XPTable.Models.Cell("公历节日"));break; + case 1: + if (Holiday_Time.Length == 4) + { + Holiday_Time_str =ChinaDate.GetMonth(Holiday_Time.Substring(0, 2).ToInt()) + ChinaDate.GetDay(Holiday_Time.Substring(2, 2).ToInt()); + } + itemList.Cells.Add(new XPTable.Models.Cell("农历节日")); break; + case 2: + if (Holiday_Time.Length == 4) + { + Holiday_Time_str = Holiday_Time.Substring(0, 2).ToInt() + "月" ; + var week = Holiday_Time.Substring(2, 1).ToInt(); + if (week == 0) { Holiday_Time_str += "最后一个"; } + else { Holiday_Time_str += "第"+ week+"个"; } + Holiday_Time_str += "周"+RyDate.GetWeekName(Holiday_Time.Substring(3, 1).ToInt()); + } + itemList.Cells.Add(new XPTable.Models.Cell("星期节日")); break; + case 3: + Holiday_Time_str = ""; + itemList.Cells.Add(new XPTable.Models.Cell("节气")); break; + default: + itemList.Cells.Add(new XPTable.Models.Cell("未知节日")); break; + } + itemList.Cells.Add(new XPTable.Models.Cell(row["startYear"].ToString()));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(row["endYear"].ToString()));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(Holiday_Time_str));//示例 + tableModel1.Rows.Add(itemList); + } + db.Free(); + } + #endregion + } + private void GetRow(string id, int index) + { + #region 重新载入数据 + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Holidays_ConnStr) == 1) + { + DataSet ds = db.ReadData("select * from " + tableName + " where id=" + id); + if (mydb.HaveData(ds)) + { + DataRow row = ds.Tables[0].Rows[0]; + XPTable.Models.Row itemList = tableModel1.Rows[index]; + //需要修改此处 + itemList.Cells[ColName.Index].Text = row["name"].ToString(); + var Holiday_Time = row["Holiday_Time"].ToString(); + var Holiday_Time_str = ""; + switch (row["sType"].ToInt()) + { + case 0: + if (Holiday_Time.Length == 4) + { + int day = Holiday_Time.Substring(2, 2).ToInt(); + if (day == 0) + { + Holiday_Time_str = Holiday_Time.Substring(0, 2).ToInt() + "月最后一天"; + } + else + { + Holiday_Time_str = Holiday_Time.Substring(0, 2).ToInt() + "月" + day + "日"; + } + } + itemList.Cells[ColSType.Index].Text = "公历节日"; break; + case 1: + if (Holiday_Time.Length == 4) + { + Holiday_Time_str = ChinaDate.GetMonth(Holiday_Time.Substring(0, 2).ToInt()) + ChinaDate.GetDay(Holiday_Time.Substring(2, 2).ToInt()); + } + itemList.Cells[ColSType.Index].Text = "农历节日"; break; + case 2: + if (Holiday_Time.Length == 4) + { + Holiday_Time_str = Holiday_Time.Substring(0, 2).ToInt() + "月"; + var week = Holiday_Time.Substring(2, 1).ToInt(); + if (week == 0) { Holiday_Time_str += "最后一个"; } + else { Holiday_Time_str += "第" + week + "个"; } + Holiday_Time_str += "周" + RyDate.GetWeekName(Holiday_Time.Substring(3, 1).ToInt()); + } + itemList.Cells[ColSType.Index].Text = "星期节日"; break; + case 3: + Holiday_Time_str = ""; + itemList.Cells[ColSType.Index].Text = "节气"; break; + default: + itemList.Cells[ColSType.Index].Text = "未知节日"; break; + } + itemList.Cells[ColStartYear.Index].Text = row["startYear"].ToString(); + itemList.Cells[ColEndYear.Index].Text = row["endYear"].ToString(); + itemList.Cells[ColTime.Index].Text = Holiday_Time_str; + } + db.Free(); + } + #endregion + } + #endregion + public void LoadDb(string whereSQL) + { + string _whereSQL = whereSQL; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Holidays_ConnStr) == 1) + { + #region 重新载入数据 + db.AddParameter("SearchText", "%" + rySearch1.Text + "%"); + ctlMyPage1.RecordCount = db.GetCount(tableName, _whereSQL); + ctlMyPage1.T_Parameters = db.GetParameter(); + ctlMyPage1.SQLText= db.GetPageSQL(tableName, _whereSQL, orderSQL); + ctlMyPage1.SQLText2 = db.GetPageSQL2(tableName, _whereSQL, orderSQL); + ctlMyPage1.GotoPageIndex(1); + db.Free(); + #endregion + } + } + + private void BtnAdd_Click(object sender, EventArgs e) + { + FrmAddHoliday frm = new FrmAddHoliday() + { + Text = "添加节假日", + Icon = Icon, + isAdd = 1 + }; + frm.mr = new ModalForm(this, frm); + frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => { + if (dg == DialogResult.OK) + { + rySearch1.PerformClick(); + } + }); + frm.mr.ShowModal(); + } + + private void BtnEdit_Click(object sender, EventArgs e) + { + if (table1.SelectedItems.Length == 0) { return; } + string selectId = table1.SelectedItems[0].Tag.ToString(); + int index = table1.SelectedItems[0].Index; + FrmAddHoliday frm = new FrmAddHoliday() + { + Text = "修改节假日", + Icon = Icon, + isAdd = 0 + }; + frm.GetInfo(selectId); + frm.mr = new ModalForm(this, frm); + frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => { + if (dg == DialogResult.OK) + { + GetRow(selectId, index); + } + }); + frm.mr.ShowModal(); + } + + private void BtnDel_Click(object sender, EventArgs e) + { + if (table1.SelectedItems.Length == 0) { MessageBox.Show("请先选择要删除的项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } + string selectId = table1.SelectedItems[0].Tag.ToString(); + if (MessageBox.Show("确定要删除该项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) + { + return; + } + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Holidays_ConnStr) == 1) + { + db.DelById(tableName, selectId); + tableModel1.Rows.RemoveAt(table1.SelectedItems[0].Index); + } + } + + private void FrmView_Load(object sender, EventArgs e) + { + rySearch1.PerformClick(); + } + + private void 添加数据ToolStripMenuItem_Click(object sender, EventArgs e) + { + btnAdd.PerformClick(); + } + + private void 修改数据ToolStripMenuItem_Click(object sender, EventArgs e) + { + btnEdit.PerformClick(); + } + + private void 删除数据ToolStripMenuItem_Click(object sender, EventArgs e) + { + btnDel.PerformClick(); + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.resx new file mode 100644 index 0000000..eec7758 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmHolidayView.resx @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 141, 21 + + + 269, 21 + + + 22, 16 + + + + + AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAcN/+AHji/QCE5fwAsvX3AJ7u+QCf6f8As/D9ALLw/RSo7/spnez8AGvj + +wC78P8AvvH/AJrq/wBz4/4Aa+H/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdOD9AIDk + /AGJ5/sEjer6ALTy+ACP5f8Ate/+ALbv/lCg7fy1cOT5E3Tl+gCZ6P8AXN39AKPs/wpo4f4BZeD/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYtr/AGHa/wqD5fx0lOz5JWzj+wBf3v4AguL/Bq7t + /6ia6/z/YeH7Znrj/ACX5/8TnOr/dm/i/ncAuv4CQNn+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAX9n/AFPV/w964v3Mhej60GLh+1Mf0/0NgeL/U6Tr/+yV6/z7T938uF7b/zyL5f+7iOf9/1Dd + /Htx5PwAAH37AAAAAAAAAAAAAAAAAAAAAACL6PsAiOb7AJTr+gCG6foAY9/8AFTW/wt34P/Eief8/1/g + /Noz1/1aa9z/RYPg/1Z14PxUP9j9V2fd/3eK5f7ggOf7/1Hd/Ghc4PsAbuL/AP///wCZ6v8AceL/AGvh + /wCH5vsAgeP8AZLq+hCF6fkZY+L7FT3X/Q154P+km+n/qFXW/UgHt/9sArT/qQCz/8YAs//IArT/rQe2 + /3FZ0/5Feeb7mU7d/Gdq4P0AjuX/AJbo/wD///8CcuP/AWPg/wB/5PwAUNf5AYLk/WaF5vzXZuL81jjY + /blC2P5eKcL/TQ+5/8QPuf/+Drn//w+5//8Puf//Drn//w+5//8Puf/OGL7/VVHa/jtz3/9njuX/aKTr + /3x55P54LtX+CjzY/gCV6/oAf+L/AHXf/xOR5v+1kOj+/1Ld/awbw/9MHb//3h2///8dv///Hb///x2/ + //8dv///Hb///x2///8dv///Hb//6CfD/1V74f+ZjOb+/3zl/f9L2/12wvP7ABbR/gBm2/8Ae+D/AJjo + /wCf6f85su7/05Hl/0sqxP++K8X//yvF//8rxf//K8X//yvF//8rxf//K8X//yvF//8rxf//K8X//yrF + /85q2/1FjOr64Gvj+7tB2vwTRdv8ABjR/gB25fsATdz8AGri/QDD8P8Fqu3/UUbO/2Q5y//8Ocv//znL + //85y///Ocv//znL//85y///Ocv//znL//85y///Ocv//znL//89zP9xiOn6d3nl+zyD5f0AqOv/AJjo + /wCE5fsAguf7AGHh+wkv1v1bGdH+UEjR/5pH0P//R9D//0fQ//9H0P//SNH//0rR//9K0f//SdH//0fQ + //9H0P//R9D//0fQ//9H0P+tY9v/V3Tf/7iR5v9mve//E17e/gCF5vsUh+j7W2rj+7JB2v30L9X+YVbW + /7VV1v//Vdb//1fX//9g2f//Ztr//2fa//9n2v//Ztr//2LZ//9Z1///Vdb//1XW//9V1v/Ia93+VHzi + /fuD5f3/hOb+tYXm/yl44f0af+P9nIbl/vmW6f7/qO3/YWPb/7Rl2///Ztv//3ff//+B4f//geH//4Hh + //+B4f//geH//4Hi//984P//atz//2Tb//9j2//Gker6Vo7q+uxv5PuoT9z9UFre/hSD5P0Aed7/CJro + /0q27/+ivfH/YnPf/5V03///gOL//5fn//+Y5///mOf//5jn//+Y5///mOf//5jn//+Y5///iOT//3Xf + //903/+pmu36RZbs+VN+5/oGUN39AFXd/gCH4/8AgeL/AIHl/QBi4fwySNv9infh/1yF4//5l+f//63s + //+t7P//rez//63s//+t7P//rez//63s//+t7P//oer//4bk//6C4/9sd+D/Wnrg/w2C5f0Ahuj6AGXh + +wCf7vkAier6AJDr+RBt4/u2TNz98V3e/k6V5/+0oer//77w///A8f//v/D//7/w//+/8P//v/D//7/w + ///A8f//q+z//5Xn/8R44f5Idt//2ork/1SO5f8Ar+7/AMLy/wCd7fkAd+P8AIzp+mx/5P3+jub//6zt + /7Os7f9Gpuz/077x///P9P//0PX//9D1///Q9f//0PX//9D1///G8v//q+3/3qDr/k2K6fqoe+P9/5Dm + /9Cu7f8lnur/AP///wCR6voAmOz5BYDk/GN/4v9qm+j/VLXv/1ao7vxBoOz+Rrfw/7TH8//51fb//9r3 + ///a9///1/f//8z0//y88f++rO3/TKft/F6R6/qkdOX7xGjh/cx24/50dOP/BG/i/wCD5fsAeuL8ANT/ + 9ACC4/4Amej/AJnr/QCD6PpWW9/8s3nj/07A8v9cx/T/lc71/7TN9f+2yPT/mrzy/mSE5/xLguP+rKzs + /7nA8/4Na+P6CznZ/A4j0/0KVtz/AUzb/wCB5PsAfuP8AHPg/QCe7vgAf+P8AH/n+gCC6PpUX+D8/5Dn + //G48P+Kjur6Ylfe/WGB4/9hru3/UJjt+lF35vrTaeH9/6js/9bT9v8Wqu7+AEzc/AAr1f4ALNT/ADTW + /gAAAAAAAAAAAAAAAAAAAAAAYNr+AH7m+wCF6PppeuP9/pro/7a38P4ygOj6olbd/f994f/0o+r/W6vz + 9wVz5fs5TNz8tYLm/tfa9/8ZyPP/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjOj6ADnN + /wCB5fxjfuL+bZLm/xGH5/0AceT7Sljd/fl13/+ynun/CZbp/gBi4fsAJNT9E1/f/mat7v8QtvD/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgeT7AIHl+wBr3f4FkOj9AI/l/wBe4PsAV+H6CEva + /Zxi3P9bX9v/AJbn/wAs1f0AOdj9ACPR/wFM2/8BYt//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAfeP8AHri/ABv3/0Aadz/AGnc/wBk4fsAStn9ADbV/hpF1/4URtf/AIbj/wAW0P4ApOz/AGLf + /wB55P8AhOb/AAAAAAAAAAAAAAAAAAAAAADwAA8A8AAPAPAADwDwAA8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAADwDwAA8A8AAPAPAA + DwA= + + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.Designer.cs new file mode 100644 index 0000000..3f62b9b --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.Designer.cs @@ -0,0 +1,237 @@ +namespace TimeClock.DbOp +{ + partial class FrmQuickAdd + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.label2 = new System.Windows.Forms.Label(); + this.txtName = new ryControls.TextBoxEx2(); + this.label1 = new System.Windows.Forms.Label(); + this.TxtContent = new ryControls.TextBoxEx2(); + this.buttonEx1 = new ryControls.ButtonEx(); + this.buttonEx2 = new ryControls.ButtonEx(); + this.buttonEx3 = new ryControls.ButtonEx(); + this.buttonEx4 = new ryControls.ButtonEx(); + this.buttonEx5 = new ryControls.ButtonEx(); + this.buttonEx6 = new ryControls.ButtonEx(); + this.buttonEx7 = new ryControls.ButtonEx(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.buttonEx8 = new ryControls.ButtonEx(); + this.SuspendLayout(); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(10, 12); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(29, 12); + this.label2.TabIndex = 11; + this.label2.Text = "标题"; + // + // txtName + // + this.txtName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtName.BackColor = System.Drawing.Color.White; + this.txtName.Location = new System.Drawing.Point(12, 27); + this.txtName.MaxLength = 999999999; + this.txtName.Multiline = false; + this.txtName.Name = "txtName"; + this.txtName.PasswordChar = '\0'; + this.txtName.ReadOnly = false; + this.txtName.SelectedText = ""; + this.txtName.SelectionLength = 0; + this.txtName.SelectionStart = 0; + this.txtName.Size = new System.Drawing.Size(554, 25); + this.txtName.TabIndex = 10; + this.txtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(10, 55); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(29, 12); + this.label1.TabIndex = 12; + this.label1.Text = "内容"; + // + // TxtContent + // + this.TxtContent.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtContent.BackColor = System.Drawing.Color.White; + this.TxtContent.Location = new System.Drawing.Point(12, 70); + this.TxtContent.MaxLength = 999999999; + this.TxtContent.Multiline = true; + this.TxtContent.Name = "TxtContent"; + this.TxtContent.PasswordChar = '\0'; + this.TxtContent.ReadOnly = false; + this.TxtContent.SelectedText = ""; + this.TxtContent.SelectionLength = 0; + this.TxtContent.SelectionStart = 0; + this.TxtContent.Size = new System.Drawing.Size(554, 303); + this.TxtContent.TabIndex = 13; + this.TxtContent.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + // + // buttonEx1 + // + this.buttonEx1.ForeColor = System.Drawing.Color.White; + this.buttonEx1.Location = new System.Drawing.Point(12, 379); + this.buttonEx1.Name = "buttonEx1"; + this.buttonEx1.Size = new System.Drawing.Size(103, 28); + this.buttonEx1.TabIndex = 14; + this.buttonEx1.Text = "5分钟后提醒"; + this.buttonEx1.UseVisualStyleBackColor = true; + this.buttonEx1.Click += new System.EventHandler(this.ButtonEx1_Click); + // + // buttonEx2 + // + this.buttonEx2.ForeColor = System.Drawing.Color.White; + this.buttonEx2.Location = new System.Drawing.Point(124, 379); + this.buttonEx2.Name = "buttonEx2"; + this.buttonEx2.Size = new System.Drawing.Size(103, 28); + this.buttonEx2.TabIndex = 15; + this.buttonEx2.Text = "10分钟后提醒"; + this.buttonEx2.UseVisualStyleBackColor = true; + this.buttonEx2.Click += new System.EventHandler(this.ButtonEx2_Click); + // + // buttonEx3 + // + this.buttonEx3.ForeColor = System.Drawing.Color.White; + this.buttonEx3.Location = new System.Drawing.Point(236, 379); + this.buttonEx3.Name = "buttonEx3"; + this.buttonEx3.Size = new System.Drawing.Size(103, 28); + this.buttonEx3.TabIndex = 16; + this.buttonEx3.Text = "30分钟后提醒"; + this.buttonEx3.UseVisualStyleBackColor = true; + this.buttonEx3.Click += new System.EventHandler(this.ButtonEx3_Click); + // + // buttonEx4 + // + this.buttonEx4.ForeColor = System.Drawing.Color.White; + this.buttonEx4.Location = new System.Drawing.Point(348, 379); + this.buttonEx4.Name = "buttonEx4"; + this.buttonEx4.Size = new System.Drawing.Size(103, 28); + this.buttonEx4.TabIndex = 17; + this.buttonEx4.Text = "1小时后提醒"; + this.buttonEx4.UseVisualStyleBackColor = true; + this.buttonEx4.Click += new System.EventHandler(this.ButtonEx4_Click); + // + // buttonEx5 + // + this.buttonEx5.ForeColor = System.Drawing.Color.White; + this.buttonEx5.Location = new System.Drawing.Point(236, 413); + this.buttonEx5.Name = "buttonEx5"; + this.buttonEx5.Size = new System.Drawing.Size(103, 28); + this.buttonEx5.TabIndex = 18; + this.buttonEx5.Text = "明早上班后提醒"; + this.toolTip1.SetToolTip(this.buttonEx5, "将在明天早上上班后10分钟进行提醒。"); + this.buttonEx5.UseVisualStyleBackColor = true; + this.buttonEx5.Click += new System.EventHandler(this.ButtonEx5_Click); + // + // buttonEx6 + // + this.buttonEx6.ForeColor = System.Drawing.Color.White; + this.buttonEx6.Location = new System.Drawing.Point(12, 413); + this.buttonEx6.Name = "buttonEx6"; + this.buttonEx6.Size = new System.Drawing.Size(103, 28); + this.buttonEx6.TabIndex = 19; + this.buttonEx6.Text = "早上下班前提醒"; + this.toolTip1.SetToolTip(this.buttonEx6, "将在早上下班前5分钟进行提醒。"); + this.buttonEx6.UseVisualStyleBackColor = true; + this.buttonEx6.Click += new System.EventHandler(this.ButtonEx6_Click); + // + // buttonEx7 + // + this.buttonEx7.ForeColor = System.Drawing.Color.White; + this.buttonEx7.Location = new System.Drawing.Point(124, 413); + this.buttonEx7.Name = "buttonEx7"; + this.buttonEx7.Size = new System.Drawing.Size(103, 28); + this.buttonEx7.TabIndex = 20; + this.buttonEx7.Text = "下午下班前提醒"; + this.toolTip1.SetToolTip(this.buttonEx7, "将在下午下班前5分钟进行提醒。"); + this.buttonEx7.UseVisualStyleBackColor = true; + this.buttonEx7.Click += new System.EventHandler(this.ButtonEx7_Click); + // + // buttonEx8 + // + this.buttonEx8.ForeColor = System.Drawing.Color.White; + this.buttonEx8.Location = new System.Drawing.Point(460, 379); + this.buttonEx8.Name = "buttonEx8"; + this.buttonEx8.Size = new System.Drawing.Size(103, 28); + this.buttonEx8.TabIndex = 21; + this.buttonEx8.Text = "2小时后提醒"; + this.buttonEx8.UseVisualStyleBackColor = true; + this.buttonEx8.Click += new System.EventHandler(this.ButtonEx8_Click); + // + // FrmQuickAdd + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(578, 447); + this.Controls.Add(this.buttonEx8); + this.Controls.Add(this.buttonEx7); + this.Controls.Add(this.buttonEx6); + this.Controls.Add(this.buttonEx5); + this.Controls.Add(this.buttonEx4); + this.Controls.Add(this.buttonEx3); + this.Controls.Add(this.buttonEx2); + this.Controls.Add(this.buttonEx1); + this.Controls.Add(this.TxtContent); + this.Controls.Add(this.label1); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtName); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.Name = "FrmQuickAdd"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "快速提醒"; + this.Load += new System.EventHandler(this.FrmQuickAdd_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label2; + private ryControls.TextBoxEx2 txtName; + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 TxtContent; + private ryControls.ButtonEx buttonEx1; + private ryControls.ButtonEx buttonEx2; + private ryControls.ButtonEx buttonEx3; + private ryControls.ButtonEx buttonEx4; + private ryControls.ButtonEx buttonEx5; + private ryControls.ButtonEx buttonEx6; + private ryControls.ButtonEx buttonEx7; + private System.Windows.Forms.ToolTip toolTip1; + private ryControls.ButtonEx buttonEx8; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.cs new file mode 100644 index 0000000..8c37807 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.cs @@ -0,0 +1,136 @@ +using ryCommon; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmQuickAdd : Form + { + public ModalForm mr = null; + public FrmQuickAdd() + { + InitializeComponent(); + } + private void AddTip(DateTime dt) + { + if(txtName.Text=="") + { + MessageBox.Show("提醒标题不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + Itrycn_Db.AddTip(txtName.Text, TxtContent.Text,dt); + if (mr != null) mr.Form_Result = DialogResult.OK; + } + private void ButtonEx1_Click(object sender, EventArgs e) + { + AddTip(DateTime.Now.AddMinutes(5)); + } + + private void ButtonEx2_Click(object sender, EventArgs e) + { + AddTip(DateTime.Now.AddMinutes(10)); + } + + private void ButtonEx3_Click(object sender, EventArgs e) + { + AddTip(DateTime.Now.AddMinutes(30)); + } + + private void ButtonEx4_Click(object sender, EventArgs e) + { + AddTip(DateTime.Now.AddMinutes(60)); + } + + private void ButtonEx5_Click(object sender, EventArgs e) + { + AddTip(DateTime.Now.AddDays(1).Date.AddHours(8).AddMinutes(10)); + } + + private void ButtonEx6_Click(object sender, EventArgs e) + { + if(DateTime.Now.Hour>=11) + { + if(DateTime.Now.Hour==11 && DateTime.Now.Minute>20) + { + MessageBox.Show("已经过了提醒时间,不能再添加。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + MessageBox.Show("已经过了提醒时间,不能再添加。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + AddTip(DateTime.Now.Date.AddHours(11).AddMinutes(25)); + } + /// + /// 获取下午下班时间 + /// + /// + private DateTime GetAfterNoon_ClosingTime() + { + DateTime nowTime = DateTime.Now; + #region 下班时间 + if (nowTime.Month >= 5 && nowTime.Month <= 9) //夏天上班时间 + { + if (nowTime.Month == 5 && nowTime.Day < 1) //夏天上班时间 + { + return Convert.ToDateTime(nowTime.ToString("yyyy-MM-dd") + " 17:00:00"); + } + else + { + return Convert.ToDateTime(nowTime.ToString("yyyy-MM-dd") + " 17:30:00"); + } + } + else + { + return Convert.ToDateTime(nowTime.ToString("yyyy-MM-dd") + " 17:00:00"); + } + #endregion + } + private void ButtonEx7_Click(object sender, EventArgs e) + { + if (DateTime.Now> GetAfterNoon_ClosingTime().AddMinutes(-10)) + { + MessageBox.Show("已经过了提醒时间,不能再添加。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + AddTip(GetAfterNoon_ClosingTime().AddMinutes(-5)); + } + + private void FrmQuickAdd_Load(object sender, EventArgs e) + { + if(!DbOp.Custom.WorkQuickTip) + { + buttonEx5.Visible = false; + buttonEx6.Visible = false; + buttonEx7.Visible = false; + buttonEx1.Top = buttonEx5.Top; + buttonEx2.Top = buttonEx1.Top; + buttonEx3.Top = buttonEx1.Top; + buttonEx4.Top = buttonEx1.Top; + buttonEx8.Top = buttonEx1.Top; + TxtContent.Height = buttonEx1.Top - TxtContent.Top - 3; + } + if (DateTime.Now > GetAfterNoon_ClosingTime().AddMinutes(-10)) + { + buttonEx7.Enabled = false; + } + if (DateTime.Now.Hour >= 11) + { + if ((DateTime.Now.Hour == 11 && DateTime.Now.Minute > 20) || DateTime.Now.Hour>11) + { + buttonEx6.Enabled = false; + } + } + } + + private void ButtonEx8_Click(object sender, EventArgs e) + { + AddTip(DateTime.Now.AddMinutes(120)); + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.resx new file mode 100644 index 0000000..df8339b --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmQuickAdd.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmRest.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmRest.Designer.cs new file mode 100644 index 0000000..7a7e147 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmRest.Designer.cs @@ -0,0 +1,133 @@ +namespace TimeClock.DbOp +{ + partial class FrmRest + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmRest)); + this.LblTime = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.label1 = new System.Windows.Forms.Label(); + this.LblNowTime = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // LblTime + // + this.LblTime.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTime.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTime.ForeColor = System.Drawing.Color.White; + this.LblTime.Location = new System.Drawing.Point(110, 250); + this.LblTime.Name = "LblTime"; + this.LblTime.Size = new System.Drawing.Size(595, 64); + this.LblTime.TabIndex = 6; + this.LblTime.Text = "00:00:00"; + this.LblTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.Aqua; + this.label1.Location = new System.Drawing.Point(12, 94); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(776, 64); + this.label1.TabIndex = 7; + this.label1.Text = "站起身,眺望一下远方"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // LblNowTime + // + this.LblNowTime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.LblNowTime.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblNowTime.ForeColor = System.Drawing.Color.Aqua; + this.LblNowTime.Location = new System.Drawing.Point(12, 148); + this.LblNowTime.Name = "LblNowTime"; + this.LblNowTime.Size = new System.Drawing.Size(776, 64); + this.LblNowTime.TabIndex = 9; + this.LblNowTime.Text = "00:00:00"; + this.LblNowTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(756, 406); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(32, 32); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 8; + this.pictureBox1.TabStop = false; + this.pictureBox1.Visible = false; + this.pictureBox1.Click += new System.EventHandler(this.PictureBox1_Click); + // + // FrmRest + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.LblNowTime); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.LblTime); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.KeyPreview = true; + this.Name = "FrmRest"; + this.Opacity = 0.9D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "休息中"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmRest_FormClosing); + this.Load += new System.EventHandler(this.FrmRest_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FrmRest_KeyDown); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label LblTime; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label LblNowTime; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmRest.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmRest.cs new file mode 100644 index 0000000..fd506b0 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmRest.cs @@ -0,0 +1,146 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmRest : Form + { + public FrmRest() + { + InitializeComponent(); + dt_rest_end = DateTime.Now.AddMinutes(Itrycn_Info.Rest); + LblTime.Text = ryCommon.RyDate.DateDiff(dt_rest_end); + } + /// + /// 仅仅作为多显示器支持,不提供关闭等操作 + /// + bool IsOnlyShow = false; + public FrmRest(DateTime dt,bool _IsOnlyShow) + { + InitializeComponent(); + dt_rest_end = dt; + LblTime.Text = ryCommon.RyDate.DateDiff(dt_rest_end); + IsOnlyShow = _IsOnlyShow; + Opacity = Itrycn_Info.RestOpacity/100d; + } + DateTime dt_rest_end = DateTime.Now; + API.SoundPlay sound = null; + private void FrmRest_Load(object sender, EventArgs e) + { + LblTime.Location = new Point((Width-LblTime.Width)/2,(Height-LblTime.Height)/2); + label1.Left = (Width - label1.Width) / 2; + timer1.Start(); + if(!IsOnlyShow) + { + API.Hook.Hook_Start(); + if (Itrycn_Info.RestMusic_On) + { + sound = new API.SoundPlay + { + Volume = Itrycn_Info.MusicVolume / 100f + }; + Thread th = new Thread(PlayMusic); + th.Start(); + } + } + } + bool IsExit = false; + private void PlayMusic() + { + if(Itrycn_Info.MusicType==0) + { + if (!System.IO.File.Exists(Itrycn_Info.MusicPath)) { return; } + while (true) + { + if (IsExit) { break; } + sound.Play(Itrycn_Info.MusicPath); + } + } + else if (Itrycn_Info.MusicType == 1) + { + if (!System.IO.Directory.Exists(Itrycn_Info.MusicPath)) { return; } + string[] files = System.IO.Directory.GetFiles(Itrycn_Info.MusicPath,"*.mp3"); + if(files==null || files.Length < 1) { return; } + while (true) + { + if (IsExit) { break; } + Random rd = new Random(); + sound.Play(files[rd.Next(0, files.Length-1)]); + } + } + } + int time_index = 60; + private void Timer1_Tick(object sender, EventArgs e) + { + LblNowTime.Text = DateTime.Now.ToString("HH:mm:ss"); + if (Itrycn_Info.RestMode == 0) + { + time_index--; + if (time_index == 0) + { + pictureBox1.Visible = true; + } + } + if (dt_rest_end<=DateTime.Now) + { + IsExit = true; + if (sound != null) { sound.Stop(); } + timer1.Stop(); + if (!IsOnlyShow) + { + Itrycn_Info.InitRest(); + } + this.Close(); + } + else + { + if(MyDb.RyWin32.GetForegroundWindow()!=Handle) + { + ryCommon.RyForm.SetTopMost(Handle,true); + } + LblTime.Text = ryCommon.RyDate.DateDiff(dt_rest_end); + } + if(!Itrycn_Info.IsRestNowing) + { + IsExit = true; + if (sound != null) { sound.Stop(); } + timer1.Stop(); + this.Close(); + } + } + + private void FrmRest_FormClosing(object sender, FormClosingEventArgs e) + { + IsExit = true; + if (!IsOnlyShow) + { + Itrycn_Info.IsRestNowing = false; + API.Hook.Hook_Clear(); + } + } + + private void FrmRest_KeyDown(object sender, KeyEventArgs e) + { + if ((e.KeyCode == Keys.F4) && (e.Alt == true)) //屏蔽ALT+F4 + { + e.Handled = true; + } + } + + private void PictureBox1_Click(object sender, EventArgs e) + { + IsExit = true; + if (sound != null) { sound.Stop(); } + timer1.Stop(); + Itrycn_Info.InitRest(); + this.Close(); + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmRest.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmRest.resx new file mode 100644 index 0000000..723b1a9 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmRest.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABGdBTUEAALGPC/xhBQAAC7FJREFUeF7t + nXuMJFUVhwcU5DXs7E5XVUQjBHyA+IhGg0qUCIKi+AoqD0VREvUvNQgGCagYVEIiYqJo4uMPkUVude8w + WbIBIq4iSIQNBF/RqCzUre7ZZWGXh4uAhvbc8Zjg7PXiTnfdqur5vuTLsrBsnXvv+VXd6qnunoIIGLvv + bK94bWLKM1NjL01zuyEz9teZKX4r3pOaYov8+0ez3A6d8vuH07wYyK9/kT97t/y32+T318qvFyWmf8qa + 7sKR+jcDtI/E2BemefkJaejcBeA/jT9uF8OTF9/t5MWp0+vKWT08QLNIzP0HJN3yA9K0PxDvfXoTx1QC + c6dcdb4uoTlBSwOoieFwzyS3J2Z5cbVslx7zNWzNbk3y4htJt/8qrRigembXDY6QM/RlcqZe8DRlM5V7 + HdnunTu9ftDRYQCMF3cmliabk23MU94mbIc7F7dg81szHRbAaGS98nUSjOs9zdZii8clKFes6ZXP12EC + 7B4d03+JXC1+6m+wyXExKBsePFCHDfAMbNy8jzTOJdI4Ty5tpklVxrpFTgYf1BkA8ONeHs2MLXxNtBKU + reQvst7WQ3U6AP5NZ37bdGaKn/iaZmVaXKBTAyud2e7g8Cp/2t1WZdv1S27iVzhZtzitoT/ka4QSkoeS + vHy/ThesJNwzTL6mQK/f02mDiccM914JL9+OW5mzDW7udBZhIlk/2E+uHDf7GgCfWTd3bg51NmGSWG22 + r5Kb8U2+hcfdUObQveqn0wqTgHuvhGwR7vYuOO62qbF3uROOTi+0msVtlb3Tt9C4fN3LwFObhnvpLEMr + McNnZcbe5FtgHF0JyfzUcLiHzja0DVlEs3RRccwa+32dbmgTsk++1LugWIE8mtIq3JOp/oXEqky7xVt1 + +qHJLD5blReP+xYRqzPNix2d+eIgXQZoJMbuK1urP/sWECNo7O3uhRFdDWgaEo7cu3AYTbmSXKbLAU3C + fWqhb8GwBnv9t+iyQBNwP9V1e2DvYmF8TXEPDzY2iNQUV3gXCuvT2K/p8kCdyEK8PG33Z1VNpLIm/+is + K1+sywR14V458S0Q1m9q7K90maAOFt8y61mYNujezirh/pl71Uf++ey0az/kbm7dD9ySbvGxxNjz3Gfr + yp9dK26Uff3fn/7/t0UZ18m6XBAbOUP90bcoTVRq/ZOE4cKOKd8xa+zzdAi7RWr6x0uoLl8Ml+cYTVTG + fZeWDzGRM+17fAvSQNemvf7RWvbYcFdP13ye4zVOuRq+TcuGWGR5cYdvMZqiXC2ujfFNUFm3/04Jym98 + NTRFmYubtVyIQZaXx/kWoiFuTbr27VpqHIbDPRbvYUyx2VNPI0zz/hu0Wqga2YPf6FuEuk1zu2FmbseM + lhkf9+7Jhj5uI3PT0yqhSmbmFg7xLUDdJqa4WEusHbnCnu+rsW5rPXmsFNybc3yTX5dyNXsyM/Z0La8x + JKZ8X9Me+3dfbKrlQVW4l0t9k1+Lxv4tM+WxWlrjSHrFm6TOnbvUXZPcrFeM+65x38TX4eKjFL3yzVpa + Y3E/eJSTyj99Y6jD5f4MCP4PZIK/uXTCa7OB26r/RWLsWd4x1GJ5vpYF40b2+33/pMdV6rhCS2oNcj9y + tW8ssZW5u0VLgnHingz1TXhs3T2Qe2uvltUa3PcQyrbQ+sYU2zbOX+NJu+UnfZMdU2mwpzq9wau1pNYh + N8kn+MYVW/dMmZYE40K2CNf4Jjum0mDf0XJai4yjAR+mV3xVy4FxITfF2/yTHUfZWj266rr7Vms5rWWm + NzjYN76YypX4Vi0HxsEas/BS30THVAJyqZbTemQ87j0m3nHG0n3dtpYDo5Ka8gzfJMe009v2XC2n9aTr + ylf6xhjTtGtfoeXAqMie9Su+SY6lXD26WsrEINucWr8SIjH9U7QUGBVp0FqfUO3k5UlaysSQdO2nfGON + pazpF7QUGBU529X27VBy7Ee0jInCfY6ub7yxlIBcpaXAqNT6VKqx12kZE4f7gDfvmCPotnhaBozCajN4 + gW+CY5nmxTlaysQhJ54f+sYcRVNs1zJgFLKuPco7wZFswxO7yyXLy8/4xhxLvr5tDHSMPcY3ubGc5O+8 + SHJ7om/MsZxeP+hoKbBcan5+aKeWMZFkva2HesYczaRrX6SlwHKRffK7fZMbQwnnQMuYSBJz/wG+cUdT + ts9aCiwX9wMl7+TG0NhCy5hY5Gb5Ce/YI+i2eFoGLJc0Lz/sm9wYyhXkr1rGxJLW+R6RbnGalgHLJcmL + j3onN4am2KxlTCxylbzPO/YIJt3yI1oGLBcCUi0EpOUQkGohIC2HgFQLAWk5BKRaCEjLqfPrnVfCq1ju + JOAbewzdJ9JrGbBcuIJUS1rjl/C4b9vSMmC5cAWpFtliXecbewx52+0Y4ApSLWluP+cde/U+oCXAKNR5 + BZGA3KNlTCzpXHGYd+wVm+blt7UEGAWuINXjPmvYO/6KdG9jnl5XzurhYRQISPUsPtUb8dWs1Nj36qFh + VNhixcHdMMuYt+4yB2NWwnGRHhLGAQGJh3uHn2x/et65GFEJRsn3pVcAAYlPZvrvWnz519jHvPOyG0rg + 7nZXjeyGLfvrXw/jhHsQgAAEBCAAAQEIQEAAAhAQgAAEBCAAAQEIQEAAAhAQgAAEBCAAAQEIQEAAAhAQ + gAAEBCAAAQEIQEAAAhAQgAAEBCAAAQEIQEAAAhAQgAAEBCAAAQEIQEAAAhAQWBGkvf7RaV5cmOb2x+Kt + qSkWvE2JuETXK4s9k9srs7y4IDXl67Wt2k1mymNlgEaCsWPpoBFH0tgHJSxXyw7jjdpu7WF23eAISfsG + 78AQx6ycgK91XwSk7ddspNjLfINArNo0L7+sbdg8Vpvtq+Syd5OvcMRYuqtJ4z5JfqY3OFjCUdsX0iP+ + t8XvDjALibZnzawf7JeZ4g/+QhFr0tjbpzYOn61dWh+pKW70FohYs+5lYW3TepD93md9hSE2xdSUZ2i7 + xqUzv21arh4P+4pCbIzGFlObhntp28ZDDn7JLsUgNlFjP61tG4cDjV3jLQSxiRp7v7ZuHGp9gBBxGaam + f7y2b/XIvce8rwjEpprm9lvavhWzcfM+mSme8BWB2FTlpN7XDq6WTrd4ja8AxKbbmS8O0jaujk5enuQ7 + OGLTjfI+ksTYs3wHR2y6nbw4Vdu4OpK8/Lzv4IhNN82Lc7SNqyPN7Zd8B0dsutK7X9Q2rg4Cgm2VgCAG + JCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAG + JCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAG + JCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAG + JCCIAQkIYkACghiQgCAGJCCIAQkIYkACghiQgCAGJCCIAQkIYkACghgwSkASY8/zHRyx6abGnqttXB2J + Kc/0HRyx6aamPEPbuDrSvDjBd3DE5lsep21cHdm64mX+gyM229nu4HBt4wrZNNxLDrZz6cERm2xqioen + hsM9tYurJcuLa3xFIDbVNLdXavtWT2bs6b4iEJtq2rUna/tWz2qzfZWvCMQmKlePR7Ibtuyv7RuHxBQX + +4pBbJ7l+dq28Viz4cED5cbnIX9BiI1x69SG4XO0beMiATnbUxBiczTlx7Vd6yE19npvYYg1K73Z1Tat + D3fzk5ni974CEeuzuGPKDPfWNq2XmbmFQ6Soe3ctErEG5YQ9vX7Q0fZsBjNzO2YyY3/uLRgxkm7LP7V+ + sJ+2ZfOQkFzuKxyxaiUcF2kbNps13YUjuZpgLCUYc+lccZi2X3vo5OVJaW577kEx38AQR/ABcW3a6x+t + 7dZuOsYe497yKGm/SrxNQrNlyYARvaZ5MZB+uUX65kfup+JZ1x6lbVUxU1P/Aj0TU8JH+dmMAAAAAElF + TkSuQmCC + + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.Designer.cs new file mode 100644 index 0000000..fab3e17 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.Designer.cs @@ -0,0 +1,1064 @@ +namespace TimeClock.DbOp +{ + partial class FrmSetting + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSetting)); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.BtnTestMusic = new ryControls.ButtonEx(); + this.NumMusicVolume = new System.Windows.Forms.NumericUpDown(); + this.label16 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.NumSpeakerRate = new System.Windows.Forms.NumericUpDown(); + this.label14 = new System.Windows.Forms.Label(); + this.NumSpeakerVolume = new System.Windows.Forms.NumericUpDown(); + this.label13 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.BtnSpeak = new ryControls.ButtonEx(); + this.CbbSpeaker = new ryControls.RyComboBox(); + this.NumCurrWeek = new System.Windows.Forms.NumericUpDown(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.ChkAutoRun = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.NuAutoCloseMinute = new System.Windows.Forms.NumericUpDown(); + this.ChkAutoClose = new System.Windows.Forms.CheckBox(); + this.ChkFullScreenTip = new System.Windows.Forms.CheckBox(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.PnlHourlyChime = new System.Windows.Forms.Panel(); + this.ChkUse24Hours = new System.Windows.Forms.CheckBox(); + this.PnlHours = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.ChkUseStarHourlyChime = new System.Windows.Forms.CheckBox(); + this.ChkHourlyChime_On = new System.Windows.Forms.CheckBox(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.PnlRestTip = new System.Windows.Forms.Panel(); + this.label19 = new System.Windows.Forms.Label(); + this.NumIdleOverMinute = new System.Windows.Forms.NumericUpDown(); + this.ChkIdleOver_On = new System.Windows.Forms.CheckBox(); + this.label17 = new System.Windows.Forms.Label(); + this.NumRestOpacity = new System.Windows.Forms.NumericUpDown(); + this.label18 = new System.Windows.Forms.Label(); + this.ChkSaveSchedule = new System.Windows.Forms.CheckBox(); + this.PnlRestMusic = new System.Windows.Forms.Panel(); + this.CbbMusicPath = new ryControls.RyComboBox(); + this.BtnBrowserMusic = new ryControls.ButtonEx(); + this.CbbMusicType = new ryControls.RyComboBox(); + this.label15 = new System.Windows.Forms.Label(); + this.ChkRestMusic_On = new System.Windows.Forms.CheckBox(); + this.CbbRestMode = new ryControls.RyComboBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.NumIdleMinute = new System.Windows.Forms.NumericUpDown(); + this.ChkStopRestByIdle = new System.Windows.Forms.CheckBox(); + this.ChkStopRestByFullScreen = new System.Windows.Forms.CheckBox(); + this.label9 = new System.Windows.Forms.Label(); + this.NumDelayRestCount = new System.Windows.Forms.NumericUpDown(); + this.ChkDelayRestOn = new System.Windows.Forms.CheckBox(); + this.ChkSoundBeforeRest = new System.Windows.Forms.CheckBox(); + this.ChkTipBeforeRest = new System.Windows.Forms.CheckBox(); + this.label7 = new System.Windows.Forms.Label(); + this.NumRest = new System.Windows.Forms.NumericUpDown(); + this.label8 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.NumRestInteval = new System.Windows.Forms.NumericUpDown(); + this.label5 = new System.Windows.Forms.Label(); + this.ChkRestTip_On = new System.Windows.Forms.CheckBox(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumMusicVolume)).BeginInit(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumSpeakerRate)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumSpeakerVolume)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumCurrWeek)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NuAutoCloseMinute)).BeginInit(); + this.tabPage2.SuspendLayout(); + this.PnlHourlyChime.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.PnlRestTip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumIdleOverMinute)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumRestOpacity)).BeginInit(); + this.PnlRestMusic.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumIdleMinute)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumDelayRestCount)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumRest)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumRestInteval)).BeginInit(); + this.SuspendLayout(); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Location = new System.Drawing.Point(3, 3); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(537, 406); + this.tabControl1.TabIndex = 0; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.BtnTestMusic); + this.tabPage1.Controls.Add(this.NumMusicVolume); + this.tabPage1.Controls.Add(this.label16); + this.tabPage1.Controls.Add(this.groupBox1); + this.tabPage1.Controls.Add(this.NumCurrWeek); + this.tabPage1.Controls.Add(this.label3); + this.tabPage1.Controls.Add(this.label2); + this.tabPage1.Controls.Add(this.ChkAutoRun); + this.tabPage1.Controls.Add(this.label1); + this.tabPage1.Controls.Add(this.NuAutoCloseMinute); + this.tabPage1.Controls.Add(this.ChkAutoClose); + this.tabPage1.Controls.Add(this.ChkFullScreenTip); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(529, 380); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "基本"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // BtnTestMusic + // + this.BtnTestMusic.ForeColor = System.Drawing.Color.White; + this.BtnTestMusic.Location = new System.Drawing.Point(147, 177); + this.BtnTestMusic.Name = "BtnTestMusic"; + this.BtnTestMusic.Size = new System.Drawing.Size(59, 23); + this.BtnTestMusic.TabIndex = 23; + this.BtnTestMusic.Text = "测试"; + this.BtnTestMusic.UseVisualStyleBackColor = true; + this.BtnTestMusic.Click += new System.EventHandler(this.BtnTestMusic_Click); + // + // NumMusicVolume + // + this.NumMusicVolume.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumMusicVolume.Location = new System.Drawing.Point(67, 177); + this.NumMusicVolume.Name = "NumMusicVolume"; + this.NumMusicVolume.Size = new System.Drawing.Size(74, 23); + this.NumMusicVolume.TabIndex = 22; + this.NumMusicVolume.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumMusicVolume.Value = new decimal(new int[] { + 100, + 0, + 0, + 0}); + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(6, 183); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(53, 12); + this.label16.TabIndex = 21; + this.label16.Text = "音乐音量"; + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.NumSpeakerRate); + this.groupBox1.Controls.Add(this.label14); + this.groupBox1.Controls.Add(this.NumSpeakerVolume); + this.groupBox1.Controls.Add(this.label13); + this.groupBox1.Controls.Add(this.label12); + this.groupBox1.Controls.Add(this.BtnSpeak); + this.groupBox1.Controls.Add(this.CbbSpeaker); + this.groupBox1.Location = new System.Drawing.Point(8, 100); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(515, 70); + this.groupBox1.TabIndex = 19; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "语音朗读"; + // + // NumSpeakerRate + // + this.NumSpeakerRate.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumSpeakerRate.Location = new System.Drawing.Point(206, 40); + this.NumSpeakerRate.Maximum = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.NumSpeakerRate.Minimum = new decimal(new int[] { + 10, + 0, + 0, + -2147483648}); + this.NumSpeakerRate.Name = "NumSpeakerRate"; + this.NumSpeakerRate.Size = new System.Drawing.Size(74, 23); + this.NumSpeakerRate.TabIndex = 22; + this.NumSpeakerRate.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumSpeakerRate.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(147, 46); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(53, 12); + this.label14.TabIndex = 21; + this.label14.Text = "朗读速度"; + // + // NumSpeakerVolume + // + this.NumSpeakerVolume.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumSpeakerVolume.Location = new System.Drawing.Point(67, 40); + this.NumSpeakerVolume.Name = "NumSpeakerVolume"; + this.NumSpeakerVolume.Size = new System.Drawing.Size(74, 23); + this.NumSpeakerVolume.TabIndex = 20; + this.NumSpeakerVolume.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumSpeakerVolume.Value = new decimal(new int[] { + 100, + 0, + 0, + 0}); + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(6, 46); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(53, 12); + this.label13.TabIndex = 19; + this.label13.Text = "朗读音量"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(6, 18); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(41, 12); + this.label12.TabIndex = 9; + this.label12.Text = "朗读人"; + // + // BtnSpeak + // + this.BtnSpeak.ForeColor = System.Drawing.Color.White; + this.BtnSpeak.Location = new System.Drawing.Point(451, 12); + this.BtnSpeak.Name = "BtnSpeak"; + this.BtnSpeak.Size = new System.Drawing.Size(59, 23); + this.BtnSpeak.TabIndex = 18; + this.BtnSpeak.Text = "朗读"; + this.BtnSpeak.UseVisualStyleBackColor = true; + this.BtnSpeak.Click += new System.EventHandler(this.BtnSpeak_Click); + // + // CbbSpeaker + // + this.CbbSpeaker.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbSpeaker.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbSpeaker.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbSpeaker.FormattingEnabled = true; + this.CbbSpeaker.Items.AddRange(new object[] { + "休息一分钟后可手动解锁", + "强制休息到结束"}); + this.CbbSpeaker.Location = new System.Drawing.Point(67, 13); + this.CbbSpeaker.Name = "CbbSpeaker"; + this.CbbSpeaker.Size = new System.Drawing.Size(378, 22); + this.CbbSpeaker.TabIndex = 17; + // + // NumCurrWeek + // + this.NumCurrWeek.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumCurrWeek.Location = new System.Drawing.Point(101, 71); + this.NumCurrWeek.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.NumCurrWeek.Name = "NumCurrWeek"; + this.NumCurrWeek.Size = new System.Drawing.Size(61, 23); + this.NumCurrWeek.TabIndex = 8; + this.NumCurrWeek.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(168, 76); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(17, 12); + this.label3.TabIndex = 7; + this.label3.Text = "周"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 76); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(89, 12); + this.label2.TabIndex = 5; + this.label2.Text = "设置当前周为第"; + // + // ChkAutoRun + // + this.ChkAutoRun.AutoSize = true; + this.ChkAutoRun.Location = new System.Drawing.Point(6, 52); + this.ChkAutoRun.Name = "ChkAutoRun"; + this.ChkAutoRun.Size = new System.Drawing.Size(96, 16); + this.ChkAutoRun.TabIndex = 4; + this.ChkAutoRun.Text = "自动开机启动"; + this.ChkAutoRun.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(190, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(89, 12); + this.label1.TabIndex = 3; + this.label1.Text = "分钟后自动关闭"; + // + // NuAutoCloseMinute + // + this.NuAutoCloseMinute.Enabled = false; + this.NuAutoCloseMinute.Location = new System.Drawing.Point(108, 27); + this.NuAutoCloseMinute.Maximum = new decimal(new int[] { + 60, + 0, + 0, + 0}); + this.NuAutoCloseMinute.Name = "NuAutoCloseMinute"; + this.NuAutoCloseMinute.Size = new System.Drawing.Size(76, 21); + this.NuAutoCloseMinute.TabIndex = 2; + this.NuAutoCloseMinute.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // ChkAutoClose + // + this.ChkAutoClose.AutoSize = true; + this.ChkAutoClose.Location = new System.Drawing.Point(6, 30); + this.ChkAutoClose.Name = "ChkAutoClose"; + this.ChkAutoClose.Size = new System.Drawing.Size(96, 16); + this.ChkAutoClose.TabIndex = 1; + this.ChkAutoClose.Text = "提醒界面显示"; + this.ChkAutoClose.UseVisualStyleBackColor = true; + this.ChkAutoClose.CheckedChanged += new System.EventHandler(this.ChkAutoClose_CheckedChanged); + // + // ChkFullScreenTip + // + this.ChkFullScreenTip.AutoSize = true; + this.ChkFullScreenTip.Location = new System.Drawing.Point(6, 6); + this.ChkFullScreenTip.Name = "ChkFullScreenTip"; + this.ChkFullScreenTip.Size = new System.Drawing.Size(120, 16); + this.ChkFullScreenTip.TabIndex = 0; + this.ChkFullScreenTip.Text = "提醒界面全屏显示"; + this.toolTip1.SetToolTip(this.ChkFullScreenTip, "当选择全屏显示时,提醒界面将覆盖整个屏幕。"); + this.ChkFullScreenTip.UseVisualStyleBackColor = true; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.PnlHourlyChime); + this.tabPage2.Controls.Add(this.ChkHourlyChime_On); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(529, 380); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "整点报时"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // PnlHourlyChime + // + this.PnlHourlyChime.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.PnlHourlyChime.Controls.Add(this.ChkUse24Hours); + this.PnlHourlyChime.Controls.Add(this.PnlHours); + this.PnlHourlyChime.Controls.Add(this.label4); + this.PnlHourlyChime.Controls.Add(this.ChkUseStarHourlyChime); + this.PnlHourlyChime.Enabled = false; + this.PnlHourlyChime.Location = new System.Drawing.Point(6, 24); + this.PnlHourlyChime.Name = "PnlHourlyChime"; + this.PnlHourlyChime.Size = new System.Drawing.Size(517, 346); + this.PnlHourlyChime.TabIndex = 2; + // + // ChkUse24Hours + // + this.ChkUse24Hours.AutoSize = true; + this.ChkUse24Hours.Location = new System.Drawing.Point(199, 6); + this.ChkUse24Hours.Name = "ChkUse24Hours"; + this.ChkUse24Hours.Size = new System.Drawing.Size(96, 16); + this.ChkUse24Hours.TabIndex = 5; + this.ChkUse24Hours.Text = "24小时制报时"; + this.ChkUse24Hours.UseVisualStyleBackColor = true; + // + // PnlHours + // + this.PnlHours.Location = new System.Drawing.Point(11, 48); + this.PnlHours.Name = "PnlHours"; + this.PnlHours.Size = new System.Drawing.Size(493, 100); + this.PnlHours.TabIndex = 4; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.ForeColor = System.Drawing.Color.Gray; + this.label4.Location = new System.Drawing.Point(10, 28); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(185, 12); + this.label4.TabIndex = 3; + this.label4.Text = "以下勾选的时间点将进行整点报时"; + // + // ChkUseStarHourlyChime + // + this.ChkUseStarHourlyChime.AutoSize = true; + this.ChkUseStarHourlyChime.Location = new System.Drawing.Point(12, 6); + this.ChkUseStarHourlyChime.Name = "ChkUseStarHourlyChime"; + this.ChkUseStarHourlyChime.Size = new System.Drawing.Size(168, 16); + this.ChkUseStarHourlyChime.TabIndex = 2; + this.ChkUseStarHourlyChime.Text = "优先使用明星真人语音报时"; + this.ChkUseStarHourlyChime.UseVisualStyleBackColor = true; + // + // ChkHourlyChime_On + // + this.ChkHourlyChime_On.AutoSize = true; + this.ChkHourlyChime_On.Location = new System.Drawing.Point(6, 6); + this.ChkHourlyChime_On.Name = "ChkHourlyChime_On"; + this.ChkHourlyChime_On.Size = new System.Drawing.Size(120, 16); + this.ChkHourlyChime_On.TabIndex = 1; + this.ChkHourlyChime_On.Text = "开启整点语音报时"; + this.ChkHourlyChime_On.UseVisualStyleBackColor = true; + this.ChkHourlyChime_On.CheckedChanged += new System.EventHandler(this.ChkHourlyChime_On_CheckedChanged); + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.PnlRestTip); + this.tabPage3.Controls.Add(this.ChkRestTip_On); + this.tabPage3.Location = new System.Drawing.Point(4, 22); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Padding = new System.Windows.Forms.Padding(3); + this.tabPage3.Size = new System.Drawing.Size(529, 380); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "休息提醒"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // PnlRestTip + // + this.PnlRestTip.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.PnlRestTip.Controls.Add(this.label19); + this.PnlRestTip.Controls.Add(this.NumIdleOverMinute); + this.PnlRestTip.Controls.Add(this.ChkIdleOver_On); + this.PnlRestTip.Controls.Add(this.label17); + this.PnlRestTip.Controls.Add(this.NumRestOpacity); + this.PnlRestTip.Controls.Add(this.label18); + this.PnlRestTip.Controls.Add(this.ChkSaveSchedule); + this.PnlRestTip.Controls.Add(this.PnlRestMusic); + this.PnlRestTip.Controls.Add(this.ChkRestMusic_On); + this.PnlRestTip.Controls.Add(this.CbbRestMode); + this.PnlRestTip.Controls.Add(this.label11); + this.PnlRestTip.Controls.Add(this.label10); + this.PnlRestTip.Controls.Add(this.NumIdleMinute); + this.PnlRestTip.Controls.Add(this.ChkStopRestByIdle); + this.PnlRestTip.Controls.Add(this.ChkStopRestByFullScreen); + this.PnlRestTip.Controls.Add(this.label9); + this.PnlRestTip.Controls.Add(this.NumDelayRestCount); + this.PnlRestTip.Controls.Add(this.ChkDelayRestOn); + this.PnlRestTip.Controls.Add(this.ChkSoundBeforeRest); + this.PnlRestTip.Controls.Add(this.ChkTipBeforeRest); + this.PnlRestTip.Controls.Add(this.label7); + this.PnlRestTip.Controls.Add(this.NumRest); + this.PnlRestTip.Controls.Add(this.label8); + this.PnlRestTip.Controls.Add(this.label6); + this.PnlRestTip.Controls.Add(this.NumRestInteval); + this.PnlRestTip.Controls.Add(this.label5); + this.PnlRestTip.Enabled = false; + this.PnlRestTip.Location = new System.Drawing.Point(6, 28); + this.PnlRestTip.Name = "PnlRestTip"; + this.PnlRestTip.Size = new System.Drawing.Size(517, 346); + this.PnlRestTip.TabIndex = 3; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(290, 172); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(125, 12); + this.label19.TabIndex = 29; + this.label19.Text = "分钟后,重新开始计时"; + // + // NumIdleOverMinute + // + this.NumIdleOverMinute.Enabled = false; + this.NumIdleOverMinute.Location = new System.Drawing.Point(229, 167); + this.NumIdleOverMinute.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.NumIdleOverMinute.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumIdleOverMinute.Name = "NumIdleOverMinute"; + this.NumIdleOverMinute.Size = new System.Drawing.Size(55, 21); + this.NumIdleOverMinute.TabIndex = 28; + this.NumIdleOverMinute.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumIdleOverMinute.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // ChkIdleOver_On + // + this.ChkIdleOver_On.AutoSize = true; + this.ChkIdleOver_On.Location = new System.Drawing.Point(13, 170); + this.ChkIdleOver_On.Name = "ChkIdleOver_On"; + this.ChkIdleOver_On.Size = new System.Drawing.Size(216, 16); + this.ChkIdleOver_On.TabIndex = 27; + this.ChkIdleOver_On.Text = "空闲、退出软件或运行全屏程序超过"; + this.toolTip1.SetToolTip(this.ChkIdleOver_On, "当空闲、退出软件或运行全屏程序时间超过指定分钟数后,则从0开始计时"); + this.ChkIdleOver_On.UseVisualStyleBackColor = true; + this.ChkIdleOver_On.CheckedChanged += new System.EventHandler(this.ChkIdleOver_On_CheckedChanged); + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(163, 298); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(11, 12); + this.label17.TabIndex = 26; + this.label17.Text = "%"; + // + // NumRestOpacity + // + this.NumRestOpacity.Location = new System.Drawing.Point(102, 294); + this.NumRestOpacity.Minimum = new decimal(new int[] { + 60, + 0, + 0, + 0}); + this.NumRestOpacity.Name = "NumRestOpacity"; + this.NumRestOpacity.Size = new System.Drawing.Size(55, 21); + this.NumRestOpacity.TabIndex = 25; + this.NumRestOpacity.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.NumRestOpacity, "休息时界面的透明度,不建议设置的太透明"); + this.NumRestOpacity.Value = new decimal(new int[] { + 85, + 0, + 0, + 0}); + this.NumRestOpacity.ValueChanged += new System.EventHandler(this.NumRestOpacity_ValueChanged); + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(13, 298); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(95, 12); + this.label18.TabIndex = 24; + this.label18.Text = "提醒窗口透明度:"; + // + // ChkSaveSchedule + // + this.ChkSaveSchedule.AutoSize = true; + this.ChkSaveSchedule.Location = new System.Drawing.Point(13, 276); + this.ChkSaveSchedule.Name = "ChkSaveSchedule"; + this.ChkSaveSchedule.Size = new System.Drawing.Size(96, 16); + this.ChkSaveSchedule.TabIndex = 23; + this.ChkSaveSchedule.Text = "记忆时间进度"; + this.toolTip1.SetToolTip(this.ChkSaveSchedule, "在执行过程中,如果退出软件,下次启动软件,将继续\r\n之前的进度。"); + this.ChkSaveSchedule.UseVisualStyleBackColor = true; + // + // PnlRestMusic + // + this.PnlRestMusic.Controls.Add(this.CbbMusicPath); + this.PnlRestMusic.Controls.Add(this.BtnBrowserMusic); + this.PnlRestMusic.Controls.Add(this.CbbMusicType); + this.PnlRestMusic.Controls.Add(this.label15); + this.PnlRestMusic.Enabled = false; + this.PnlRestMusic.Location = new System.Drawing.Point(26, 242); + this.PnlRestMusic.Name = "PnlRestMusic"; + this.PnlRestMusic.Size = new System.Drawing.Size(488, 28); + this.PnlRestMusic.TabIndex = 22; + // + // CbbMusicPath + // + this.CbbMusicPath.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbMusicPath.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbMusicPath.FormattingEnabled = true; + this.CbbMusicPath.Location = new System.Drawing.Point(128, 3); + this.CbbMusicPath.Name = "CbbMusicPath"; + this.CbbMusicPath.Size = new System.Drawing.Size(315, 22); + this.CbbMusicPath.TabIndex = 20; + this.toolTip1.SetToolTip(this.CbbMusicPath, "支持播放单独的文件和文件夹里的音乐。\r\n当播放文件夹音乐时,会随机播放里面的音乐。"); + // + // BtnBrowserMusic + // + this.BtnBrowserMusic.ForeColor = System.Drawing.Color.White; + this.BtnBrowserMusic.Location = new System.Drawing.Point(450, 3); + this.BtnBrowserMusic.Name = "BtnBrowserMusic"; + this.BtnBrowserMusic.Size = new System.Drawing.Size(33, 21); + this.BtnBrowserMusic.TabIndex = 21; + this.BtnBrowserMusic.Text = "..."; + this.BtnBrowserMusic.UseVisualStyleBackColor = true; + this.BtnBrowserMusic.Click += new System.EventHandler(this.BtnBrowserMusic_Click); + // + // CbbMusicType + // + this.CbbMusicType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbMusicType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbMusicType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbMusicType.FormattingEnabled = true; + this.CbbMusicType.Items.AddRange(new object[] { + "音乐文件", + "文件夹"}); + this.CbbMusicType.Location = new System.Drawing.Point(41, 3); + this.CbbMusicType.Name = "CbbMusicType"; + this.CbbMusicType.Size = new System.Drawing.Size(81, 22); + this.CbbMusicType.TabIndex = 18; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(6, 8); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(29, 12); + this.label15.TabIndex = 19; + this.label15.Text = "播放"; + // + // ChkRestMusic_On + // + this.ChkRestMusic_On.AutoSize = true; + this.ChkRestMusic_On.Location = new System.Drawing.Point(13, 223); + this.ChkRestMusic_On.Name = "ChkRestMusic_On"; + this.ChkRestMusic_On.Size = new System.Drawing.Size(108, 16); + this.ChkRestMusic_On.TabIndex = 17; + this.ChkRestMusic_On.Text = "休息时播放音乐"; + this.toolTip1.SetToolTip(this.ChkRestMusic_On, "休息的时候将自动播放音乐"); + this.ChkRestMusic_On.UseVisualStyleBackColor = true; + this.ChkRestMusic_On.CheckedChanged += new System.EventHandler(this.ChkRestMusic_On_CheckedChanged); + // + // CbbRestMode + // + this.CbbRestMode.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbRestMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbRestMode.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbRestMode.FormattingEnabled = true; + this.CbbRestMode.Items.AddRange(new object[] { + "休息一分钟后可手动解锁", + "强制休息到结束"}); + this.CbbRestMode.Location = new System.Drawing.Point(78, 195); + this.CbbRestMode.Name = "CbbRestMode"; + this.CbbRestMode.Size = new System.Drawing.Size(169, 22); + this.CbbRestMode.TabIndex = 16; + this.toolTip1.SetToolTip(this.CbbRestMode, "休息一分钟后可手动解锁\r\n 当强制休息一分钟后,界面右下角会显示\r\n开锁图标,点击开锁图标,即可结束休息。\r\n\r\n强制休息到结束\r\n 必须执行" + + "到休息结束。"); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(13, 200); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(59, 12); + this.label11.TabIndex = 15; + this.label11.Text = "休息模式:"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(196, 147); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(125, 12); + this.label10.TabIndex = 14; + this.label10.Text = "分钟后,暂停休息计时"; + // + // NumIdleMinute + // + this.NumIdleMinute.Enabled = false; + this.NumIdleMinute.Location = new System.Drawing.Point(135, 141); + this.NumIdleMinute.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.NumIdleMinute.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumIdleMinute.Name = "NumIdleMinute"; + this.NumIdleMinute.Size = new System.Drawing.Size(55, 21); + this.NumIdleMinute.TabIndex = 13; + this.NumIdleMinute.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumIdleMinute.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // ChkStopRestByIdle + // + this.ChkStopRestByIdle.AutoSize = true; + this.ChkStopRestByIdle.Location = new System.Drawing.Point(13, 146); + this.ChkStopRestByIdle.Name = "ChkStopRestByIdle"; + this.ChkStopRestByIdle.Size = new System.Drawing.Size(120, 16); + this.ChkStopRestByIdle.TabIndex = 12; + this.ChkStopRestByIdle.Text = "鼠标键盘空闲超过"; + this.toolTip1.SetToolTip(this.ChkStopRestByIdle, "当鼠标和键盘没有操作指定分钟后,软件将暂停\r\n计时,不会进行休息。"); + this.ChkStopRestByIdle.UseVisualStyleBackColor = true; + this.ChkStopRestByIdle.CheckedChanged += new System.EventHandler(this.ChkStopRestByIdle_CheckedChanged); + // + // ChkStopRestByFullScreen + // + this.ChkStopRestByFullScreen.AutoSize = true; + this.ChkStopRestByFullScreen.Location = new System.Drawing.Point(13, 124); + this.ChkStopRestByFullScreen.Name = "ChkStopRestByFullScreen"; + this.ChkStopRestByFullScreen.Size = new System.Drawing.Size(180, 16); + this.ChkStopRestByFullScreen.TabIndex = 11; + this.ChkStopRestByFullScreen.Text = "运行全屏程序时暂停休息计时"; + this.toolTip1.SetToolTip(this.ChkStopRestByFullScreen, "勾选本项后,当您在全屏观看视频、游戏,软件\r\n将不会计算休息时间。"); + this.ChkStopRestByFullScreen.UseVisualStyleBackColor = true; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(196, 103); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(17, 12); + this.label9.TabIndex = 10; + this.label9.Text = "次"; + // + // NumDelayRestCount + // + this.NumDelayRestCount.Enabled = false; + this.NumDelayRestCount.Location = new System.Drawing.Point(135, 99); + this.NumDelayRestCount.Maximum = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.NumDelayRestCount.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumDelayRestCount.Name = "NumDelayRestCount"; + this.NumDelayRestCount.Size = new System.Drawing.Size(55, 21); + this.NumDelayRestCount.TabIndex = 9; + this.NumDelayRestCount.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumDelayRestCount.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // ChkDelayRestOn + // + this.ChkDelayRestOn.AutoSize = true; + this.ChkDelayRestOn.Location = new System.Drawing.Point(13, 102); + this.ChkDelayRestOn.Name = "ChkDelayRestOn"; + this.ChkDelayRestOn.Size = new System.Drawing.Size(120, 16); + this.ChkDelayRestOn.TabIndex = 8; + this.ChkDelayRestOn.Text = "允许推迟休息次数"; + this.toolTip1.SetToolTip(this.ChkDelayRestOn, "在休息前1分钟会弹窗提醒您,如果您刚好有事,\r\n可以选择推迟休息,但到达推迟次数时,将不能\r\n进行推迟。"); + this.ChkDelayRestOn.UseVisualStyleBackColor = true; + this.ChkDelayRestOn.CheckedChanged += new System.EventHandler(this.ChkDelayRest_CheckedChanged); + // + // ChkSoundBeforeRest + // + this.ChkSoundBeforeRest.AutoSize = true; + this.ChkSoundBeforeRest.Location = new System.Drawing.Point(13, 80); + this.ChkSoundBeforeRest.Name = "ChkSoundBeforeRest"; + this.ChkSoundBeforeRest.Size = new System.Drawing.Size(162, 16); + this.ChkSoundBeforeRest.TabIndex = 7; + this.ChkSoundBeforeRest.Text = "休息前1分钟播放提示声音"; + this.toolTip1.SetToolTip(this.ChkSoundBeforeRest, "在休息前1分钟,软件会播放声音提醒休息"); + this.ChkSoundBeforeRest.UseVisualStyleBackColor = true; + // + // ChkTipBeforeRest + // + this.ChkTipBeforeRest.AutoSize = true; + this.ChkTipBeforeRest.Location = new System.Drawing.Point(13, 58); + this.ChkTipBeforeRest.Name = "ChkTipBeforeRest"; + this.ChkTipBeforeRest.Size = new System.Drawing.Size(150, 16); + this.ChkTipBeforeRest.TabIndex = 6; + this.ChkTipBeforeRest.Text = "休息前1分钟显示提醒框"; + this.toolTip1.SetToolTip(this.ChkTipBeforeRest, "在休息前1分钟,软件会弹窗提醒您即将进入休息。"); + this.ChkTipBeforeRest.UseVisualStyleBackColor = true; + this.ChkTipBeforeRest.CheckedChanged += new System.EventHandler(this.ChkTipBeforeRest_CheckedChanged); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(161, 35); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(29, 12); + this.label7.TabIndex = 5; + this.label7.Text = "分钟"; + // + // NumRest + // + this.NumRest.Location = new System.Drawing.Point(100, 31); + this.NumRest.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.NumRest.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumRest.Name = "NumRest"; + this.NumRest.Size = new System.Drawing.Size(55, 21); + this.NumRest.TabIndex = 4; + this.NumRest.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.NumRest, "设置休息多久,建议您休息3-10分钟。"); + this.NumRest.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(11, 35); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(83, 12); + this.label8.TabIndex = 3; + this.label8.Text = "休息时间长度:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(161, 8); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(29, 12); + this.label6.TabIndex = 2; + this.label6.Text = "分钟"; + // + // NumRestInteval + // + this.NumRestInteval.Location = new System.Drawing.Point(100, 4); + this.NumRestInteval.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.NumRestInteval.Minimum = new decimal(new int[] { + 2, + 0, + 0, + 0}); + this.NumRestInteval.Name = "NumRestInteval"; + this.NumRestInteval.Size = new System.Drawing.Size(55, 21); + this.NumRestInteval.TabIndex = 1; + this.NumRestInteval.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.NumRestInteval, "建议您每玩45-50分钟电脑,即进行休息。"); + this.NumRestInteval.Value = new decimal(new int[] { + 50, + 0, + 0, + 0}); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(11, 8); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(83, 12); + this.label5.TabIndex = 0; + this.label5.Text = "休息时间间隔:"; + // + // ChkRestTip_On + // + this.ChkRestTip_On.AutoSize = true; + this.ChkRestTip_On.Location = new System.Drawing.Point(6, 6); + this.ChkRestTip_On.Name = "ChkRestTip_On"; + this.ChkRestTip_On.Size = new System.Drawing.Size(96, 16); + this.ChkRestTip_On.TabIndex = 2; + this.ChkRestTip_On.Text = "开启休息提醒"; + this.toolTip1.SetToolTip(this.ChkRestTip_On, "开启休息提醒,将每隔一段时间,锁住屏幕,提示您\r\n进行休息。"); + this.ChkRestTip_On.UseVisualStyleBackColor = true; + this.ChkRestTip_On.CheckedChanged += new System.EventHandler(this.ChkRestTip_On_CheckedChanged); + // + // toolTip1 + // + this.toolTip1.AutoPopDelay = 9000; + this.toolTip1.InitialDelay = 500; + this.toolTip1.ReshowDelay = 100; + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.ForeColor = System.Drawing.Color.White; + this.btnCancel.Location = new System.Drawing.Point(470, 415); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(65, 27); + this.btnCancel.TabIndex = 7; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.ForeColor = System.Drawing.Color.White; + this.btnOK.Location = new System.Drawing.Point(399, 415); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(65, 27); + this.btnOK.TabIndex = 6; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = ""; + this.openFileDialog1.Filter = "MP3文件|*.mp3"; + // + // FrmSetting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(543, 452); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.tabControl1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "FrmSetting"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "设置"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmSetting_FormClosing); + this.Load += new System.EventHandler(this.FrmSetting_Load); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumMusicVolume)).EndInit(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumSpeakerRate)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumSpeakerVolume)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumCurrWeek)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NuAutoCloseMinute)).EndInit(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.PnlHourlyChime.ResumeLayout(false); + this.PnlHourlyChime.PerformLayout(); + this.tabPage3.ResumeLayout(false); + this.tabPage3.PerformLayout(); + this.PnlRestTip.ResumeLayout(false); + this.PnlRestTip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumIdleOverMinute)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumRestOpacity)).EndInit(); + this.PnlRestMusic.ResumeLayout(false); + this.PnlRestMusic.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumIdleMinute)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumDelayRestCount)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumRest)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NumRestInteval)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private ryControls.ButtonEx btnCancel; + private ryControls.ButtonEx btnOK; + private System.Windows.Forms.CheckBox ChkFullScreenTip; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.NumericUpDown NuAutoCloseMinute; + private System.Windows.Forms.CheckBox ChkAutoClose; + private System.Windows.Forms.CheckBox ChkAutoRun; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.NumericUpDown NumCurrWeek; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Panel PnlHourlyChime; + private System.Windows.Forms.Panel PnlHours; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.CheckBox ChkUseStarHourlyChime; + private System.Windows.Forms.CheckBox ChkHourlyChime_On; + private System.Windows.Forms.CheckBox ChkUse24Hours; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.Panel PnlRestTip; + private System.Windows.Forms.CheckBox ChkSoundBeforeRest; + private System.Windows.Forms.CheckBox ChkTipBeforeRest; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.NumericUpDown NumRest; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.NumericUpDown NumRestInteval; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.CheckBox ChkRestTip_On; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.NumericUpDown NumDelayRestCount; + private System.Windows.Forms.CheckBox ChkDelayRestOn; + private System.Windows.Forms.CheckBox ChkStopRestByFullScreen; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.NumericUpDown NumIdleMinute; + private System.Windows.Forms.CheckBox ChkStopRestByIdle; + private ryControls.RyComboBox CbbRestMode; + private System.Windows.Forms.Label label11; + private ryControls.RyComboBox CbbSpeaker; + private System.Windows.Forms.Label label12; + private ryControls.ButtonEx BtnSpeak; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.NumericUpDown NumSpeakerRate; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.NumericUpDown NumSpeakerVolume; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.CheckBox ChkRestMusic_On; + private System.Windows.Forms.Panel PnlRestMusic; + private ryControls.RyComboBox CbbMusicPath; + private ryControls.ButtonEx BtnBrowserMusic; + private ryControls.RyComboBox CbbMusicType; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + private System.Windows.Forms.CheckBox ChkSaveSchedule; + private System.Windows.Forms.NumericUpDown NumMusicVolume; + private System.Windows.Forms.Label label16; + private ryControls.ButtonEx BtnTestMusic; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.NumericUpDown NumRestOpacity; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.NumericUpDown NumIdleOverMinute; + private System.Windows.Forms.CheckBox ChkIdleOver_On; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.cs new file mode 100644 index 0000000..37068de --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.cs @@ -0,0 +1,315 @@ +using ryCommon; +using ryCommon.Pram; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmSetting : Form + { + public FrmSetting() + { + InitializeComponent(); + sound.OnPlayEnd += Sound_OnPlayEnd; + } + + public DialogResult dr = DialogResult.None; + private void BtnCancel_Click(object sender, EventArgs e) + { + dr = DialogResult.Cancel; + this.Close(); + } + bool _RestTip_On = false; + int _RestInteval = 50; + int _Rest = 3; + ryCommon.RySetting Setting = new ryCommon.RySetting(); + private void FrmSetting_Load(object sender, EventArgs e) + { + #region TTS语音朗读 + try + { + var spVoices = new COM.SpVoice() + { + Rate = -2, + Volume = 100 + }; + var list_Voices = spVoices.GetVoices(); + CbbSpeaker.Items.Clear(); + for (int i = 0; i < list_Voices.Count; i++) + { + CbbSpeaker.Items.Add(list_Voices[i]); + } + if (CbbSpeaker.Items.Count > 0) { CbbSpeaker.SelectedIndex = 0; } + } + catch (Exception) + { + } + #endregion + Setting.FileType = SettingType.XML; + //Setting.FilePath = Application.StartupPath + "\\UserDb\\Setting.dat"; + Setting.SettingXML = Itrycn_Db.GetSetting("Setting", ""); + ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; + ChkAutoRun.Checked = ryCommon.RyRegedit.IsAutoRun(Custom.AutoRunName, "\"" + Application.ExecutablePath + "\" " + Custom.AutoRunPram); + Setting.Add("FullScreenTip", ChkFullScreenTip, true); + Setting.Add("AutoClose", ChkAutoClose, false); + Setting.Add("AutoCloseMinute", NuAutoCloseMinute, 1); + Setting.Add("HourlyChime_On", ChkHourlyChime_On, true); + Setting.Add("Use24Hours", ChkUse24Hours, true); + Setting.Add("UseStarHourlyChime", ChkUseStarHourlyChime, true); + Setting.Add("RestTip_On", ChkRestTip_On, false); + Setting.Add("RestInteval", NumRestInteval, 50); + Setting.Add("Rest", NumRest, 3); + Setting.Add("TipBeforeRest", ChkTipBeforeRest, true); + Setting.Add("SoundBeforeRest", ChkSoundBeforeRest, true); + Setting.Add("DelayRestOn", ChkDelayRestOn, true); + Setting.Add("DelayRestCount", NumDelayRestCount, 3); + Setting.Add("StopRestByFullScreen", ChkStopRestByFullScreen, true); + Setting.Add("StopRestByIdle", ChkStopRestByIdle, true); + Setting.Add("IdleMinute", NumIdleMinute, 3); + Setting.Add("IdleOver_On", ChkIdleOver_On, true); + Setting.Add("IdleOverMinute", NumIdleOverMinute, 10); + Setting.Add("RestMode", CbbRestMode, 0); + Setting.Add("Speaker", CbbSpeaker, CbbSpeaker.Text); + Setting.Add("SpeakerVolume", NumSpeakerVolume, 100); + Setting.Add("SpeakerRate", NumSpeakerRate, 1); + Setting.Add("RestMusic_On", ChkRestMusic_On, false); + Setting.Add("MusicType", CbbMusicType, 0); + Setting.Add("MusicPath", CbbMusicPath, ""); + Setting.Add("SaveSchedule", ChkSaveSchedule, true); + Setting.Add("MusicVolume", NumMusicVolume, 100); + Setting.Add("RestOpacity", NumRestOpacity, 90); + Setting.Read(); + _RestTip_On = ChkRestTip_On.Checked; + _RestInteval = NumRestInteval.Value.ToInt(); + _Rest = NumRest.Value.ToInt(); + ryCommon.Storage myXML = new Storage(); + myXML.LoadFromXMLText(Setting.SettingXML); + myXML.SelectNode2("id", "Setting"); + string hours_on= myXML.GetAttrValue("HourOn",""); + var CurrDate= myXML.GetAttrValue("CurrDate",DateTime.Now); + var week_count= RyDate.GetWeekCount(CurrDate, DateTime.Now); + ryCommon.ListX list = new ListX(PnlHours) + { + MaxColCount = 6, + spaceX = 30, + spaceY = 10 + }; + for (int i = 0; i < 24; i++) + { + CheckBox chk = new CheckBox + { + AutoSize = true, + Text = i.ToString("00") + "时", + Tag = i + }; + chk.CheckedChanged += Chk_CheckedChanged; + if (hours_on == "") { chk.Checked = true; } + else if(hours_on.Length==24 && hours_on.Substring(i, 1) == "1") { chk.Checked = true; } + else { chk.Checked =false; } + list.Add(chk); + } + list.ReDraw2(); + NumCurrWeek.Value = week_count+1; + } + + private void Chk_CheckedChanged(object sender, EventArgs e) + { + CheckBox chk = (CheckBox)sender; + chk.ForeColor = chk.Checked ? Color.Blue :Color.Black; + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if(ChkRestTip_On.Checked) + { + #region 休息提醒 + if (!NumRestInteval.Value.ToInt().IsInRange(1, 1000)) + { + MessageBox.Show("休息提醒时间间隔区间不对。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + if (!NumRest.Value.ToInt().IsInRange(1, 1000)) + { + MessageBox.Show("休息提醒休息时间区间不对。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + #endregion + } + if(ChkRestMusic_On.Checked) + { + if (CbbMusicType.SelectedIndex== 0) + { + if (!System.IO.File.Exists(CbbMusicPath.Text)) + { + MessageBox.Show("休息时要播放的音乐不存在。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + } + else if (CbbMusicType.SelectedIndex == 1) + { + if (!System.IO.Directory.Exists(CbbMusicPath.Text)) + { + MessageBox.Show("休息时要播放的音乐文件夹不存在。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + } + } + Setting.Save(); + ryCommon.Storage myXML = new Storage(); + myXML.LoadFromXMLText(Setting.SettingXML); + myXML.SelectNode2("id", "Setting"); + var week_count = NumCurrWeek.Value.ToInt(); + myXML.SetAttrValue("CurrDate", RyDate.GetWeekInfo(DateTime.Now.Date.AddDays(-7 * (week_count - 1))).startDate); + #region 获取需要报时的时间段 + string HourOn = ""; + string[] hours = new string[24]; + for (int i = 0; i < PnlHours.Controls.Count; i++) + { + switch (PnlHours.Controls[i]) + { + case CheckBox chk: + hours[chk.Tag.ToInt()] = chk.Checked ? "1" : "0"; + break; + } + } + for (int i = 0; i < hours.Length; i++) + { + HourOn += hours[i] == "1" ? "1" : "0"; + } + myXML.SetAttrValue("HourOn", HourOn); + #endregion + Itrycn_Db.SetSetting("Setting", myXML.XMLText); + ryCommon.RyRegedit.RegRoot = Microsoft.Win32.RegistryHive.CurrentUser; + ryCommon.RyRegedit.SetAutoRun(ChkAutoRun.Checked, Custom.AutoRunName, "\"" + Application.ExecutablePath + "\" "+ Custom.AutoRunPram); + if (_RestTip_On != ChkRestTip_On.Checked || _RestInteval != NumRestInteval.Value || _Rest != NumRest.Value) //初始化休息数据 + { + Itrycn_Info.ReadSetting(); + } + else { Itrycn_Info.ReadSetting(false); } + dr = DialogResult.OK; + this.Close(); + } + + private void ChkAutoClose_CheckedChanged(object sender, EventArgs e) + { + NuAutoCloseMinute.Enabled = ChkAutoClose.Checked; + } + + private void ChkHourlyChime_On_CheckedChanged(object sender, EventArgs e) + { + PnlHourlyChime.Enabled = ChkHourlyChime_On.Checked; + } + + private void ChkRestTip_On_CheckedChanged(object sender, EventArgs e) + { + PnlRestTip.Enabled = ChkRestTip_On.Checked; + } + + private void ChkDelayRest_CheckedChanged(object sender, EventArgs e) + { + NumDelayRestCount.Enabled = ChkDelayRestOn.Checked; + } + + private void ChkStopRestByIdle_CheckedChanged(object sender, EventArgs e) + { + NumIdleMinute.Enabled= ChkStopRestByIdle.Checked; + } + + private void BtnSpeak_Click(object sender, EventArgs e) + { + try + { + var spVoices = new COM.SpVoice() + { + Rate =NumSpeakerRate.Value.ToInt(), + Volume = NumSpeakerVolume.Value.ToInt() + }; + spVoices.SetVoices(CbbSpeaker.Text); + spVoices.Speak("这是一个测试。This is a test", COM.SpVoice.Flags.SVSFlagsAsync); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ChkTipBeforeRest_CheckedChanged(object sender, EventArgs e) + { + ChkDelayRestOn.Enabled = ChkTipBeforeRest.Checked; + NumDelayRestCount.Enabled = ChkTipBeforeRest.Checked; + } + + private void ChkRestMusic_On_CheckedChanged(object sender, EventArgs e) + { + PnlRestMusic.Enabled = ChkRestMusic_On.Checked; + } + + private void BtnBrowserMusic_Click(object sender, EventArgs e) + { + if(CbbMusicType.SelectedIndex == 0) + { + if(openFileDialog1.ShowDialog()==DialogResult.OK) + { + CbbMusicPath.Text = openFileDialog1.FileName; + } + } + else if (CbbMusicType.SelectedIndex == 1) + { + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + CbbMusicPath.Text = folderBrowserDialog1.SelectedPath; + } + } + } + private void Sound_OnPlayEnd(object sender, EventArgs e) + { + this.Invoke(new Action(() => + { + BtnTestMusic.Text = "测试"; + })); + } + API.SoundPlay sound = new API.SoundPlay(); + private void BtnTestMusic_Click(object sender, EventArgs e) + { + if (sound.PlaybackState == NAudio.Wave.PlaybackState.Playing) + { + sound.Stop(); + } + else + { + BtnTestMusic.Text = "停止"; + sound.Volume = (float)NumMusicVolume.Value / 100f; + sound.PlaySync(Itrycn_Info.SysDbFolder + "\\animation\\sound\\默认提醒.wav"); + } + } + + private void FrmSetting_FormClosing(object sender, FormClosingEventArgs e) + { + if (sound.PlaybackState == NAudio.Wave.PlaybackState.Playing) + { + sound.Stop(); + } + while (BtnTestMusic.Text != "测试") + { + Application.DoEvents(); + } + } + + private void NumRestOpacity_ValueChanged(object sender, EventArgs e) + { + Opacity = NumRestOpacity.Value.ToInt()/100d; + } + + private void ChkIdleOver_On_CheckedChanged(object sender, EventArgs e) + { + NumIdleOverMinute.Enabled = ChkIdleOver_On.Checked; + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.resx new file mode 100644 index 0000000..c641ea9 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmSetting.resx @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 118, 17 + + + 266, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALu+nQCUlIQAfXx1WoaF + eteGhXrXhoV614WEetN7enNGh4d7AHNxbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFjcAHRY3AB0WNwAdFjcAHRY3AAAAAAA4MkgAZGFlAFpX + XguNjH+2lZWE/5WVhP+VlYT/lZWE/4uKfZ8pIj8EVFFbACkjPwAAAAAAHRY3AB0WNwAdFjcAHRY3AB0W + NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRY3AJiYhgB2dXAAkZCBAGZkZgAzLkUAFQ0yABQM + MQCoqZAAf352WpOTg/eVlYT/lZWE/5WVhP+VlYT/kpGC7nt5c0WQkIEAAAAAAA8ILgAyLEUAaWZoAIWE + egBhXmIAY2BkAB0WNwAAAAAAAAAAAAAAAAAAAAAAAAAAAB0WNwCkpY4AeHZxAGNgZBlzcW5XYV5iKCAZ + OQj///8A////AG5sazaOjX/XlZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/jIt+yGdlZyno7bkA///2ABkS + NAdiX2MqcG1sSExIVQlgXWIAYl9jAB0WNwAAAAAAAAAAAAAAAAAdFjcAo6SNAHh2cQBdWmAXh4Z7qZKR + gvuMjH7ihYR5tX59dpN/fXaUjIx+2pWVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/i4p9z3x6 + dIZ9fHWKhIN5so2Mf+KQkIHzgH93fCkiPwZfXGEAYV5jAB0WNwAAAAAAAAAAAAAAEwB/fnYAYF1iGIaG + e6mUlIP/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lJSD/5SUhP+VlYT/lZWE/5WVhP+SkoL3gH52ejgzSQddWmAAAAAAAAAAAAAAAAAAYl9jAAIA + JgGIiHyOlJSD/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+SkoL3g4J4YJmahwAxK0QAAAAAAAAA + AAB6eHIAoqOMAJOTg3mVlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhPuSkYJXl5eFAD45 + TAAAAAAAAAAAAIB+dgCRkYEAj4+ANJSUhO6VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lJSD/5SUg/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lJSD2o2N + fxyNjX8ARUBQAAAAAAAAAAAAHRY3AIeGewCIh3sTk5OD0ZWVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+UlIP/lpaF/5ubi/+fn4//n5+P/5qaiv+VlYT/lJSD/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+TkoKzeXdyBXx6dAAAAAAAAAAAAAAAAAAjHTsAcG5sAHd2cQqSkYLDlZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/6Kikv+0tKf/vr6y/8HBtf/BwbX/vb2x/7KypP+fn4//lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/lZWE/5CQgaH///8AJyE+AB0WNwAAAAAAQj1PACkiPgCMjH4Ac3FuMZGRgeKVlYT/lZWE/5WV + hP+VlYT/lZWE/5aWhf+rq53/wcG1/8XFufzExLjZxMS4t8TEuLvExLjgxcW5/7+/s/+np5f/lZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/j46Ay2ViZRt5d3IAAAAaADAqQwByb20AAAAAAG1qajuKin3FlZWE/5WV + hP+VlYT/lZWE/5WVhP+VlYT/qama/8PDt//ExLjmw8O4bcPDtxvDw7cGw8O3B8PDtyPDw7iCxMS48cHB + tf+jo5T/lJSD/5WVhP+VlYT/lZWE/5WVhP+UlIP+h4Z7rmRhZCj5/8QAZ2VnAGdlZzN+fXWIjo6A5pWV + hP+VlYT/lZWE/5WVhP+VlYT/lZWE/5ycjP++vrH/xMS47sLCt1LGx7oAw8O3AMPDtwDDw7cAw8O3AAAA + AADCwrdvxcW5+bm5rP+YmIj/lZWE/5WVhP+VlYT/lZWE/5WVhP+UlIT/jIt+2Hp4c3RhXmMkjYx/3pSU + g/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+UlIP/qama/8TEuP/CwraakpCRAby7sgDAwLUAAAAAACAZ + OQDBwbUAvr2zALm4rwvCwre6w8O3/6OjlP+UlIP/lZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/k5OD/4uK + fbuTk4PwlZWE/5WVhP+VlYT/lZWE/5WVhP+VlYT/lZWE/5WVhP+zs6X/xMS4+728slPCwrcAv7+0AAAA + AAAAAAAAAAAAAAAAAADb3MoAzc2/AL6+tHbExLj/rKyd/5SUg/+VlYT/lZWE/5WVhP+VlYT/lZWE/5WV + hP+VlYT/kpKC0Zybi+2fno3/n52N/p+djf6fnY3+n52N/p+djf6fnY3+n56N/rm4q//Dw7j2tbWtQLu7 + sQAhGjoAAAAAAAAAAAAAAAAAAAAAAFVQYgDGxroAubmwYcTEuP+zs6X/np2M/p+djf6fnY3+n52N/p+d + jf6fnY3+n52N/p+ejf+bmovPpKKR8aakk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/ubiq/8PD + uPyysapaxMS4AJybmQAdFjcAAAAAAAAAAAAdFjcA////AO7w2QC2tq19xMS4/7W0pf+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6OgkdOkopKgpqST6aakk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + kv+zsqP/xMS4/7a2rqhFQFYHcW14AGhkcQAdFjcAHRY3AIyKjQCIhooAgH2EFLu6scXDw7f/r62e/6ak + kv+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJPlpKKRiqalkwSlo5M1pqSTp6akk/qmpJP/pqST/6ak + k/+mpJP/pqST/6qomP/AwLP/wcC29aOin2kAAAACjYuOAFlVZgBfW2oAmpmYAC8pRQirqaSGw8O3/L29 + r/+oppX/pqST/6akk/+mpJP/pqST/6akk/+mpJP2pqSTmaWjky2oppQDpKKSAKakkwCjoZEJpaOSgaak + k/qmpJP/pqST/6akk/+mpJP/pqST/7Kxov/Dw7f/vr608KakoYyBfoQyXFhoFWFdaxeIhYk8q6qkn8HA + tfjCwrX/r62e/6akk/+mpJP/pqST/6akk/+mpJP/pqST86WjkmyioJAEpqOTAKSikgCal4sApaOSAJ6c + jgCZlooSpKKSzqakk/+mpJP/pqST/6akk/+mpJP/p6WU/7SzpP/Cwrb/w8O3/7q6seq0s6vRtLSs1Ly8 + su/ExLj/wcG0/7GvoP+mpJP/pqST/6akk/+mpJP/pqST/6akk/+joZGrj4yEBKGfkAClo5IAjYuCAAAA + AAAdFjcAgHx5AIJ/ewuioJDEpqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/66snP+6uav/wcCz/8PD + tv/Dw7b/wMCz/7i3qf+sqpr/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6Cdj5f//+8AAAAOAAAA + AAAAAAAAAAAAAB0WNwCLiIEAioeAHaKgkdumpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + lP+pqJf/rKqa/6yqmv+pp5f/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/oJ6Ptmhk + agdtaW0AHRY3AAAAAAAAAAAA/P3NAKOhkQCTkIZLpKKS96akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+ioJDhiYZ/Jo6LgwAdFjcAAAAAAAAAAABhXGUA////AJyajJOmpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6Wjkv6YlopdqKaUAB0WNwAAAAAAAAAAAIB9egDS0rEApKKSUqakk+empJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJP/pqST/6akk/+mpJP/pqSTwqOhkSWoppUAHRY3AAAAAAAAAAAAhIF8AJqYiwCoppQApaOSTqak + k+SmpJP/pqST/6akk/empJPnpqST5qakk/umpJP/pqST/6akk/+mpJP/pqST/6akk/+mpJP/pqST/6ak + k/mmpJPkpqST6aakk/mmpJP/pqST/6akk8KkopImpaOSAK+tmQAdFjcAAAAAAAAAAAAAAAAAoqCQAKKg + kACqqJUApaOSTaakk7+mpJOHpqSTR6akkyampJMkpaOTdaakk/OmpJP/pqST/6akk/+mpJP/pqST/6ak + k/+mpJPnpaOTYKakkyKmpJMppqSTTqakk5OmpJOspKKSJ6akkwCwr5oAm5mMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAop+QAKKgkAD///8ApaOSDKimlQCmpJMApqSTAKWjkgCNioIBpaOShqakk/+mpJP/pqST/6ak + k/+mpJP/pqST+aSikmeqqJYApaOTAKakkwCmpJMAm5mMAKSikgimpJMAsK+aAJuZjAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAoqCRAKOhkQClo5IApaOSAKSikgB1cnIAo6GRAKKgkQChn5AZpaOSzqak + k/+mpJP/pqST/6akk/+lo5KynpyOCqGfkAChn5AAlZKHAKWjkgClo5IApKKSAJ+djgCcmo0AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFjcA////AK6s + mACkopJ2pqST+Kakk/ampJP2pqST8qOhkVWnpZMAqKaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/+AH//BAAg/gAAAHwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAA4AA + AAEAAAAAAAAAAAAAAAAAAQAAAAPAAAADwAAAAYAAAAAAAAAAAAAAAAAAAAAAAIAAAAOAAAABgAAAAYAA + AAGAAAABgAAAAcAAAAPgAAAH8AAAD//AB/8= + + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmSticky.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmSticky.Designer.cs new file mode 100644 index 0000000..39e389b --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmSticky.Designer.cs @@ -0,0 +1,538 @@ +namespace TimeClock.DbOp +{ + partial class FrmSticky + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.txtContent = new System.Windows.Forms.RichTextBox(); + this.MenuNote = new System.Windows.Forms.ContextMenuStrip(this.components); + this.撤销ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.重做ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.剪切ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.复制ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.粘贴ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.全选ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.字体ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.字体颜色ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.背景颜色ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.透明度ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.不透明ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); + this.插入ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.插入时间ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.PnlTop = new System.Windows.Forms.Panel(); + this.LblTopMost = new System.Windows.Forms.Label(); + this.LblClose = new System.Windows.Forms.Label(); + this.LblAdd = new System.Windows.Forms.Label(); + this.PnlBottom = new System.Windows.Forms.Panel(); + this.LblBullet = new System.Windows.Forms.Label(); + this.LblStrikeout = new System.Windows.Forms.Label(); + this.LblUnderline = new System.Windows.Forms.Label(); + this.LblItalic = new System.Windows.Forms.Label(); + this.LblBold = new System.Windows.Forms.Label(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.fontDialog1 = new System.Windows.Forms.FontDialog(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.LblImage = new System.Windows.Forms.Label(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.MenuNote.SuspendLayout(); + this.PnlTop.SuspendLayout(); + this.PnlBottom.SuspendLayout(); + this.SuspendLayout(); + // + // txtContent + // + this.txtContent.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.txtContent.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtContent.ContextMenuStrip = this.MenuNote; + this.txtContent.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtContent.Location = new System.Drawing.Point(3, 32); + this.txtContent.Name = "txtContent"; + this.txtContent.Size = new System.Drawing.Size(345, 262); + this.txtContent.TabIndex = 0; + this.txtContent.Text = ""; + this.txtContent.TextChanged += new System.EventHandler(this.txtContent_TextChanged); + // + // MenuNote + // + this.MenuNote.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.撤销ToolStripMenuItem, + this.重做ToolStripMenuItem, + this.toolStripMenuItem1, + this.剪切ToolStripMenuItem, + this.复制ToolStripMenuItem, + this.粘贴ToolStripMenuItem, + this.删除ToolStripMenuItem, + this.toolStripMenuItem2, + this.全选ToolStripMenuItem, + this.toolStripMenuItem3, + this.字体ToolStripMenuItem, + this.字体颜色ToolStripMenuItem, + this.背景颜色ToolStripMenuItem, + this.透明度ToolStripMenuItem, + this.toolStripMenuItem4, + this.插入ToolStripMenuItem}); + this.MenuNote.Name = "MenuNote"; + this.MenuNote.Size = new System.Drawing.Size(149, 292); + this.MenuNote.Opening += new System.ComponentModel.CancelEventHandler(this.MenuNote_Opening); + // + // 撤销ToolStripMenuItem + // + this.撤销ToolStripMenuItem.Name = "撤销ToolStripMenuItem"; + this.撤销ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Z"; + this.撤销ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.撤销ToolStripMenuItem.Text = "撤销"; + this.撤销ToolStripMenuItem.Click += new System.EventHandler(this.撤销ToolStripMenuItem_Click); + // + // 重做ToolStripMenuItem + // + this.重做ToolStripMenuItem.Name = "重做ToolStripMenuItem"; + this.重做ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Y"; + this.重做ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.重做ToolStripMenuItem.Text = "重做"; + this.重做ToolStripMenuItem.Click += new System.EventHandler(this.重做ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(145, 6); + // + // 剪切ToolStripMenuItem + // + this.剪切ToolStripMenuItem.Name = "剪切ToolStripMenuItem"; + this.剪切ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+X"; + this.剪切ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.剪切ToolStripMenuItem.Text = "剪切"; + this.剪切ToolStripMenuItem.Click += new System.EventHandler(this.剪切ToolStripMenuItem_Click); + // + // 复制ToolStripMenuItem + // + this.复制ToolStripMenuItem.Name = "复制ToolStripMenuItem"; + this.复制ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; + this.复制ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.复制ToolStripMenuItem.Text = "复制"; + this.复制ToolStripMenuItem.Click += new System.EventHandler(this.复制ToolStripMenuItem_Click); + // + // 粘贴ToolStripMenuItem + // + this.粘贴ToolStripMenuItem.Name = "粘贴ToolStripMenuItem"; + this.粘贴ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V"; + this.粘贴ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.粘贴ToolStripMenuItem.Text = "粘贴"; + this.粘贴ToolStripMenuItem.Click += new System.EventHandler(this.粘贴ToolStripMenuItem_Click); + // + // 删除ToolStripMenuItem + // + this.删除ToolStripMenuItem.Name = "删除ToolStripMenuItem"; + this.删除ToolStripMenuItem.ShortcutKeyDisplayString = "Delete"; + this.删除ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.删除ToolStripMenuItem.Text = "删除"; + this.删除ToolStripMenuItem.Click += new System.EventHandler(this.删除ToolStripMenuItem_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(145, 6); + // + // 全选ToolStripMenuItem + // + this.全选ToolStripMenuItem.Name = "全选ToolStripMenuItem"; + this.全选ToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+A"; + this.全选ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.全选ToolStripMenuItem.Text = "全选"; + this.全选ToolStripMenuItem.Click += new System.EventHandler(this.全选ToolStripMenuItem_Click); + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(145, 6); + // + // 字体ToolStripMenuItem + // + this.字体ToolStripMenuItem.Name = "字体ToolStripMenuItem"; + this.字体ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.字体ToolStripMenuItem.Text = "字体"; + this.字体ToolStripMenuItem.Click += new System.EventHandler(this.字体ToolStripMenuItem_Click); + // + // 字体颜色ToolStripMenuItem + // + this.字体颜色ToolStripMenuItem.Name = "字体颜色ToolStripMenuItem"; + this.字体颜色ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.字体颜色ToolStripMenuItem.Text = "字体颜色"; + this.字体颜色ToolStripMenuItem.Click += new System.EventHandler(this.字体颜色ToolStripMenuItem_Click); + // + // 背景颜色ToolStripMenuItem + // + this.背景颜色ToolStripMenuItem.Name = "背景颜色ToolStripMenuItem"; + this.背景颜色ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.背景颜色ToolStripMenuItem.Text = "便笺背景颜色"; + this.背景颜色ToolStripMenuItem.Click += new System.EventHandler(this.背景颜色ToolStripMenuItem_Click); + // + // 透明度ToolStripMenuItem + // + this.透明度ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.不透明ToolStripMenuItem, + this.toolStripMenuItem5, + this.toolStripMenuItem7, + this.toolStripMenuItem8, + this.toolStripMenuItem9, + this.toolStripMenuItem10, + this.toolStripMenuItem11, + this.toolStripMenuItem12, + this.toolStripMenuItem13}); + this.透明度ToolStripMenuItem.Name = "透明度ToolStripMenuItem"; + this.透明度ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.透明度ToolStripMenuItem.Text = "透明度"; + // + // 不透明ToolStripMenuItem + // + this.不透明ToolStripMenuItem.Name = "不透明ToolStripMenuItem"; + this.不透明ToolStripMenuItem.Size = new System.Drawing.Size(112, 22); + this.不透明ToolStripMenuItem.Text = "不透明"; + this.不透明ToolStripMenuItem.Click += new System.EventHandler(this.不透明ToolStripMenuItem_Click); + // + // toolStripMenuItem5 + // + this.toolStripMenuItem5.Name = "toolStripMenuItem5"; + this.toolStripMenuItem5.Size = new System.Drawing.Size(109, 6); + // + // toolStripMenuItem7 + // + this.toolStripMenuItem7.Name = "toolStripMenuItem7"; + this.toolStripMenuItem7.Size = new System.Drawing.Size(112, 22); + this.toolStripMenuItem7.Text = "60%"; + this.toolStripMenuItem7.Click += new System.EventHandler(this.toolStripMenuItem7_Click); + // + // toolStripMenuItem8 + // + this.toolStripMenuItem8.Name = "toolStripMenuItem8"; + this.toolStripMenuItem8.Size = new System.Drawing.Size(112, 22); + this.toolStripMenuItem8.Text = "70%"; + this.toolStripMenuItem8.Click += new System.EventHandler(this.toolStripMenuItem8_Click); + // + // toolStripMenuItem9 + // + this.toolStripMenuItem9.Name = "toolStripMenuItem9"; + this.toolStripMenuItem9.Size = new System.Drawing.Size(112, 22); + this.toolStripMenuItem9.Text = "75%"; + this.toolStripMenuItem9.Click += new System.EventHandler(this.toolStripMenuItem9_Click); + // + // toolStripMenuItem10 + // + this.toolStripMenuItem10.Name = "toolStripMenuItem10"; + this.toolStripMenuItem10.Size = new System.Drawing.Size(112, 22); + this.toolStripMenuItem10.Text = "80%"; + this.toolStripMenuItem10.Click += new System.EventHandler(this.toolStripMenuItem10_Click); + // + // toolStripMenuItem11 + // + this.toolStripMenuItem11.Name = "toolStripMenuItem11"; + this.toolStripMenuItem11.Size = new System.Drawing.Size(112, 22); + this.toolStripMenuItem11.Text = "85%"; + this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click); + // + // toolStripMenuItem12 + // + this.toolStripMenuItem12.Name = "toolStripMenuItem12"; + this.toolStripMenuItem12.Size = new System.Drawing.Size(112, 22); + this.toolStripMenuItem12.Text = "90%"; + this.toolStripMenuItem12.Click += new System.EventHandler(this.toolStripMenuItem12_Click); + // + // toolStripMenuItem13 + // + this.toolStripMenuItem13.Name = "toolStripMenuItem13"; + this.toolStripMenuItem13.Size = new System.Drawing.Size(112, 22); + this.toolStripMenuItem13.Text = "95%"; + this.toolStripMenuItem13.Click += new System.EventHandler(this.toolStripMenuItem13_Click); + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(145, 6); + // + // 插入ToolStripMenuItem + // + this.插入ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.插入时间ToolStripMenuItem}); + this.插入ToolStripMenuItem.Name = "插入ToolStripMenuItem"; + this.插入ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.插入ToolStripMenuItem.Text = "插入"; + // + // 插入时间ToolStripMenuItem + // + this.插入时间ToolStripMenuItem.Name = "插入时间ToolStripMenuItem"; + this.插入时间ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.插入时间ToolStripMenuItem.Text = "插入时间"; + this.插入时间ToolStripMenuItem.Click += new System.EventHandler(this.插入时间ToolStripMenuItem_Click); + // + // PnlTop + // + this.PnlTop.Controls.Add(this.LblTopMost); + this.PnlTop.Controls.Add(this.LblClose); + this.PnlTop.Controls.Add(this.LblAdd); + this.PnlTop.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlTop.Location = new System.Drawing.Point(3, 3); + this.PnlTop.Name = "PnlTop"; + this.PnlTop.Size = new System.Drawing.Size(345, 29); + this.PnlTop.TabIndex = 1; + // + // LblTopMost + // + this.LblTopMost.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTopMost.BackColor = System.Drawing.Color.Transparent; + this.LblTopMost.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblTopMost.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTopMost.Location = new System.Drawing.Point(298, 5); + this.LblTopMost.Name = "LblTopMost"; + this.LblTopMost.Size = new System.Drawing.Size(20, 19); + this.LblTopMost.TabIndex = 2; + this.LblTopMost.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.toolTip1.SetToolTip(this.LblTopMost, "置顶/取消置顶"); + this.LblTopMost.Click += new System.EventHandler(this.LblTopMost_Click); + // + // LblClose + // + this.LblClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblClose.BackColor = System.Drawing.Color.Transparent; + this.LblClose.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblClose.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblClose.Location = new System.Drawing.Point(324, 5); + this.LblClose.Name = "LblClose"; + this.LblClose.Size = new System.Drawing.Size(20, 19); + this.LblClose.TabIndex = 1; + this.LblClose.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.toolTip1.SetToolTip(this.LblClose, "关闭"); + this.LblClose.Click += new System.EventHandler(this.LblClose_Click); + // + // LblAdd + // + this.LblAdd.BackColor = System.Drawing.Color.Transparent; + this.LblAdd.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblAdd.Font = new System.Drawing.Font("黑体", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblAdd.Location = new System.Drawing.Point(6, 4); + this.LblAdd.Name = "LblAdd"; + this.LblAdd.Size = new System.Drawing.Size(20, 19); + this.LblAdd.TabIndex = 0; + this.LblAdd.Text = "+"; + this.LblAdd.Click += new System.EventHandler(this.LblAdd_Click); + // + // PnlBottom + // + this.PnlBottom.Controls.Add(this.LblImage); + this.PnlBottom.Controls.Add(this.LblBullet); + this.PnlBottom.Controls.Add(this.LblStrikeout); + this.PnlBottom.Controls.Add(this.LblUnderline); + this.PnlBottom.Controls.Add(this.LblItalic); + this.PnlBottom.Controls.Add(this.LblBold); + this.PnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom; + this.PnlBottom.Location = new System.Drawing.Point(3, 294); + this.PnlBottom.Name = "PnlBottom"; + this.PnlBottom.Size = new System.Drawing.Size(345, 25); + this.PnlBottom.TabIndex = 2; + // + // LblBullet + // + this.LblBullet.AutoSize = true; + this.LblBullet.BackColor = System.Drawing.Color.Transparent; + this.LblBullet.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblBullet.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblBullet.Location = new System.Drawing.Point(125, 6); + this.LblBullet.Name = "LblBullet"; + this.LblBullet.Size = new System.Drawing.Size(22, 14); + this.LblBullet.TabIndex = 5; + this.LblBullet.Text = "┇"; + this.toolTip1.SetToolTip(this.LblBullet, "项目符号"); + this.LblBullet.Click += new System.EventHandler(this.LblBullet_Click); + // + // LblStrikeout + // + this.LblStrikeout.AutoSize = true; + this.LblStrikeout.BackColor = System.Drawing.Color.Transparent; + this.LblStrikeout.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblStrikeout.Font = new System.Drawing.Font("宋体", 10.5F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Strikeout))), System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblStrikeout.Location = new System.Drawing.Point(88, 6); + this.LblStrikeout.Name = "LblStrikeout"; + this.LblStrikeout.Size = new System.Drawing.Size(31, 14); + this.LblStrikeout.TabIndex = 4; + this.LblStrikeout.Text = "abc"; + this.toolTip1.SetToolTip(this.LblStrikeout, "删除线"); + this.LblStrikeout.Click += new System.EventHandler(this.LblStrikeout_Click); + // + // LblUnderline + // + this.LblUnderline.AutoSize = true; + this.LblUnderline.BackColor = System.Drawing.Color.Transparent; + this.LblUnderline.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblUnderline.Font = new System.Drawing.Font("宋体", 10.5F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblUnderline.Location = new System.Drawing.Point(62, 6); + this.LblUnderline.Name = "LblUnderline"; + this.LblUnderline.Size = new System.Drawing.Size(15, 14); + this.LblUnderline.TabIndex = 3; + this.LblUnderline.Text = "U"; + this.toolTip1.SetToolTip(this.LblUnderline, "下划线"); + this.LblUnderline.Click += new System.EventHandler(this.LblUnderline_Click); + // + // LblItalic + // + this.LblItalic.AutoSize = true; + this.LblItalic.BackColor = System.Drawing.Color.Transparent; + this.LblItalic.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblItalic.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblItalic.Location = new System.Drawing.Point(36, 6); + this.LblItalic.Name = "LblItalic"; + this.LblItalic.Size = new System.Drawing.Size(15, 14); + this.LblItalic.TabIndex = 2; + this.LblItalic.Text = "/"; + this.toolTip1.SetToolTip(this.LblItalic, "斜体"); + this.LblItalic.Click += new System.EventHandler(this.LblItalic_Click); + // + // LblBold + // + this.LblBold.AutoSize = true; + this.LblBold.BackColor = System.Drawing.Color.Transparent; + this.LblBold.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblBold.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblBold.Location = new System.Drawing.Point(10, 6); + this.LblBold.Name = "LblBold"; + this.LblBold.Size = new System.Drawing.Size(15, 14); + this.LblBold.TabIndex = 1; + this.LblBold.Text = "B"; + this.toolTip1.SetToolTip(this.LblBold, "加粗"); + this.LblBold.Click += new System.EventHandler(this.LblBold_Click); + // + // timer1 + // + this.timer1.Interval = 400; + this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); + // + // LblImage + // + this.LblImage.AutoSize = true; + this.LblImage.BackColor = System.Drawing.Color.Transparent; + this.LblImage.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblImage.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblImage.Location = new System.Drawing.Point(153, 6); + this.LblImage.Name = "LblImage"; + this.LblImage.Size = new System.Drawing.Size(22, 14); + this.LblImage.TabIndex = 6; + this.LblImage.Text = "图"; + this.toolTip1.SetToolTip(this.LblImage, "插入图片"); + this.LblImage.Click += new System.EventHandler(this.LblImage_Click); + // + // openFileDialog1 + // + this.openFileDialog1.Filter = "图片|*.jpg;*.bmp;*.gif;*.png"; + // + // FrmSticky + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.ClientSize = new System.Drawing.Size(351, 322); + this.Controls.Add(this.txtContent); + this.Controls.Add(this.PnlBottom); + this.Controls.Add(this.PnlTop); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmSticky"; + this.Padding = new System.Windows.Forms.Padding(3); + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmSticky_FormClosed); + this.Load += new System.EventHandler(this.FrmSticky_Load); + this.ResizeEnd += new System.EventHandler(this.FrmSticky_ResizeEnd); + this.LocationChanged += new System.EventHandler(this.FrmSticky_LocationChanged); + this.Resize += new System.EventHandler(this.FrmSticky_Resize); + this.MenuNote.ResumeLayout(false); + this.PnlTop.ResumeLayout(false); + this.PnlBottom.ResumeLayout(false); + this.PnlBottom.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.RichTextBox txtContent; + private System.Windows.Forms.Panel PnlTop; + private System.Windows.Forms.Panel PnlBottom; + private System.Windows.Forms.Label LblClose; + private System.Windows.Forms.Label LblAdd; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.Label LblStrikeout; + private System.Windows.Forms.Label LblUnderline; + private System.Windows.Forms.Label LblItalic; + private System.Windows.Forms.Label LblBold; + private System.Windows.Forms.ContextMenuStrip MenuNote; + private System.Windows.Forms.ToolStripMenuItem 撤销ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 重做ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 剪切ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 复制ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 粘贴ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem 全选ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem 字体ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 字体颜色ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; + private System.Windows.Forms.ToolStripMenuItem 插入ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 插入时间ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 背景颜色ToolStripMenuItem; + private System.Windows.Forms.ColorDialog colorDialog1; + private System.Windows.Forms.FontDialog fontDialog1; + private System.Windows.Forms.Label LblTopMost; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.ToolStripMenuItem 透明度ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 不透明ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem5; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem10; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13; + private System.Windows.Forms.Label LblBullet; + private System.Windows.Forms.Label LblImage; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmSticky.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmSticky.cs new file mode 100644 index 0000000..a2440bc --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmSticky.cs @@ -0,0 +1,466 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmSticky : Form + { + public FrmSticky() + { + InitializeComponent(); + Itrycn_Info.StickyList.Add(this); + ryCommon.SuperForm superform = new ryCommon.SuperForm(this); + superform.Resizable = true; + superform.SetFormMove(this); + superform.SetFormMove(PnlTop); + superform.SetFormMove(PnlBottom); + timer1.Start(); + //RyForm.SetDesktopForm(Handle); + } + //定义图像反色函数 + private Bitmap PContray(Image a,Color _rev_color) + { + int Height = a.Height; + int Width = a.Width; + Bitmap bitmap = new Bitmap(Width, Height); + Bitmap MyBitmap = (Bitmap)a; + Color pixel; + Color img_color = _rev_color; + for (int x = 1; x < Width; x++) + { + for (int y = 1; y < Height; y++) + { + pixel = MyBitmap.GetPixel(x, y); + if (pixel.A==0 && pixel.R==0 && pixel.G==0 && pixel.B==0) { continue; } + bitmap.SetPixel(x, y, img_color); + } + } + return bitmap; + } + /// + /// 设置或获取当前便捷的ID号 + /// + public int Id { get; set; } = 0; + /// + /// 是否是新增便笺 + /// + public bool IsAdd { get; set; } = false; + /// + /// 设置或获取便笺背景色 + /// + public Color StickyBackColor + { + get { return txtContent.BackColor; } + set + { + BackColor = value; + PnlTop.BackColor = value; + PnlBottom.BackColor = value; + txtContent.BackColor = value; + var rev_color= GetRevColor(); + LblTopMost.Image = PContray(Itrycn_Db.GetSkinImg("top"), rev_color); + LblClose.Image = PContray(Itrycn_Db.GetSkinImg("close"), rev_color); + txtContent.ForeColor = rev_color; + LblAdd.ForeColor = rev_color; + LblBold.ForeColor = rev_color; + LblItalic.ForeColor = rev_color; + LblUnderline.ForeColor = rev_color; + LblStrikeout.ForeColor = rev_color; + LblBullet.ForeColor = rev_color; + LblImage.ForeColor = rev_color; + } + } + private Color GetRevColor() + { + if (StickyBackColor == Color.Blue) { return Color.White; } + if (StickyBackColor == Color.FromArgb(255,0,128,255)) { return Color.White; } + if (StickyBackColor == Color.Gray) { return Color.White; } + if (StickyBackColor == Color.Red) { return Color.White; } + if (StickyBackColor == Color.FromArgb(255, 255, 0, 128)) { return Color.White; } + if (StickyBackColor == Color.FromArgb(255, 255, 128, 0)) { return Color.White; } + if (StickyBackColor == Color.FromArgb(255, 0, 0, 160)) { return Color.White; } + if (StickyBackColor == Color.FromArgb(255, 128, 0, 255)) { return Color.White; } + if (StickyBackColor == Color.Navy) { return Color.White; } + var hsl = ryControls.ColorHelper.RgbToHsl(new ryControls.ColorRGB(StickyBackColor)); + hsl.L = 255 - hsl.L; + // Color img_color = Color.FromArgb(255 - StickyBackColor.R, 255 - StickyBackColor.G, 255 - StickyBackColor.B); + return ryControls.ColorHelper.HslToRgb(hsl).GetColor(); + } + #region 界面按钮设置 + private void LblClose_Click(object sender, EventArgs e) + { + DeskShow = 0; + if (txtContent.Text == "") + { + DataProvider mydb = new DataProvider(); + IDbInterface db = TimeClock.Itrycn_Db.CreateDataProvider(TimeClock.Itrycn_Db.dataType); + if (db.ConnDb(TimeClock.Itrycn_Db.SQLConnStr) == 1) + { + db.DelById("Sticky",Id.ToString()); + } + db.Free(); + } + else + { + SaveSticky(); + } + this.Close(); + } + public bool ProcUse = false; + private void LblAdd_Click(object sender, EventArgs e) + { + FrmSticky frm = new FrmSticky(); + frm.ProcUse = true; + frm.Id = -1; + frm.IsAdd = true; + frm.StickyBackColor = StickyBackColor; + frm.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - frm.Width, 20); + frm.Show(); + frm.ProcUse = false; + } + private void SetFontStyle(FontStyle style, bool IsRemove) + { + if (IsRemove) + { txtContent.SelectionFont = new Font(txtContent.SelectionFont, txtContent.SelectionFont.Style ^ style); } + else { txtContent.SelectionFont = new Font(txtContent.SelectionFont, txtContent.SelectionFont.Style | style); } + } + private void LblBold_Click(object sender, EventArgs e) + { + SetFontStyle(FontStyle.Bold, txtContent.SelectionFont.Bold); + } + + private void LblItalic_Click(object sender, EventArgs e) + { + SetFontStyle(FontStyle.Italic, txtContent.SelectionFont.Italic); + } + + private void LblUnderline_Click(object sender, EventArgs e) + { + SetFontStyle(FontStyle.Underline, txtContent.SelectionFont.Underline); + } + + private void LblStrikeout_Click(object sender, EventArgs e) + { + SetFontStyle(FontStyle.Strikeout, txtContent.SelectionFont.Strikeout); + } + #endregion + #region 菜单设置 + private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Undo(); + } + + private void 重做ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Redo(); + } + + private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Cut(); + } + + private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Copy(); + } + + private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.Paste(); + } + + private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectedText = ""; + } + + private void 全选ToolStripMenuItem_Click(object sender, EventArgs e) + { + txtContent.SelectAll(); + } + + private void MenuNote_Opening(object sender, CancelEventArgs e) + { + 撤销ToolStripMenuItem.Enabled = txtContent.CanUndo; + 重做ToolStripMenuItem.Enabled = txtContent.CanRedo; + 剪切ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 复制ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 粘贴ToolStripMenuItem.Enabled = Clipboard.GetText() != ""; + 删除ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 字体ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 字体颜色ToolStripMenuItem.Enabled = txtContent.SelectedText != ""; + 不透明ToolStripMenuItem.Checked = this.Opacity == 1; + for (int i = 2; i < 透明度ToolStripMenuItem.DropDownItems.Count; i++) + { + var item = (ToolStripMenuItem)透明度ToolStripMenuItem.DropDownItems[i]; + item.Checked = this.Opacity.ToString("0%") == item.Text; + } + } + + private void 字体ToolStripMenuItem_Click(object sender, EventArgs e) + { + fontDialog1.Font = txtContent.SelectionFont; + if (fontDialog1.ShowDialog() == DialogResult.OK) + { + txtContent.SelectionFont = fontDialog1.Font; + SaveSticky(); + } + } + + private void 字体颜色ToolStripMenuItem_Click(object sender, EventArgs e) + { + colorDialog1.Color = txtContent.SelectionColor; + if (colorDialog1.ShowDialog() == DialogResult.OK) + { + txtContent.SelectionColor = colorDialog1.Color; + SaveSticky(); + } + } + private void 背景颜色ToolStripMenuItem_Click(object sender, EventArgs e) + { + colorDialog1.Color = StickyBackColor; + if (colorDialog1.ShowDialog() == DialogResult.OK) + { + StickyBackColor = colorDialog1.Color; + SaveSticky(); + } + } + #endregion + private void FrmSticky_Load(object sender, EventArgs e) + { + } + private int DeskShow = 1; + /// + /// 保存便笺 + /// + private void SaveSticky() + { + if (ProcUse) { return; } + RyQuickSQL mySQL = new RyQuickSQL("Sticky"); + mySQL.AddField("RichContent", txtContent.Rtf); + mySQL.AddField("Content", txtContent.Text); + mySQL.AddField("DeskShow", DeskShow); + ryCommon.Storage mStor = new ryCommon.Storage(); + mStor.SelectNodeBySet(); + mStor.SetAttrValue("StickyBackColor", ColorTranslator.ToHtml(StickyBackColor)); + mStor.SetAttrValue("Left", this.Left); + mStor.SetAttrValue("Top", this.Top); + mStor.SetAttrValue("Width", this.Width); + mStor.SetAttrValue("Height", this. Height); + mStor.SetAttrValue("TopMost", this.TopMost); + mStor.SetAttrValue("Opacity", this.Opacity); + mySQL.AddField("Setting", mStor.XMLText); + mySQL.AddField("editTime", DateTime.Now); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1) + { + if (IsAdd && Id == -1) + { + mySQL.AddField("addTime", DateTime.Now); + var ds = db.ReadData(mySQL.GetInsertSQL() + ";select last_insert_rowid();", mySQL); + if (mydb.HaveData(ds)) + { + var row = mydb.GetData(ds); + Id = row[0].ToInt(); + } + } + else + { db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + Id, mySQL); } + } + db.Free(); + } + /// + /// 加载便笺信息 + /// + public void LoadSticky(bool _isAdd,int _Id) + { + IsAdd = _isAdd; + Id = _Id; + LoadSticky(); + } + /// + /// 加载便笺信息 + /// + public void LoadSticky() + { + ProcUse = true; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1) + { + var ds = db.ReadData("select * from Sticky where id="+Id); + if(mydb.HaveData(ds)) + { + var row = mydb.GetData(ds); + #region 读取便笺信息 + try + { + txtContent.Rtf = row["RichContent"].ToString(); + } + catch { } + ryCommon.Storage mStor = new ryCommon.Storage(row["Setting"].ToString()); + mStor.SelectNodeBySet(); + this.Location = new Point(mStor.GetAttrValue("Left", 0), mStor.GetAttrValue("Top", 0)); + this.Size = new Size(mStor.GetAttrValue("Width", 0), mStor.GetAttrValue("Height", 0)); + this.TopMost = mStor.GetAttrValue("TopMost", false); + this.Opacity = mStor.GetAttrValue("Opacity", 0d); + try + { + StickyBackColor = ColorTranslator.FromHtml(mStor.GetAttrValue("StickyBackColor")); + } + catch { } + #endregion + } + } + db.Free(); + ProcUse = false; + } + + private void txtContent_TextChanged(object sender, EventArgs e) + { + dt_change = DateTime.Now; + isChange = true; + } + + private void LblTopMost_Click(object sender, EventArgs e) + { + this.TopMost = !this.TopMost; + SaveSticky(); + } + /// + /// 便笺状态是否发生改变 + /// + bool isChange = false; + /// + /// 经过多少毫秒延迟后来检测状态 + /// + int delayTime = 2000; + DateTime dt_change = DateTime.Now; + /// + /// 便笺状态发生改变时 + /// + private void OnChange() + { + SaveSticky(); + } + private void FrmSticky_ResizeEnd(object sender, EventArgs e) + { + SaveSticky(); + } + + private void FrmSticky_LocationChanged(object sender, EventArgs e) + { + dt_change = DateTime.Now; + isChange = true; + } + + private void Timer1_Tick(object sender, EventArgs e) + { + if(isChange && dt_change.AddMilliseconds(delayTime) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 106, 17 + + + 17, 17 + + + 17, 17 + + + 204, 17 + + + 331, 17 + + + 453, 17 + + + 543, 17 + + + 72 + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.Designer.cs new file mode 100644 index 0000000..1410e6e --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.Designer.cs @@ -0,0 +1,1547 @@ +namespace TimeClock.DbOp +{ + partial class FrmTimeAdd + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("所有提醒"); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmTimeAdd)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.BtnPlay = new ryControls.ButtonEx(); + this.CbbSound = new ryControls.RyComboBox(); + this.BtnSelectPic = new ryControls.ButtonEx(); + this.CbbShowPic = new ryControls.RyComboBox(); + this.ChkShowPic = new System.Windows.Forms.CheckBox(); + this.BtnSelectSound = new ryControls.ButtonEx(); + this.ChkSound = new System.Windows.Forms.CheckBox(); + this.LblTimeStr = new System.Windows.Forms.Label(); + this.TxtContent = new ryControls.TextBoxEx2(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.ChkEarlierTime = new System.Windows.Forms.CheckBox(); + this.CbbEarlierTime = new ryControls.RyComboBox(); + this.panel3 = new System.Windows.Forms.Panel(); + this.PnlFile = new System.Windows.Forms.Panel(); + this.BtnFile = new ryControls.ButtonEx(); + this.CbbPram = new ryControls.RyComboBox(); + this.LblPram = new System.Windows.Forms.Label(); + this.CbbFile = new ryControls.RyComboBox(); + this.LblFile = new System.Windows.Forms.Label(); + this.CbbAction = new ryControls.RyComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.PnlStartTime = new System.Windows.Forms.Panel(); + this.Dt_StartTime = new ryControls.DateTimePickerEX(); + this.Dt_StartDate = new ryControls.DateTimePickerEX(); + this.label4 = new System.Windows.Forms.Label(); + this.PnlTime = new System.Windows.Forms.Panel(); + this.buttonEx1 = new ryControls.ButtonEx(); + this.DtTime = new ryControls.DateTimePickerEX(); + this.DtDay = new ryControls.DateTimePickerEX(); + this.PnlWeek = new System.Windows.Forms.Panel(); + this.ChkW7 = new System.Windows.Forms.CheckBox(); + this.ChkW6 = new System.Windows.Forms.CheckBox(); + this.ChkW5 = new System.Windows.Forms.CheckBox(); + this.ChkW4 = new System.Windows.Forms.CheckBox(); + this.ChkW3 = new System.Windows.Forms.CheckBox(); + this.ChkW2 = new System.Windows.Forms.CheckBox(); + this.ChkW1 = new System.Windows.Forms.CheckBox(); + this.PnlMonth = new System.Windows.Forms.Panel(); + this.ChkRevDay = new System.Windows.Forms.CheckBox(); + this.CbbDay = new ryControls.RyComboBox(); + this.PnlYear = new System.Windows.Forms.Panel(); + this.CbbLunar = new ryControls.RyComboBox(); + this.CbbDay_y = new ryControls.RyComboBox(); + this.ChkRevDay_y = new System.Windows.Forms.CheckBox(); + this.CbbMonth_y = new ryControls.RyComboBox(); + this.PnlInterval = new System.Windows.Forms.Panel(); + this.NumInterval = new ryControls.NumericUpDownEx(); + this.label3 = new System.Windows.Forms.Label(); + this.LblInterval = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.RbWinStart = new System.Windows.Forms.RadioButton(); + this.RbYear = new System.Windows.Forms.RadioButton(); + this.RbMonth = new System.Windows.Forms.RadioButton(); + this.RbWeek = new System.Windows.Forms.RadioButton(); + this.RbTheTime = new System.Windows.Forms.RadioButton(); + this.RbDay = new System.Windows.Forms.RadioButton(); + this.RbHour = new System.Windows.Forms.RadioButton(); + this.RbMinute = new System.Windows.Forms.RadioButton(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.textColumn1 = new XPTable.Models.TextColumn(); + this.textColumn2 = new XPTable.Models.TextColumn(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.添加时间段ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除时间段ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.清空时间段ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.CbbDisturbed = new ryControls.RyComboBox(); + this.ChkEnabled = new System.Windows.Forms.CheckBox(); + this.ChkAllowShow = new System.Windows.Forms.CheckBox(); + this.txtName = new ryControls.TextBoxEx2(); + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.openFileDialog2 = new System.Windows.Forms.OpenFileDialog(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.ChkNoShowTip = new System.Windows.Forms.CheckBox(); + this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.分钟后ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.分钟后ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.分钟后ToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.分钟后ToolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); + this.分钟后ToolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem(); + this.小时后ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.小时后ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.天后ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.天后ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.天后ToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.周后ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.天后ToolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); + this.个月后ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.个月后ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.自定义时间ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.label8 = new System.Windows.Forms.Label(); + this.PnlKeys = new ryControls.PanelEx(); + this.TxtKeys = new System.Windows.Forms.TextBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.panelEx2 = new ryControls.PanelEx(); + this.ctlTreeView1 = new ryControls.CtlTreeView(); + this.tabControl1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + this.PnlFile.SuspendLayout(); + this.PnlStartTime.SuspendLayout(); + this.PnlTime.SuspendLayout(); + this.PnlWeek.SuspendLayout(); + this.PnlMonth.SuspendLayout(); + this.PnlYear.SuspendLayout(); + this.PnlInterval.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumInterval)).BeginInit(); + this.panel1.SuspendLayout(); + this.tabPage3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.contextMenuStrip1.SuspendLayout(); + this.contextMenuStrip2.SuspendLayout(); + this.PnlKeys.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.panelEx2.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(11, 14); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(29, 12); + this.label1.TabIndex = 7; + this.label1.Text = "定时"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(10, 9); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(29, 12); + this.label2.TabIndex = 9; + this.label2.Text = "标题"; + // + // tabControl1 + // + this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Location = new System.Drawing.Point(12, 55); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(575, 397); + this.tabControl1.TabIndex = 11; + this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.TabControl1_SelectedIndexChanged); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.BtnPlay); + this.tabPage2.Controls.Add(this.CbbSound); + this.tabPage2.Controls.Add(this.BtnSelectPic); + this.tabPage2.Controls.Add(this.CbbShowPic); + this.tabPage2.Controls.Add(this.ChkShowPic); + this.tabPage2.Controls.Add(this.BtnSelectSound); + this.tabPage2.Controls.Add(this.ChkSound); + this.tabPage2.Controls.Add(this.LblTimeStr); + this.tabPage2.Controls.Add(this.TxtContent); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(567, 371); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "内容"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // BtnPlay + // + this.BtnPlay.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BtnPlay.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnPlay.Location = new System.Drawing.Point(525, 284); + this.BtnPlay.Name = "BtnPlay"; + this.BtnPlay.Size = new System.Drawing.Size(36, 27); + this.BtnPlay.TabIndex = 21; + this.BtnPlay.Text = "播放"; + this.BtnPlay.UseVisualStyleBackColor = true; + this.BtnPlay.Click += new System.EventHandler(this.BtnPlay_Click); + // + // CbbSound + // + this.CbbSound.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbSound.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbSound.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbSound.FormattingEnabled = true; + this.CbbSound.Location = new System.Drawing.Point(85, 286); + this.CbbSound.Name = "CbbSound"; + this.CbbSound.Size = new System.Drawing.Size(381, 24); + this.CbbSound.TabIndex = 20; + // + // BtnSelectPic + // + this.BtnSelectPic.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnSelectPic.Location = new System.Drawing.Point(472, 312); + this.BtnSelectPic.Name = "BtnSelectPic"; + this.BtnSelectPic.Size = new System.Drawing.Size(47, 27); + this.BtnSelectPic.TabIndex = 19; + this.BtnSelectPic.Text = "选择"; + this.BtnSelectPic.UseVisualStyleBackColor = true; + this.BtnSelectPic.Click += new System.EventHandler(this.BtnSelectPic_Click); + // + // CbbShowPic + // + this.CbbShowPic.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbShowPic.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbShowPic.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbShowPic.FormattingEnabled = true; + this.CbbShowPic.Location = new System.Drawing.Point(85, 315); + this.CbbShowPic.Name = "CbbShowPic"; + this.CbbShowPic.Size = new System.Drawing.Size(381, 24); + this.CbbShowPic.TabIndex = 18; + this.toolTip1.SetToolTip(this.CbbShowPic, "本项仅在全屏提醒时生效,支持gif、jpg、bmp、png等图片,\r\n可以显示在全屏提醒界面,来帮助您区分不同提醒。"); + // + // ChkShowPic + // + this.ChkShowPic.AutoSize = true; + this.ChkShowPic.Location = new System.Drawing.Point(7, 319); + this.ChkShowPic.Name = "ChkShowPic"; + this.ChkShowPic.Size = new System.Drawing.Size(72, 16); + this.ChkShowPic.TabIndex = 17; + this.ChkShowPic.Text = "显示图片"; + this.toolTip1.SetToolTip(this.ChkShowPic, "本项仅在全屏提醒时生效,支持gif、jpg、bmp、png等图片,\r\n可以显示在全屏提醒界面,来帮助您区分不同提醒。"); + this.ChkShowPic.UseVisualStyleBackColor = true; + this.ChkShowPic.CheckedChanged += new System.EventHandler(this.ChkShowPic_CheckedChanged); + // + // BtnSelectSound + // + this.BtnSelectSound.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnSelectSound.Location = new System.Drawing.Point(472, 284); + this.BtnSelectSound.Name = "BtnSelectSound"; + this.BtnSelectSound.Size = new System.Drawing.Size(47, 27); + this.BtnSelectSound.TabIndex = 16; + this.BtnSelectSound.Text = "选择"; + this.BtnSelectSound.UseVisualStyleBackColor = true; + this.BtnSelectSound.Click += new System.EventHandler(this.BtnSelectSound_Click); + // + // ChkSound + // + this.ChkSound.AutoSize = true; + this.ChkSound.Checked = true; + this.ChkSound.CheckState = System.Windows.Forms.CheckState.Checked; + this.ChkSound.Location = new System.Drawing.Point(7, 291); + this.ChkSound.Name = "ChkSound"; + this.ChkSound.Size = new System.Drawing.Size(72, 16); + this.ChkSound.TabIndex = 2; + this.ChkSound.Text = "播放声音"; + this.ChkSound.UseVisualStyleBackColor = true; + this.ChkSound.CheckedChanged += new System.EventHandler(this.ChkSound_CheckedChanged); + // + // LblTimeStr + // + this.LblTimeStr.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.LblTimeStr.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.LblTimeStr.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.LblTimeStr.ForeColor = System.Drawing.Color.Gray; + this.LblTimeStr.Location = new System.Drawing.Point(7, 6); + this.LblTimeStr.Name = "LblTimeStr"; + this.LblTimeStr.Size = new System.Drawing.Size(554, 23); + this.LblTimeStr.TabIndex = 1; + this.LblTimeStr.Text = "未知"; + this.LblTimeStr.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // TxtContent + // + this.TxtContent.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtContent.BackColor = System.Drawing.Color.White; + this.TxtContent.EmptyText = ""; + this.TxtContent.Location = new System.Drawing.Point(6, 34); + this.TxtContent.MaxLength = 999999999; + this.TxtContent.Multiline = true; + this.TxtContent.Name = "TxtContent"; + this.TxtContent.OnlyNumeric = false; + this.TxtContent.PasswordChar = '\0'; + this.TxtContent.ReadOnly = false; + this.TxtContent.SelectedText = ""; + this.TxtContent.SelectionLength = 0; + this.TxtContent.SelectionStart = 0; + this.TxtContent.Size = new System.Drawing.Size(555, 249); + this.TxtContent.TabIndex = 0; + this.TxtContent.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtContent.ToolTip = "可选"; + this.TxtContent.WordWrap = true; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.panel2); + this.tabPage1.Controls.Add(this.panel1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(567, 371); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "定时"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // panel2 + // + this.panel2.Controls.Add(this.panel4); + this.panel2.Controls.Add(this.panel3); + this.panel2.Controls.Add(this.PnlStartTime); + this.panel2.Controls.Add(this.PnlTime); + this.panel2.Controls.Add(this.PnlWeek); + this.panel2.Controls.Add(this.PnlMonth); + this.panel2.Controls.Add(this.PnlYear); + this.panel2.Controls.Add(this.PnlInterval); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(131, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(433, 365); + this.panel2.TabIndex = 12; + // + // panel4 + // + this.panel4.Controls.Add(this.label7); + this.panel4.Controls.Add(this.label6); + this.panel4.Controls.Add(this.ChkEarlierTime); + this.panel4.Controls.Add(this.CbbEarlierTime); + this.panel4.Dock = System.Windows.Forms.DockStyle.Top; + this.panel4.Location = new System.Drawing.Point(0, 339); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(433, 35); + this.panel4.TabIndex = 16; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.ForeColor = System.Drawing.Color.Gray; + this.label7.Location = new System.Drawing.Point(226, 11); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(137, 12); + this.label7.TabIndex = 14; + this.label7.Text = "(提前提醒不会执行动作)"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(191, 11); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(29, 12); + this.label6.TabIndex = 13; + this.label6.Text = "提醒"; + // + // ChkEarlierTime + // + this.ChkEarlierTime.AutoSize = true; + this.ChkEarlierTime.Location = new System.Drawing.Point(16, 10); + this.ChkEarlierTime.Name = "ChkEarlierTime"; + this.ChkEarlierTime.Size = new System.Drawing.Size(48, 16); + this.ChkEarlierTime.TabIndex = 12; + this.ChkEarlierTime.Text = "提前"; + this.ChkEarlierTime.UseVisualStyleBackColor = true; + this.ChkEarlierTime.CheckedChanged += new System.EventHandler(this.ChkEarlierTime_CheckedChanged); + // + // CbbEarlierTime + // + this.CbbEarlierTime.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbEarlierTime.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbEarlierTime.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbEarlierTime.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbEarlierTime.FormattingEnabled = true; + this.CbbEarlierTime.Items.AddRange(new object[] { + "1分钟", + "2分钟", + "5分钟"}); + this.CbbEarlierTime.Location = new System.Drawing.Point(68, 5); + this.CbbEarlierTime.Name = "CbbEarlierTime"; + this.CbbEarlierTime.Size = new System.Drawing.Size(117, 24); + this.CbbEarlierTime.TabIndex = 11; + // + // panel3 + // + this.panel3.Controls.Add(this.PnlFile); + this.panel3.Controls.Add(this.CbbAction); + this.panel3.Controls.Add(this.label5); + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(0, 235); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(433, 104); + this.panel3.TabIndex = 13; + // + // PnlFile + // + this.PnlFile.Controls.Add(this.BtnFile); + this.PnlFile.Controls.Add(this.CbbPram); + this.PnlFile.Controls.Add(this.LblPram); + this.PnlFile.Controls.Add(this.CbbFile); + this.PnlFile.Controls.Add(this.LblFile); + this.PnlFile.Location = new System.Drawing.Point(8, 33); + this.PnlFile.Name = "PnlFile"; + this.PnlFile.Size = new System.Drawing.Size(422, 65); + this.PnlFile.TabIndex = 13; + this.PnlFile.Visible = false; + // + // BtnFile + // + this.BtnFile.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnFile.Location = new System.Drawing.Point(368, 3); + this.BtnFile.Name = "BtnFile"; + this.BtnFile.Size = new System.Drawing.Size(47, 27); + this.BtnFile.TabIndex = 15; + this.BtnFile.Text = "选择"; + this.BtnFile.UseVisualStyleBackColor = true; + this.BtnFile.Click += new System.EventHandler(this.BtnFile_Click); + // + // CbbPram + // + this.CbbPram.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbPram.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbPram.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbPram.FormattingEnabled = true; + this.CbbPram.Location = new System.Drawing.Point(68, 33); + this.CbbPram.Name = "CbbPram"; + this.CbbPram.Size = new System.Drawing.Size(294, 24); + this.CbbPram.TabIndex = 14; + // + // LblPram + // + this.LblPram.AutoSize = true; + this.LblPram.Location = new System.Drawing.Point(3, 38); + this.LblPram.Name = "LblPram"; + this.LblPram.Size = new System.Drawing.Size(47, 12); + this.LblPram.TabIndex = 13; + this.LblPram.Text = "命令行:"; + // + // CbbFile + // + this.CbbFile.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbFile.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbFile.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbFile.FormattingEnabled = true; + this.CbbFile.Location = new System.Drawing.Point(68, 5); + this.CbbFile.Name = "CbbFile"; + this.CbbFile.Size = new System.Drawing.Size(294, 24); + this.CbbFile.TabIndex = 12; + // + // LblFile + // + this.LblFile.AutoSize = true; + this.LblFile.Location = new System.Drawing.Point(3, 10); + this.LblFile.Name = "LblFile"; + this.LblFile.Size = new System.Drawing.Size(35, 12); + this.LblFile.TabIndex = 11; + this.LblFile.Text = "文件:"; + // + // CbbAction + // + this.CbbAction.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbAction.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbAction.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbAction.FormattingEnabled = true; + this.CbbAction.Location = new System.Drawing.Point(76, 6); + this.CbbAction.Name = "CbbAction"; + this.CbbAction.Size = new System.Drawing.Size(294, 24); + this.CbbAction.TabIndex = 10; + this.CbbAction.SelectedIndexChanged += new System.EventHandler(this.CbbAction_SelectedIndexChanged); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(11, 11); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(59, 12); + this.label5.TabIndex = 9; + this.label5.Text = "执行动作:"; + // + // PnlStartTime + // + this.PnlStartTime.Controls.Add(this.Dt_StartTime); + this.PnlStartTime.Controls.Add(this.Dt_StartDate); + this.PnlStartTime.Controls.Add(this.label4); + this.PnlStartTime.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlStartTime.Location = new System.Drawing.Point(0, 197); + this.PnlStartTime.Name = "PnlStartTime"; + this.PnlStartTime.Size = new System.Drawing.Size(433, 38); + this.PnlStartTime.TabIndex = 12; + // + // Dt_StartTime + // + this.Dt_StartTime.CustomFormat = "HH时mm分"; + this.Dt_StartTime.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Dt_StartTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.Dt_StartTime.Location = new System.Drawing.Point(296, 10); + this.Dt_StartTime.Name = "Dt_StartTime"; + this.Dt_StartTime.ShowUpDown = true; + this.Dt_StartTime.Size = new System.Drawing.Size(83, 23); + this.Dt_StartTime.TabIndex = 14; + // + // Dt_StartDate + // + this.Dt_StartDate.CustomFormat = "yyyy年MM月dd日 dddd"; + this.Dt_StartDate.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Dt_StartDate.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.Dt_StartDate.Location = new System.Drawing.Point(100, 10); + this.Dt_StartDate.Name = "Dt_StartDate"; + this.Dt_StartDate.Size = new System.Drawing.Size(190, 23); + this.Dt_StartDate.TabIndex = 12; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(11, 15); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(83, 12); + this.label4.TabIndex = 8; + this.label4.Text = "开始计算时间:"; + // + // PnlTime + // + this.PnlTime.Controls.Add(this.buttonEx1); + this.PnlTime.Controls.Add(this.DtTime); + this.PnlTime.Controls.Add(this.DtDay); + this.PnlTime.Controls.Add(this.label1); + this.PnlTime.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlTime.Location = new System.Drawing.Point(0, 157); + this.PnlTime.Name = "PnlTime"; + this.PnlTime.Size = new System.Drawing.Size(433, 40); + this.PnlTime.TabIndex = 10; + this.PnlTime.Visible = false; + // + // buttonEx1 + // + this.buttonEx1.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.buttonEx1.Location = new System.Drawing.Point(333, 6); + this.buttonEx1.Name = "buttonEx1"; + this.buttonEx1.Size = new System.Drawing.Size(69, 27); + this.buttonEx1.TabIndex = 16; + this.buttonEx1.Text = "快速操作"; + this.buttonEx1.UseVisualStyleBackColor = true; + this.buttonEx1.Click += new System.EventHandler(this.ButtonEx1_Click); + // + // DtTime + // + this.DtTime.CustomFormat = "HH时mm分"; + this.DtTime.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.DtTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.DtTime.Location = new System.Drawing.Point(239, 9); + this.DtTime.Name = "DtTime"; + this.DtTime.ShowUpDown = true; + this.DtTime.Size = new System.Drawing.Size(88, 23); + this.DtTime.TabIndex = 15; + // + // DtDay + // + this.DtDay.CustomFormat = "yyyy年MM月dd日 dddd"; + this.DtDay.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.DtDay.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.DtDay.Location = new System.Drawing.Point(46, 9); + this.DtDay.Name = "DtDay"; + this.DtDay.Size = new System.Drawing.Size(187, 23); + this.DtDay.TabIndex = 10; + // + // PnlWeek + // + this.PnlWeek.Controls.Add(this.ChkW7); + this.PnlWeek.Controls.Add(this.ChkW6); + this.PnlWeek.Controls.Add(this.ChkW5); + this.PnlWeek.Controls.Add(this.ChkW4); + this.PnlWeek.Controls.Add(this.ChkW3); + this.PnlWeek.Controls.Add(this.ChkW2); + this.PnlWeek.Controls.Add(this.ChkW1); + this.PnlWeek.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlWeek.Location = new System.Drawing.Point(0, 125); + this.PnlWeek.Name = "PnlWeek"; + this.PnlWeek.Size = new System.Drawing.Size(433, 32); + this.PnlWeek.TabIndex = 14; + // + // ChkW7 + // + this.ChkW7.AutoSize = true; + this.ChkW7.Location = new System.Drawing.Point(343, 9); + this.ChkW7.Name = "ChkW7"; + this.ChkW7.Size = new System.Drawing.Size(48, 16); + this.ChkW7.TabIndex = 15; + this.ChkW7.Text = "周日"; + this.ChkW7.UseVisualStyleBackColor = true; + // + // ChkW6 + // + this.ChkW6.AutoSize = true; + this.ChkW6.Location = new System.Drawing.Point(288, 9); + this.ChkW6.Name = "ChkW6"; + this.ChkW6.Size = new System.Drawing.Size(48, 16); + this.ChkW6.TabIndex = 14; + this.ChkW6.Text = "周六"; + this.ChkW6.UseVisualStyleBackColor = true; + // + // ChkW5 + // + this.ChkW5.AutoSize = true; + this.ChkW5.Location = new System.Drawing.Point(233, 9); + this.ChkW5.Name = "ChkW5"; + this.ChkW5.Size = new System.Drawing.Size(48, 16); + this.ChkW5.TabIndex = 13; + this.ChkW5.Text = "周五"; + this.ChkW5.UseVisualStyleBackColor = true; + // + // ChkW4 + // + this.ChkW4.AutoSize = true; + this.ChkW4.Location = new System.Drawing.Point(178, 9); + this.ChkW4.Name = "ChkW4"; + this.ChkW4.Size = new System.Drawing.Size(48, 16); + this.ChkW4.TabIndex = 12; + this.ChkW4.Text = "周四"; + this.ChkW4.UseVisualStyleBackColor = true; + // + // ChkW3 + // + this.ChkW3.AutoSize = true; + this.ChkW3.Location = new System.Drawing.Point(123, 9); + this.ChkW3.Name = "ChkW3"; + this.ChkW3.Size = new System.Drawing.Size(48, 16); + this.ChkW3.TabIndex = 11; + this.ChkW3.Text = "周三"; + this.ChkW3.UseVisualStyleBackColor = true; + // + // ChkW2 + // + this.ChkW2.AutoSize = true; + this.ChkW2.Location = new System.Drawing.Point(68, 9); + this.ChkW2.Name = "ChkW2"; + this.ChkW2.Size = new System.Drawing.Size(48, 16); + this.ChkW2.TabIndex = 10; + this.ChkW2.Text = "周二"; + this.ChkW2.UseVisualStyleBackColor = true; + // + // ChkW1 + // + this.ChkW1.AutoSize = true; + this.ChkW1.Location = new System.Drawing.Point(13, 9); + this.ChkW1.Name = "ChkW1"; + this.ChkW1.Size = new System.Drawing.Size(48, 16); + this.ChkW1.TabIndex = 9; + this.ChkW1.Text = "周一"; + this.ChkW1.UseVisualStyleBackColor = true; + // + // PnlMonth + // + this.PnlMonth.Controls.Add(this.ChkRevDay); + this.PnlMonth.Controls.Add(this.CbbDay); + this.PnlMonth.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlMonth.Location = new System.Drawing.Point(0, 85); + this.PnlMonth.Name = "PnlMonth"; + this.PnlMonth.Size = new System.Drawing.Size(433, 40); + this.PnlMonth.TabIndex = 15; + this.PnlMonth.Visible = false; + // + // ChkRevDay + // + this.ChkRevDay.AutoSize = true; + this.ChkRevDay.Location = new System.Drawing.Point(16, 10); + this.ChkRevDay.Name = "ChkRevDay"; + this.ChkRevDay.Size = new System.Drawing.Size(48, 16); + this.ChkRevDay.TabIndex = 12; + this.ChkRevDay.Text = "倒数"; + this.ChkRevDay.UseVisualStyleBackColor = true; + this.ChkRevDay.CheckedChanged += new System.EventHandler(this.ChkRevDay_CheckedChanged); + // + // CbbDay + // + this.CbbDay.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbDay.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbDay.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbDay.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbDay.FormattingEnabled = true; + this.CbbDay.Location = new System.Drawing.Point(68, 5); + this.CbbDay.Name = "CbbDay"; + this.CbbDay.Size = new System.Drawing.Size(117, 24); + this.CbbDay.TabIndex = 11; + // + // PnlYear + // + this.PnlYear.Controls.Add(this.CbbLunar); + this.PnlYear.Controls.Add(this.CbbDay_y); + this.PnlYear.Controls.Add(this.ChkRevDay_y); + this.PnlYear.Controls.Add(this.CbbMonth_y); + this.PnlYear.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlYear.Location = new System.Drawing.Point(0, 45); + this.PnlYear.Name = "PnlYear"; + this.PnlYear.Size = new System.Drawing.Size(433, 40); + this.PnlYear.TabIndex = 17; + this.PnlYear.Visible = false; + // + // CbbLunar + // + this.CbbLunar.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbLunar.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbLunar.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbLunar.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbLunar.FormattingEnabled = true; + this.CbbLunar.Items.AddRange(new object[] { + "阳历", + "农历"}); + this.CbbLunar.Location = new System.Drawing.Point(13, 6); + this.CbbLunar.Name = "CbbLunar"; + this.CbbLunar.Size = new System.Drawing.Size(70, 24); + this.CbbLunar.TabIndex = 14; + this.CbbLunar.SelectedIndexChanged += new System.EventHandler(this.CbbLunar_SelectedIndexChanged); + // + // CbbDay_y + // + this.CbbDay_y.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbDay_y.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbDay_y.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbDay_y.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbDay_y.FormattingEnabled = true; + this.CbbDay_y.Location = new System.Drawing.Point(264, 6); + this.CbbDay_y.Name = "CbbDay_y"; + this.CbbDay_y.Size = new System.Drawing.Size(117, 24); + this.CbbDay_y.TabIndex = 13; + // + // ChkRevDay_y + // + this.ChkRevDay_y.AutoSize = true; + this.ChkRevDay_y.Location = new System.Drawing.Point(212, 10); + this.ChkRevDay_y.Name = "ChkRevDay_y"; + this.ChkRevDay_y.Size = new System.Drawing.Size(48, 16); + this.ChkRevDay_y.TabIndex = 12; + this.ChkRevDay_y.Text = "倒数"; + this.ChkRevDay_y.UseVisualStyleBackColor = true; + this.ChkRevDay_y.CheckedChanged += new System.EventHandler(this.ChkRevDay_y_CheckedChanged); + // + // CbbMonth_y + // + this.CbbMonth_y.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbMonth_y.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbMonth_y.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbMonth_y.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbMonth_y.FormattingEnabled = true; + this.CbbMonth_y.Location = new System.Drawing.Point(89, 6); + this.CbbMonth_y.Name = "CbbMonth_y"; + this.CbbMonth_y.Size = new System.Drawing.Size(117, 24); + this.CbbMonth_y.TabIndex = 11; + // + // PnlInterval + // + this.PnlInterval.Controls.Add(this.NumInterval); + this.PnlInterval.Controls.Add(this.label3); + this.PnlInterval.Controls.Add(this.LblInterval); + this.PnlInterval.Dock = System.Windows.Forms.DockStyle.Top; + this.PnlInterval.Location = new System.Drawing.Point(0, 0); + this.PnlInterval.Name = "PnlInterval"; + this.PnlInterval.Size = new System.Drawing.Size(433, 45); + this.PnlInterval.TabIndex = 11; + this.PnlInterval.Visible = false; + // + // NumInterval + // + this.NumInterval.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.NumInterval.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.NumInterval.Location = new System.Drawing.Point(43, 12); + this.NumInterval.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.NumInterval.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.NumInterval.Name = "NumInterval"; + this.NumInterval.Size = new System.Drawing.Size(85, 23); + this.NumInterval.TabIndex = 4; + this.NumInterval.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.NumInterval.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(11, 15); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(29, 12); + this.label3.TabIndex = 1; + this.label3.Text = "每过"; + // + // LblInterval + // + this.LblInterval.AutoSize = true; + this.LblInterval.Location = new System.Drawing.Point(134, 15); + this.LblInterval.Name = "LblInterval"; + this.LblInterval.Size = new System.Drawing.Size(29, 12); + this.LblInterval.TabIndex = 3; + this.LblInterval.Text = "分钟"; + // + // panel1 + // + this.panel1.Controls.Add(this.RbWinStart); + this.panel1.Controls.Add(this.RbYear); + this.panel1.Controls.Add(this.RbMonth); + this.panel1.Controls.Add(this.RbWeek); + this.panel1.Controls.Add(this.RbTheTime); + this.panel1.Controls.Add(this.RbDay); + this.panel1.Controls.Add(this.RbHour); + this.panel1.Controls.Add(this.RbMinute); + this.panel1.Dock = System.Windows.Forms.DockStyle.Left; + this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(128, 365); + this.panel1.TabIndex = 0; + // + // RbWinStart + // + this.RbWinStart.AutoSize = true; + this.RbWinStart.Location = new System.Drawing.Point(15, 163); + this.RbWinStart.Name = "RbWinStart"; + this.RbWinStart.Size = new System.Drawing.Size(83, 16); + this.RbWinStart.TabIndex = 7; + this.RbWinStart.TabStop = true; + this.RbWinStart.Text = "开机启动后"; + this.RbWinStart.UseVisualStyleBackColor = true; + this.RbWinStart.CheckedChanged += new System.EventHandler(this.RbWinStart_CheckedChanged); + // + // RbYear + // + this.RbYear.AutoSize = true; + this.RbYear.Location = new System.Drawing.Point(15, 119); + this.RbYear.Name = "RbYear"; + this.RbYear.Size = new System.Drawing.Size(35, 16); + this.RbYear.TabIndex = 6; + this.RbYear.TabStop = true; + this.RbYear.Text = "年"; + this.RbYear.UseVisualStyleBackColor = true; + this.RbYear.CheckedChanged += new System.EventHandler(this.RbYear_CheckedChanged); + // + // RbMonth + // + this.RbMonth.AutoSize = true; + this.RbMonth.Location = new System.Drawing.Point(15, 97); + this.RbMonth.Name = "RbMonth"; + this.RbMonth.Size = new System.Drawing.Size(35, 16); + this.RbMonth.TabIndex = 5; + this.RbMonth.TabStop = true; + this.RbMonth.Text = "月"; + this.RbMonth.UseVisualStyleBackColor = true; + this.RbMonth.CheckedChanged += new System.EventHandler(this.RbMonth_CheckedChanged); + // + // RbWeek + // + this.RbWeek.AutoSize = true; + this.RbWeek.Location = new System.Drawing.Point(15, 75); + this.RbWeek.Name = "RbWeek"; + this.RbWeek.Size = new System.Drawing.Size(35, 16); + this.RbWeek.TabIndex = 4; + this.RbWeek.TabStop = true; + this.RbWeek.Text = "周"; + this.RbWeek.UseVisualStyleBackColor = true; + this.RbWeek.CheckedChanged += new System.EventHandler(this.RbWeek_CheckedChanged); + // + // RbTheTime + // + this.RbTheTime.AutoSize = true; + this.RbTheTime.Location = new System.Drawing.Point(15, 141); + this.RbTheTime.Name = "RbTheTime"; + this.RbTheTime.Size = new System.Drawing.Size(71, 16); + this.RbTheTime.TabIndex = 3; + this.RbTheTime.TabStop = true; + this.RbTheTime.Text = "具体时间"; + this.RbTheTime.UseVisualStyleBackColor = true; + this.RbTheTime.CheckedChanged += new System.EventHandler(this.RbTheTime_CheckedChanged); + // + // RbDay + // + this.RbDay.AutoSize = true; + this.RbDay.Location = new System.Drawing.Point(15, 53); + this.RbDay.Name = "RbDay"; + this.RbDay.Size = new System.Drawing.Size(35, 16); + this.RbDay.TabIndex = 2; + this.RbDay.TabStop = true; + this.RbDay.Text = "天"; + this.RbDay.UseVisualStyleBackColor = true; + this.RbDay.CheckedChanged += new System.EventHandler(this.RbDay_CheckedChanged); + // + // RbHour + // + this.RbHour.AutoSize = true; + this.RbHour.Location = new System.Drawing.Point(15, 31); + this.RbHour.Name = "RbHour"; + this.RbHour.Size = new System.Drawing.Size(47, 16); + this.RbHour.TabIndex = 1; + this.RbHour.TabStop = true; + this.RbHour.Text = "小时"; + this.RbHour.UseVisualStyleBackColor = true; + this.RbHour.CheckedChanged += new System.EventHandler(this.RbHour_CheckedChanged); + // + // RbMinute + // + this.RbMinute.AutoSize = true; + this.RbMinute.Location = new System.Drawing.Point(15, 9); + this.RbMinute.Name = "RbMinute"; + this.RbMinute.Size = new System.Drawing.Size(47, 16); + this.RbMinute.TabIndex = 0; + this.RbMinute.TabStop = true; + this.RbMinute.Text = "分钟"; + this.RbMinute.UseVisualStyleBackColor = true; + this.RbMinute.CheckedChanged += new System.EventHandler(this.RbMinute_CheckedChanged); + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.table1); + this.tabPage3.Controls.Add(this.CbbDisturbed); + this.tabPage3.Location = new System.Drawing.Point(4, 22); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Padding = new System.Windows.Forms.Padding(3); + this.tabPage3.Size = new System.Drawing.Size(567, 371); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "免打扰"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.ContextMenuStrip = this.contextMenuStrip1; + this.table1.EnableToolTips = true; + this.table1.FullRowSelect = true; + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(6, 39); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(555, 326); + this.table1.TabIndex = 44; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.textColumn1, + this.textColumn2}); + // + // textColumn1 + // + this.textColumn1.Editable = false; + this.textColumn1.Tag = null; + this.textColumn1.Text = "时间段"; + this.textColumn1.Width = 320; + // + // textColumn2 + // + this.textColumn2.Editable = false; + this.textColumn2.Tag = null; + this.textColumn2.Text = "备注"; + this.textColumn2.Width = 210; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.添加时间段ToolStripMenuItem, + this.删除时间段ToolStripMenuItem, + this.toolStripMenuItem1, + this.清空时间段ToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(137, 76); + // + // 添加时间段ToolStripMenuItem + // + this.添加时间段ToolStripMenuItem.Name = "添加时间段ToolStripMenuItem"; + this.添加时间段ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.添加时间段ToolStripMenuItem.Text = "添加时间段"; + this.添加时间段ToolStripMenuItem.Click += new System.EventHandler(this.添加时间段ToolStripMenuItem_Click); + // + // 删除时间段ToolStripMenuItem + // + this.删除时间段ToolStripMenuItem.Name = "删除时间段ToolStripMenuItem"; + this.删除时间段ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.删除时间段ToolStripMenuItem.Text = "删除时间段"; + this.删除时间段ToolStripMenuItem.Click += new System.EventHandler(this.删除时间段ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(133, 6); + // + // 清空时间段ToolStripMenuItem + // + this.清空时间段ToolStripMenuItem.Name = "清空时间段ToolStripMenuItem"; + this.清空时间段ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.清空时间段ToolStripMenuItem.Text = "清空时间段"; + this.清空时间段ToolStripMenuItem.Click += new System.EventHandler(this.清空时间段ToolStripMenuItem_Click); + // + // tableModel1 + // + this.tableModel1.RowHeight = 25; + // + // CbbDisturbed + // + this.CbbDisturbed.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbDisturbed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbDisturbed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbDisturbed.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbDisturbed.FormattingEnabled = true; + this.CbbDisturbed.Items.AddRange(new object[] { + "以下时间段不执行本提醒", + "只支持以下时间段内的本提醒"}); + this.CbbDisturbed.Location = new System.Drawing.Point(6, 6); + this.CbbDisturbed.Name = "CbbDisturbed"; + this.CbbDisturbed.Size = new System.Drawing.Size(257, 27); + this.CbbDisturbed.TabIndex = 43; + this.toolTip1.SetToolTip(this.CbbDisturbed, "【以下时间段不执行本提醒】\r\n在以下列表中的时间段,本提醒都将跳过提醒。\r\n【只支持以下时间段内的本提醒】\r\n只有以下列表中的某个时间段符合要求,就会提醒。\r\n而" + + "不是必须全部匹配。"); + // + // ChkEnabled + // + this.ChkEnabled.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ChkEnabled.AutoSize = true; + this.ChkEnabled.Checked = true; + this.ChkEnabled.CheckState = System.Windows.Forms.CheckState.Checked; + this.ChkEnabled.Location = new System.Drawing.Point(16, 463); + this.ChkEnabled.Name = "ChkEnabled"; + this.ChkEnabled.Size = new System.Drawing.Size(48, 16); + this.ChkEnabled.TabIndex = 12; + this.ChkEnabled.Text = "启用"; + this.ChkEnabled.UseVisualStyleBackColor = true; + // + // ChkAllowShow + // + this.ChkAllowShow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ChkAllowShow.AutoSize = true; + this.ChkAllowShow.Checked = true; + this.ChkAllowShow.CheckState = System.Windows.Forms.CheckState.Checked; + this.ChkAllowShow.Location = new System.Drawing.Point(94, 463); + this.ChkAllowShow.Name = "ChkAllowShow"; + this.ChkAllowShow.Size = new System.Drawing.Size(72, 16); + this.ChkAllowShow.TabIndex = 12; + this.ChkAllowShow.Text = "允许展示"; + this.ChkAllowShow.UseVisualStyleBackColor = true; + // + // txtName + // + this.txtName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtName.BackColor = System.Drawing.Color.White; + this.txtName.EmptyText = ""; + this.txtName.Location = new System.Drawing.Point(12, 24); + this.txtName.MaxLength = 999999999; + this.txtName.Multiline = false; + this.txtName.Name = "txtName"; + this.txtName.OnlyNumeric = false; + this.txtName.PasswordChar = '\0'; + this.txtName.ReadOnly = false; + this.txtName.SelectedText = ""; + this.txtName.SelectionLength = 0; + this.txtName.SelectionStart = 0; + this.txtName.Size = new System.Drawing.Size(416, 25); + this.txtName.TabIndex = 6; + this.txtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.txtName.ToolTip = ""; + this.txtName.WordWrap = true; + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnCancel.Location = new System.Drawing.Point(522, 458); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(65, 27); + this.btnCancel.TabIndex = 5; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnOK.Location = new System.Drawing.Point(451, 458); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(65, 27); + this.btnOK.TabIndex = 4; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // openFileDialog2 + // + this.openFileDialog2.Filter = "音频文件(*.mp3;*.wav)|*.mp3;*.wav"; + // + // ChkNoShowTip + // + this.ChkNoShowTip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ChkNoShowTip.AutoSize = true; + this.ChkNoShowTip.Location = new System.Drawing.Point(190, 463); + this.ChkNoShowTip.Name = "ChkNoShowTip"; + this.ChkNoShowTip.Size = new System.Drawing.Size(108, 16); + this.ChkNoShowTip.TabIndex = 13; + this.ChkNoShowTip.Text = "不显示提醒窗口"; + this.ChkNoShowTip.UseVisualStyleBackColor = true; + // + // contextMenuStrip2 + // + this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.分钟后ToolStripMenuItem, + this.分钟后ToolStripMenuItem1, + this.分钟后ToolStripMenuItem2, + this.分钟后ToolStripMenuItem3, + this.分钟后ToolStripMenuItem4, + this.小时后ToolStripMenuItem, + this.小时后ToolStripMenuItem1, + this.天后ToolStripMenuItem, + this.天后ToolStripMenuItem1, + this.天后ToolStripMenuItem2, + this.周后ToolStripMenuItem, + this.天后ToolStripMenuItem3, + this.个月后ToolStripMenuItem, + this.个月后ToolStripMenuItem1, + this.toolStripMenuItem2, + this.自定义时间ToolStripMenuItem}); + this.contextMenuStrip2.Name = "contextMenuStrip1"; + this.contextMenuStrip2.Size = new System.Drawing.Size(137, 340); + // + // 分钟后ToolStripMenuItem + // + this.分钟后ToolStripMenuItem.Name = "分钟后ToolStripMenuItem"; + this.分钟后ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.分钟后ToolStripMenuItem.Tag = "5"; + this.分钟后ToolStripMenuItem.Text = "5分钟后"; + this.分钟后ToolStripMenuItem.Click += new System.EventHandler(this.分钟后ToolStripMenuItem_Click); + // + // 分钟后ToolStripMenuItem1 + // + this.分钟后ToolStripMenuItem1.Name = "分钟后ToolStripMenuItem1"; + this.分钟后ToolStripMenuItem1.Size = new System.Drawing.Size(136, 22); + this.分钟后ToolStripMenuItem1.Tag = "10"; + this.分钟后ToolStripMenuItem1.Text = "10分钟后"; + this.分钟后ToolStripMenuItem1.Click += new System.EventHandler(this.分钟后ToolStripMenuItem_Click); + // + // 分钟后ToolStripMenuItem2 + // + this.分钟后ToolStripMenuItem2.Name = "分钟后ToolStripMenuItem2"; + this.分钟后ToolStripMenuItem2.Size = new System.Drawing.Size(136, 22); + this.分钟后ToolStripMenuItem2.Tag = "15"; + this.分钟后ToolStripMenuItem2.Text = "15分钟后"; + this.分钟后ToolStripMenuItem2.Click += new System.EventHandler(this.分钟后ToolStripMenuItem_Click); + // + // 分钟后ToolStripMenuItem3 + // + this.分钟后ToolStripMenuItem3.Name = "分钟后ToolStripMenuItem3"; + this.分钟后ToolStripMenuItem3.Size = new System.Drawing.Size(136, 22); + this.分钟后ToolStripMenuItem3.Tag = "30"; + this.分钟后ToolStripMenuItem3.Text = "30分钟后"; + this.分钟后ToolStripMenuItem3.Click += new System.EventHandler(this.分钟后ToolStripMenuItem_Click); + // + // 分钟后ToolStripMenuItem4 + // + this.分钟后ToolStripMenuItem4.Name = "分钟后ToolStripMenuItem4"; + this.分钟后ToolStripMenuItem4.Size = new System.Drawing.Size(136, 22); + this.分钟后ToolStripMenuItem4.Tag = "45"; + this.分钟后ToolStripMenuItem4.Text = "45分钟后"; + this.分钟后ToolStripMenuItem4.Click += new System.EventHandler(this.分钟后ToolStripMenuItem_Click); + // + // 小时后ToolStripMenuItem + // + this.小时后ToolStripMenuItem.Name = "小时后ToolStripMenuItem"; + this.小时后ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.小时后ToolStripMenuItem.Tag = "60"; + this.小时后ToolStripMenuItem.Text = "1小时后"; + this.小时后ToolStripMenuItem.Click += new System.EventHandler(this.分钟后ToolStripMenuItem_Click); + // + // 小时后ToolStripMenuItem1 + // + this.小时后ToolStripMenuItem1.Name = "小时后ToolStripMenuItem1"; + this.小时后ToolStripMenuItem1.Size = new System.Drawing.Size(136, 22); + this.小时后ToolStripMenuItem1.Tag = "120"; + this.小时后ToolStripMenuItem1.Text = "2小时后"; + this.小时后ToolStripMenuItem1.Click += new System.EventHandler(this.分钟后ToolStripMenuItem_Click); + // + // 天后ToolStripMenuItem + // + this.天后ToolStripMenuItem.Name = "天后ToolStripMenuItem"; + this.天后ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.天后ToolStripMenuItem.Tag = "1"; + this.天后ToolStripMenuItem.Text = "1天后"; + this.天后ToolStripMenuItem.Click += new System.EventHandler(this.天后ToolStripMenuItem_Click); + // + // 天后ToolStripMenuItem1 + // + this.天后ToolStripMenuItem1.Name = "天后ToolStripMenuItem1"; + this.天后ToolStripMenuItem1.Size = new System.Drawing.Size(136, 22); + this.天后ToolStripMenuItem1.Tag = "2"; + this.天后ToolStripMenuItem1.Text = "2天后"; + this.天后ToolStripMenuItem1.Click += new System.EventHandler(this.天后ToolStripMenuItem_Click); + // + // 天后ToolStripMenuItem2 + // + this.天后ToolStripMenuItem2.Name = "天后ToolStripMenuItem2"; + this.天后ToolStripMenuItem2.Size = new System.Drawing.Size(136, 22); + this.天后ToolStripMenuItem2.Tag = "3"; + this.天后ToolStripMenuItem2.Text = "3天后"; + this.天后ToolStripMenuItem2.Click += new System.EventHandler(this.天后ToolStripMenuItem_Click); + // + // 周后ToolStripMenuItem + // + this.周后ToolStripMenuItem.Name = "周后ToolStripMenuItem"; + this.周后ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.周后ToolStripMenuItem.Tag = "7"; + this.周后ToolStripMenuItem.Text = "1周后"; + this.周后ToolStripMenuItem.Click += new System.EventHandler(this.天后ToolStripMenuItem_Click); + // + // 天后ToolStripMenuItem3 + // + this.天后ToolStripMenuItem3.Name = "天后ToolStripMenuItem3"; + this.天后ToolStripMenuItem3.Size = new System.Drawing.Size(136, 22); + this.天后ToolStripMenuItem3.Tag = "15"; + this.天后ToolStripMenuItem3.Text = "15天后"; + this.天后ToolStripMenuItem3.Click += new System.EventHandler(this.天后ToolStripMenuItem_Click); + // + // 个月后ToolStripMenuItem + // + this.个月后ToolStripMenuItem.Name = "个月后ToolStripMenuItem"; + this.个月后ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.个月后ToolStripMenuItem.Tag = "1"; + this.个月后ToolStripMenuItem.Text = "1个月后"; + this.个月后ToolStripMenuItem.Click += new System.EventHandler(this.个月后ToolStripMenuItem_Click); + // + // 个月后ToolStripMenuItem1 + // + this.个月后ToolStripMenuItem1.Name = "个月后ToolStripMenuItem1"; + this.个月后ToolStripMenuItem1.Size = new System.Drawing.Size(136, 22); + this.个月后ToolStripMenuItem1.Tag = "2"; + this.个月后ToolStripMenuItem1.Text = "2个月后"; + this.个月后ToolStripMenuItem1.Click += new System.EventHandler(this.个月后ToolStripMenuItem_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(133, 6); + // + // 自定义时间ToolStripMenuItem + // + this.自定义时间ToolStripMenuItem.Name = "自定义时间ToolStripMenuItem"; + this.自定义时间ToolStripMenuItem.Size = new System.Drawing.Size(136, 22); + this.自定义时间ToolStripMenuItem.Text = "自定义时间"; + this.自定义时间ToolStripMenuItem.Click += new System.EventHandler(this.自定义时间ToolStripMenuItem_Click); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(433, 9); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(29, 12); + this.label8.TabIndex = 14; + this.label8.Text = "分类"; + // + // PnlKeys + // + this.PnlKeys.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.PnlKeys.Controls.Add(this.TxtKeys); + this.PnlKeys.Controls.Add(this.pictureBox1); + this.PnlKeys.Location = new System.Drawing.Point(434, 24); + this.PnlKeys.Name = "PnlKeys"; + this.PnlKeys.RoundeStyle = ryControls.RoundStyle.None; + this.PnlKeys.Size = new System.Drawing.Size(153, 25); + this.PnlKeys.TabIndex = 15; + this.PnlKeys.TileBackColor = System.Drawing.Color.White; + // + // TxtKeys + // + this.TxtKeys.BackColor = System.Drawing.Color.White; + this.TxtKeys.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtKeys.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.TxtKeys.Location = new System.Drawing.Point(27, 5); + this.TxtKeys.Name = "TxtKeys"; + this.TxtKeys.ReadOnly = true; + this.TxtKeys.Size = new System.Drawing.Size(119, 16); + this.TxtKeys.TabIndex = 1; + // + // pictureBox1 + // + this.pictureBox1.BackColor = System.Drawing.Color.White; + this.pictureBox1.Location = new System.Drawing.Point(5, 4); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(18, 18); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // panelEx2 + // + this.panelEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx2.Controls.Add(this.ctlTreeView1); + this.panelEx2.Location = new System.Drawing.Point(340, 50); + this.panelEx2.Name = "panelEx2"; + this.panelEx2.Padding = new System.Windows.Forms.Padding(2); + this.panelEx2.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx2.Size = new System.Drawing.Size(246, 297); + this.panelEx2.TabIndex = 16; + this.panelEx2.TileBackColor = System.Drawing.Color.White; + this.panelEx2.Visible = false; + // + // ctlTreeView1 + // + this.ctlTreeView1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.ctlTreeView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.ctlTreeView1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ctlTreeView1.HideSelection = false; + this.ctlTreeView1.HotTracking = true; + this.ctlTreeView1.ItemHeight = 18; + this.ctlTreeView1.Location = new System.Drawing.Point(2, 2); + this.ctlTreeView1.Name = "ctlTreeView1"; + treeNode1.Name = "节点0"; + treeNode1.Text = "所有提醒"; + this.ctlTreeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { + treeNode1}); + this.ctlTreeView1.Size = new System.Drawing.Size(242, 293); + this.ctlTreeView1.T_FirstShowText = "所有提醒"; + this.ctlTreeView1.T_ShowMenu = true; + this.ctlTreeView1.TabIndex = 46; + this.ctlTreeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.CtlTreeView1_AfterSelect); + // + // FrmTimeAdd + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(597, 495); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.PnlKeys); + this.Controls.Add(this.label8); + this.Controls.Add(this.ChkNoShowTip); + this.Controls.Add(this.ChkEnabled); + this.Controls.Add(this.ChkAllowShow); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtName); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.panelEx2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "FrmTimeAdd"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "新增"; + this.tabControl1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.tabPage1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.PnlFile.ResumeLayout(false); + this.PnlFile.PerformLayout(); + this.PnlStartTime.ResumeLayout(false); + this.PnlStartTime.PerformLayout(); + this.PnlTime.ResumeLayout(false); + this.PnlTime.PerformLayout(); + this.PnlWeek.ResumeLayout(false); + this.PnlWeek.PerformLayout(); + this.PnlMonth.ResumeLayout(false); + this.PnlMonth.PerformLayout(); + this.PnlYear.ResumeLayout(false); + this.PnlYear.PerformLayout(); + this.PnlInterval.ResumeLayout(false); + this.PnlInterval.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NumInterval)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.tabPage3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.contextMenuStrip1.ResumeLayout(false); + this.contextMenuStrip2.ResumeLayout(false); + this.PnlKeys.ResumeLayout(false); + this.PnlKeys.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.panelEx2.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.ButtonEx btnCancel; + private ryControls.ButtonEx btnOK; + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 txtName; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Label LblInterval; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.RadioButton RbTheTime; + private System.Windows.Forms.RadioButton RbDay; + private System.Windows.Forms.RadioButton RbHour; + private System.Windows.Forms.RadioButton RbMinute; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Panel PnlInterval; + private System.Windows.Forms.Panel PnlTime; + private System.Windows.Forms.Panel panel2; + private ryControls.TextBoxEx2 TxtContent; + private System.Windows.Forms.Panel PnlStartTime; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Panel panel3; + private ryControls.RyComboBox CbbAction; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Panel PnlFile; + private ryControls.RyComboBox CbbPram; + private System.Windows.Forms.Label LblPram; + private ryControls.RyComboBox CbbFile; + private System.Windows.Forms.Label LblFile; + private ryControls.ButtonEx BtnFile; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.Panel PnlWeek; + private System.Windows.Forms.RadioButton RbWeek; + private System.Windows.Forms.CheckBox ChkW7; + private System.Windows.Forms.CheckBox ChkW6; + private System.Windows.Forms.CheckBox ChkW5; + private System.Windows.Forms.CheckBox ChkW4; + private System.Windows.Forms.CheckBox ChkW3; + private System.Windows.Forms.CheckBox ChkW2; + private System.Windows.Forms.CheckBox ChkW1; + private System.Windows.Forms.Panel PnlMonth; + private System.Windows.Forms.RadioButton RbMonth; + private ryControls.RyComboBox CbbDay; + private System.Windows.Forms.CheckBox ChkRevDay; + private System.Windows.Forms.Label LblTimeStr; + private System.Windows.Forms.TabPage tabPage3; + private ryControls.RyComboBox CbbDisturbed; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 添加时间段ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除时间段ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 清空时间段ToolStripMenuItem; + private ryControls.ButtonEx BtnSelectSound; + private System.Windows.Forms.CheckBox ChkSound; + private System.Windows.Forms.OpenFileDialog openFileDialog2; + private ryControls.ButtonEx BtnSelectPic; + private ryControls.RyComboBox CbbShowPic; + private System.Windows.Forms.CheckBox ChkShowPic; + private System.Windows.Forms.ToolTip toolTip1; + private ryControls.DateTimePickerEX Dt_StartDate; + private ryControls.DateTimePickerEX DtDay; + private System.Windows.Forms.CheckBox ChkAllowShow; + private ryControls.DateTimePickerEX Dt_StartTime; + private ryControls.DateTimePickerEX DtTime; + private ryControls.NumericUpDownEx NumInterval; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.CheckBox ChkEarlierTime; + private ryControls.RyComboBox CbbEarlierTime; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.RadioButton RbYear; + private System.Windows.Forms.Panel PnlYear; + private System.Windows.Forms.CheckBox ChkRevDay_y; + private ryControls.RyComboBox CbbMonth_y; + private ryControls.RyComboBox CbbDay_y; + private ryControls.RyComboBox CbbLunar; + private System.Windows.Forms.CheckBox ChkEnabled; + private ryControls.RyComboBox CbbSound; + private ryControls.ButtonEx BtnPlay; + private System.Windows.Forms.CheckBox ChkNoShowTip; + private ryControls.ButtonEx buttonEx1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip2; + private System.Windows.Forms.ToolStripMenuItem 分钟后ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 分钟后ToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 分钟后ToolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem 分钟后ToolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem 分钟后ToolStripMenuItem4; + private System.Windows.Forms.ToolStripMenuItem 小时后ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 小时后ToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 天后ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 天后ToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 天后ToolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem 周后ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 天后ToolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem 个月后ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 个月后ToolStripMenuItem1; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private ryControls.PanelEx PnlKeys; + private System.Windows.Forms.TextBox TxtKeys; + private System.Windows.Forms.PictureBox pictureBox1; + private ryControls.PanelEx panelEx2; + public ryControls.CtlTreeView ctlTreeView1; + private System.Windows.Forms.RadioButton RbWinStart; + private XPTable.Models.Table table1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn textColumn1; + private XPTable.Models.TextColumn textColumn2; + private XPTable.Models.TableModel tableModel1; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem 自定义时间ToolStripMenuItem; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.cs new file mode 100644 index 0000000..c285a81 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.cs @@ -0,0 +1,1105 @@ +using NAudio.Wave; +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmTimeAdd : Form + { + public string tableName = "Dingshi"; + public ModalForm mr = null; + public FrmTimeAdd(ImageList imglist) + { + InitializeComponent(); + RbTheTime.Checked = true; + DtDay.Value = DateTime.Now.AddMinutes(10); + DtTime.Value = DateTime.Now.AddMinutes(10); + Dt_StartDate.Value = DateTime.Now; + Dt_StartTime.Value = DateTime.Now; + CbbShowPic.Enabled = false; + BtnSelectPic.Enabled = false; + CbbAction.Items.AddRange(new ActionInfo[] { + new ActionInfo { Title = "不执行任何动作",Id="NoAction" }, + new ActionInfo { Title = "重启电脑", Id = "Reboot" }, + new ActionInfo { Title = "关闭电脑",Id = "Shutdown" }, + new ActionInfo { Title = "注销电脑", Id = "Logoff" }, + new ActionInfo { Title = "打开网页",Id="OpenUrl", ShowFileUI=true, File_Title="打开网址:" }, + new ActionInfo { Title = "打开文件",Id="OpenFile",File_Filter="所有文件|*.*", ShowFileUI=true,ShowPramUI=true }, + new ActionInfo { Title = "电脑静音",Id="Mute_On" }, + new ActionInfo { Title = "取消静音",Id="Mute_Off" }, + new ActionInfo { Title = "语音朗读",Id="Speaker", ShowFileUI=true, File_Title="朗读文本:" }, + new ActionInfo { Title = "时间同步",Id="TimeSync" }, + }); + for (int i = 0; i < Custom.ActionList.Count; i++) + { + CbbAction.Items.Add(Custom.ActionList[i]); + } + CbbAction.SelectedIndex = 0; + #region 是否提前提醒 + CbbEarlierTime.Items.Clear(); + CbbEarlierTime.Items.AddRange(new TimeInfo[] { + new TimeInfo { Title = "1分钟",Minute=1 }, + new TimeInfo { Title = "2分钟",Minute=2 }, + new TimeInfo { Title = "3分钟",Minute=3 }, + new TimeInfo { Title = "5分钟",Minute=5 }, + new TimeInfo { Title = "10分钟",Minute=10}, + new TimeInfo { Title = "15分钟",Minute=15 }, + new TimeInfo { Title = "30分钟",Minute=30 }, + new TimeInfo { Title = "1小时",Minute=60 }, + new TimeInfo { Title = "2小时",Minute=120 }, + new TimeInfo { Title = "3小时",Minute=180 }, + new TimeInfo { Title = "1天",Minute=60*24 }, + new TimeInfo { Title = "2天",Minute=60*24*2 }, + new TimeInfo { Title = "3天",Minute=60*24*3 }, + new TimeInfo { Title = "5天",Minute=60*24*5 }, + new TimeInfo { Title = "7天",Minute=60*24*7 }, + new TimeInfo { Title = "15天",Minute=60*24*15 }, + new TimeInfo { Title = "30天",Minute=60*24*30 }, + }); + CbbEarlierTime.Enabled = false; + CbbEarlierTime.SelectedIndex = 0; + CbbEarlierTime.ForeColor = CbbEarlierTime.Enabled ? Color.Black : Color.Gray; + #endregion + LblTimeStr.Text = "软件将在以下时刻进行提醒:" + GetRunTimeStr(out string week2, out int modtype); + CbbDisturbed.SelectedIndex = 0; + CbbLunar.SelectedIndex = 0; + proc_AfterSelect = true; + ctlTreeView1.ImageList = imglist; + pictureBox1.Image = Itrycn_Db.GetGroupImg("1"); + TxtKeys.Text = "所有提醒"; + ctlTreeView1.LoadFromXMLText(Itrycn_Db.GetSetting("TipGroup", "")); + proc_AfterSelect = false; + TxtKeys.MouseDown += TxtKeys_MouseDown; + pictureBox1.MouseDown += TxtKeys_MouseDown; + PnlKeys.MouseDown += TxtKeys_MouseDown; + this.MouseDown += KeysLeave_MouseDown; + txtName.MouseDown += KeysLeave_MouseDown; + TxtContent.MouseDown += KeysLeave_MouseDown; + tabControl1.MouseDown += KeysLeave_MouseDown; + if (System.IO.Directory.Exists(Itrycn_Info.SysDbFolder + @"\animation\sound\")) + { + string[] files = System.IO.Directory.GetFiles(Itrycn_Info.SysDbFolder + @"\animation\sound\"); + for (int i = 0; i < files.Length; i++) + { + CbbSound.Items.Add(System.IO.Path.GetFileName(files[i])); + } + if(CbbSound.Items.Contains("默认提醒.wav")) + { + CbbSound.Text = "默认提醒.wav"; + } + } + } + + private void KeysLeave_MouseDown(object sender, MouseEventArgs e) + { + panelEx2.Visible = false; + } + + private void TxtKeys_MouseDown(object sender, MouseEventArgs e) + { + panelEx2.Top = PnlKeys.Top + PnlKeys.Height; + panelEx2.BringToFront(); + panelEx2.Visible = true; + } + + public int isAdd = 1; + public int selectId = -1; + public void SetGroup(string groupkey) + { + proc_AfterSelect = true; + ctlTreeView1.SelectedTreeByKey(groupkey); + if (ctlTreeView1.SelectedNode != null) + { + if (ctlTreeView1.SelectedNode.ImageIndex != -1) + { + pictureBox1.Image = Itrycn_Db.GetGroupImg(ctlTreeView1.ImageList.Images.Keys[ctlTreeView1.SelectedNode.ImageIndex]); + TxtKeys.Text = ctlTreeView1.SelectedNode.Text; + } + } + proc_AfterSelect = false; + } + #region 需要修改 + public void GetInfo(int id) + { + selectId = id; + DataProvider mydb = new DataProvider(); + IDbInterface db = TimeClock.Itrycn_Db.CreateDataProvider(TimeClock.Itrycn_Db.dataType); + if (db.ConnDb(TimeClock.Itrycn_Db.SQLConnStr) == 1) + { + DataSet ds = db.ReadData(tableName, id.ToString()); + if (mydb.HaveData(ds)) + { + DataRow reader = ds.Tables[0].Rows[0]; + proc_AfterSelect = true; + ctlTreeView1.SelectedTreeByKey(reader["GroupKey"].ToString()); + if(ctlTreeView1.SelectedNode!=null) + { + if (ctlTreeView1.SelectedNode.ImageIndex != -1) + { + pictureBox1.Image =Itrycn_Db.GetGroupImg(ctlTreeView1.ImageList.Images.Keys[ctlTreeView1.SelectedNode.ImageIndex]); + TxtKeys.Text = ctlTreeView1.SelectedNode.Text; + } + } + proc_AfterSelect = false; + #region 读取信息 + switch (reader["modtype"].ToInt()) + { + case TipType.tip_minute: + RbMinute.Checked = true; + break; + case TipType.tip_hour: + RbHour.Checked = true; + break; + case TipType.tip_day: + RbDay.Checked = true; + break; + case TipType.tip_thetime: + RbTheTime.Checked = true; + break; + case TipType.tip_week: + RbWeek.Checked = true; + break; + case TipType.tip_month: + RbMonth.Checked = true; + break; + case TipType.tip_year: + RbYear.Checked = true; + break; + case TipType.tip_winstart: + RbWinStart.Checked = true; + break; + } + + txtName.Text = reader["MsgTitle"].ToString(); + TxtContent.Text = reader["MsgText"].ToString(); + NumInterval.Value = reader["Interval"].ToDecimal(); + DtDay.Value = reader["RunTime"].ToDateTime(); + DtTime.Value = reader["RunTime"].ToDateTime(); + Dt_StartDate.Value = reader["StartTime"].ToDateTime(); + Dt_StartTime.Value = reader["StartTime"].ToDateTime(); + ChkEnabled.Checked = reader["Enabled"].ToBool(); + ChkAllowShow.Checked = !reader["NoShow"].ToBool(); + #region 例外免打扰 + ryCommon.Storage myExcept_XML = new Storage(reader["ExceptXML"].ToString()); + myExcept_XML.SelectNodeBySet(); + int ExceptionType = myExcept_XML.GetAttrValue("ExceptionType",0); + int iCount = myExcept_XML.GetAttrValue("ExceptionCount",0); + if (ExceptionType == 1) { CbbDisturbed.SelectedIndex = 1; } else { CbbDisturbed.SelectedIndex = 0; } + for (int m = 0; m < iCount; m++) + { + string date_str = ""; + DateInfo dt_info = new DateInfo() { iType = myExcept_XML.GetAttrValue("ExType" + (m + 1).ToString(), 1), + start = myExcept_XML.GetAttrValue("ExStart" + (m + 1).ToString(),DateTime.Now), + end = myExcept_XML.GetAttrValue("ExEnd" + (m + 1).ToString(), DateTime.Now), + start_week = myExcept_XML.GetAttrValue("ExStartWeek" + (m + 1).ToString(),1), + end_week = myExcept_XML.GetAttrValue("ExEndWeek" + (m + 1).ToString(), 1), + des = myExcept_XML.GetAttrValue("Des" + (m + 1).ToString(), "") + }; + if (dt_info.iType==1) + { + date_str = dt_info.start.ToString("yyyy-MM-dd HH:mm") + " 到 " + dt_info.end.ToString("yyyy-MM-dd HH:mm"); + } + else if (dt_info.iType ==2)//星期 + { + if (dt_info.start_week == dt_info.end_week) + { date_str = "每周" + RyDate.GetWeekName(dt_info.start_week); } + else + { + date_str = "周" + RyDate.GetWeekName(dt_info.start_week) + " 到 周" + RyDate.GetWeekName(dt_info.end_week); + } + } + else + { + date_str = "每天 " + dt_info.start.ToString("HH:mm") + " 到 " + dt_info.end.ToString("HH:mm"); + } + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = dt_info + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(date_str));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(myExcept_XML.GetAttrValue("Des" + (m + 1).ToString(), ""))); + table1.TableModel.Rows.Add(itemList); + } + tabPage3.Text = "免打扰(" + table1.TableModel.Rows.Count + ")"; + #endregion + #endregion + ryCommon.Storage tStor = new Storage(reader["SetXML"].ToString()); + tStor.SelectNodeBySet(); + ChkSound.Checked=tStor.GetAttrValue("sound_on", true); + string sound = tStor.GetAttrValue("sound", @"tip.wav"); + if (CbbSound.Items.Contains(sound)) + { + CbbSound.Text = sound; + } + else + { + CbbSound.Items.Add(sound); + CbbSound.Text = sound; + } + ChkShowPic.Checked = tStor.GetAttrValue("showpic_on", false); + CbbShowPic.Text = tStor.GetAttrValue("showpic", ""); + ChkNoShowTip.Checked = tStor.GetAttrValue("NoShowTip", false); + string ActionId = tStor.GetAttrValue("ActionId"); + string File = tStor.GetAttrValue("File"); + string Pram = tStor.GetAttrValue("Pram"); + if (RbWeek.Checked) + { + string week = tStor.GetAttrValue("week"); + if (week.Length == 7) + { + ChkW1.Checked = week.IndexOf("1", 0) == 0; + ChkW2.Checked = week.IndexOf("1", 1) == 1; + ChkW3.Checked = week.IndexOf("1", 2) == 2; + ChkW4.Checked = week.IndexOf("1", 3) == 3; + ChkW5.Checked = week.IndexOf("1", 4) == 4; + ChkW6.Checked = week.IndexOf("1", 5) == 5; + ChkW7.Checked = week.IndexOf("1", 6) == 6; + } + } + if (RbMonth.Checked) + { + ChkRevDay.Checked = tStor.GetAttrValue("revday", false); + int day = tStor.GetAttrValue("day", -1); + if (day.IsInRange(0, 29)) + { + CbbDay.SelectedIndex = day; + } + } + if (RbYear.Checked) + { + ChkRevDay_y.Checked = tStor.GetAttrValue("revday", false); + int IsLunar = tStor.GetAttrValue("IsLunar", 0); + if (IsLunar.IsInRange(0, 1)) + { + CbbLunar.SelectedIndex = IsLunar; + } + int day = tStor.GetAttrValue("day", -1); + if (day.IsInRange(0, CbbDay_y.Items.Count-1)) + { + CbbDay_y.SelectedIndex = day; + } + int Month = tStor.GetAttrValue("Month", 0); + if (Month.IsInRange(0, CbbMonth_y.Items.Count - 1)) + { + CbbMonth_y.SelectedIndex = Month; + } + } + CbbFile.Text = File; + CbbPram.Text = Pram; + for(int i=0;i0) + { + switch (MessageBox.Show("具体时间提醒,免打扰功能将无效,确定要删除免打扰吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + case DialogResult.No: + return; + case DialogResult.Yes: + table1.TableModel.Rows.Clear(); + tabPage3.Text = "免打扰(" + table1.TableModel.Rows.Count + ")"; + break; + } + } + } + int interval = NumInterval.Value.ToInt(); + string runtime_str = GetRunTimeStr(out string week, out int modtype); + if (runtime_str == "") { return; } + RyQuickSQL mySQL = new RyQuickSQL(tableName); + mySQL.AddField("MsgTitle", txtName.Text); + mySQL.AddField("MsgText", TxtContent.Text); + mySQL.AddField("modtype", modtype); + mySQL.AddField("Interval", interval); + mySQL.AddField("RunTime",DtDay.Value.Date.AddHours(DtTime.Value.Hour).AddMinutes(DtTime.Value.Minute)); + mySQL.AddField("StartTime",Dt_StartDate.Value.Date.AddHours(Dt_StartTime.Value.Hour).AddMinutes(Dt_StartTime.Value.Minute)); + mySQL.AddField("RunTimeStr", runtime_str); + mySQL.AddField("Clac_TipTime",0); + mySQL.AddField("NextTipAddMinute", 0); + if(ChkEarlierTime.Checked) + { mySQL.AddField("EarlierMinute", ((TimeInfo)CbbEarlierTime.SelectedItem).Minute); } + else + { mySQL.AddField("EarlierMinute", 0); } + mySQL.AddField("TipClose", 0); + mySQL.AddField("NextTipTime", DtDay.Value.Date.AddHours(DtTime.Value.Hour).AddMinutes(DtTime.Value.Minute)); + #region 例外免打扰 + if (table1.TableModel.Rows.Count == 0) { mySQL.AddField("ExceptXML", ""); } + else + { + ryCommon.Storage myExcept_XML = new Storage(); + myExcept_XML.SelectNodeBySet(); + myExcept_XML.SetAttrValue("ExceptionType", CbbDisturbed.SelectedIndex); + myExcept_XML.SetAttrValue("ExceptionCount", table1.TableModel.Rows.Count); + for (int m = 0; m < table1.TableModel.Rows.Count; m++) + { + DateInfo info = (DateInfo)table1.TableModel.Rows[m].Tag; + myExcept_XML.SetAttrValue("ExType" + (m + 1).ToString(), info.iType); + myExcept_XML.SetAttrValue("ExStart" + (m + 1).ToString(), info.start); + myExcept_XML.SetAttrValue("ExEnd" + (m + 1).ToString(), info.end); + myExcept_XML.SetAttrValue("ExStartWeek" + (m + 1).ToString(), info.start_week); + myExcept_XML.SetAttrValue("ExEndWeek" + (m + 1).ToString(), info.end_week); + myExcept_XML.SetAttrValue("Des" + (m + 1).ToString(), info.des); + } + mySQL.AddField("ExceptXML", myExcept_XML.XMLText); + } + #endregion + #region 动作XML + ActionInfo item = (ActionInfo)CbbAction.SelectedItem; + ryCommon.Storage tStor = new Storage(); + tStor.SelectNodeBySet(); + tStor.SetAttrValue("ActionId", item.Id); + tStor.SetAttrValue("File", CbbFile.Text); + tStor.SetAttrValue("Pram", CbbPram.Text); + tStor.SetAttrValue("week", week); + tStor.SetAttrValue("sound_on", ChkSound.Checked); + tStor.SetAttrValue("sound",CbbSound.Text); + tStor.SetAttrValue("showpic_on", ChkShowPic.Checked); + tStor.SetAttrValue("showpic", CbbShowPic.Text); + tStor.SetAttrValue("NoShowTip", ChkNoShowTip.Checked); + if (RbYear.Checked) + { + tStor.SetAttrValue("IsLunar", CbbLunar.SelectedIndex); + tStor.SetAttrValue("Month", CbbMonth_y.SelectedIndex); + tStor.SetAttrValue("day", CbbDay_y.SelectedIndex); + tStor.SetAttrValue("revday", ChkRevDay_y.Checked); + } + else + { + tStor.SetAttrValue("revday", ChkRevDay.Checked); + tStor.SetAttrValue("day", CbbDay.SelectedIndex); + } + #endregion + mySQL.AddField("SetXML", tStor.XMLText); + mySQL.AddField("Enabled",ChkEnabled.Checked); + mySQL.AddField("NoShow", !ChkAllowShow.Checked); + string keys = ctlTreeView1.FormatKeysInfo(ctlTreeView1.GetNodeItem(ctlTreeView1.SelectedNode).Keys); + if (keys == ";;") { keys = ""; } + mySQL.AddField("GroupKey", keys); + DataProvider mydb = new DataProvider(); + IDbInterface db = TimeClock.Itrycn_Db.CreateDataProvider(TimeClock.Itrycn_Db.dataType); + if (db.ConnDb(TimeClock.Itrycn_Db.SQLConnStr) == 1) + { + if (isAdd >= 1) + { + db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL); + } + else + { + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + selectId, mySQL); + } + #region 更新下次提醒时间 + DataSet ds = db.ReadData("select * from Dingshi where Clac_TipTime=0 and Enabled=1", mySQL); + if (mydb.HaveData(ds)) + { + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow reader = ds.Tables[0].Rows[i]; + RyQuickSQL mySQL2 = new RyQuickSQL("Dingshi"); + DateTime dt = TimeClock.Itrycn_Db.GetNextTipTime2(reader, DateTime.Now); + mySQL2.AddField("NextTipTime", dt); + mySQL2.AddField("EarlierTipTime", dt.AddMinutes(-reader["EarlierMinute"].ToInt())); + mySQL2.AddField("Clac_Time", DateTime.Now); + mySQL2.AddField("Clac_TipTime", 1); + db.ExecuteNonQuery(mySQL2.GetUpdateSQL() + " where id=" + reader["id"].ToString(), mySQL2); + } + } + #endregion + } + if (mr != null) mr.Form_Result = DialogResult.OK; + } + #endregion + + private void BtnCancel_Click(object sender, EventArgs e) + { + if (mr != null) mr.Form_Result = DialogResult.Cancel; + } + + private void RbTheTime_CheckedChanged(object sender, EventArgs e) + { + RadioButton rb = (RadioButton)sender; + if (rb.Checked) + { + PnlInterval.Visible = false; + PnlMonth.Visible = false; + PnlTime.Visible = true; + PnlWeek.Visible = false; + PnlStartTime.Visible = false; + PnlYear.Visible = false; + DtTime.Value = Dt_StartTime.Value; + if (DtDay.Value.Date < DateTime.Now.Date) { DtDay.Value = DateTime.Now; } + } + } + + private void RbDay_CheckedChanged(object sender, EventArgs e) + { + RadioButton rb = (RadioButton)sender; + if (rb.Checked) + { + PnlInterval.Visible = true; + PnlYear.Visible = false; + PnlMonth.Visible = false; + PnlTime.Visible = false; + PnlWeek.Visible = false; + label3.Text = "每过"; + LblInterval.Text = "天"; + PnlStartTime.Visible = true; + Dt_StartTime.Value = DtTime.Value; + } + } + + private void RbHour_CheckedChanged(object sender, EventArgs e) + { + RadioButton rb = (RadioButton)sender; + if (rb.Checked) + { + PnlInterval.Visible = true; + PnlYear.Visible = false; + PnlMonth.Visible = false; + PnlTime.Visible = false; + PnlWeek.Visible = false; + label3.Text = "每过"; + LblInterval.Text = "小时"; + PnlStartTime.Visible = true; + Dt_StartTime.Value = DtTime.Value; + } + } + + private void RbMinute_CheckedChanged(object sender, EventArgs e) + { + RadioButton rb = (RadioButton)sender; + if (rb.Checked) + { + PnlInterval.Visible = true; + PnlYear.Visible = false; + PnlMonth.Visible = false; + PnlTime.Visible = false; + PnlWeek.Visible = false; + label3.Text = "每过"; + LblInterval.Text = "分钟"; + PnlStartTime.Visible = true; + Dt_StartTime.Value = DtTime.Value; + } + } + private void CbbAction_SelectedIndexChanged(object sender, EventArgs e) + { + ActionInfo item = (ActionInfo)CbbAction.SelectedItem; + toolTip1.SetToolTip(CbbFile,item.File_ToolTip); + toolTip1.SetToolTip(BtnFile, item.File_ToolTip); + if (item.ShowFileUI || item.ShowPramUI) + { + PnlFile.Visible = true; + LblFile.Text = item.File_Title; + CbbPram.Visible = item.ShowPramUI; + LblPram.Visible = item.ShowPramUI; + if (item.Id == "OpenUrl") { BtnFile.Visible = false; } else { BtnFile.Visible = true; } + if (item.Id == "Speaker") { BtnFile.Visible = true; BtnFile.Text = "朗读"; } else { BtnFile.Text = "选择"; } + } + else + { + PnlFile.Visible = false; + } + } + + private void BtnFile_Click(object sender, EventArgs e) + { + ActionInfo item = (ActionInfo)CbbAction.SelectedItem; + if(item.Id=="Speaker") + { + try + { + var spVoices = new COM.SpVoice() + { + Rate = Itrycn_Info.SpeakerRate, + Volume = Itrycn_Info.SpeakerVolume + }; + if (Itrycn_Info.Speaker != "") + { + spVoices.SetVoices(Itrycn_Info.Speaker); + } + spVoices.Speak(CbbFile.Text, COM.SpVoice.Flags.SVSFlagsAsync); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + return; + } + if (item.File_Filter != "") + { + openFileDialog1.Filter = item.File_Filter; + if (openFileDialog1.ShowDialog() == DialogResult.OK) + { + CbbFile.Text =RyFiles.GetRelativePath(openFileDialog1.FileName); + } + } + else + { + item.Cancel = false; + item.Selected(); + if (!item.Cancel) + { + CbbFile.Text = item.File; + CbbPram.Text = item.Pram; + } + } + } + + private void RbWeek_CheckedChanged(object sender, EventArgs e) + { + PnlInterval.Visible = true; + PnlMonth.Visible = false; + PnlYear.Visible = false; + PnlTime.Visible = false; + PnlWeek.Visible = true; + label3.Text = "每过"; + LblInterval.Text = "周"; + PnlStartTime.Visible = true; + Dt_StartTime.Value = DtTime.Value; + } + + private void RbMonth_CheckedChanged(object sender, EventArgs e) + { + PnlInterval.Visible = true; + PnlYear.Visible = false; + PnlMonth.Visible = true; + PnlTime.Visible = false; + PnlWeek.Visible = false; + label3.Text = "每过"; + LblInterval.Text = "月"; + PnlStartTime.Visible = true; + Dt_StartTime.Value = DtTime.Value; + if (CbbDay.Items.Count==0) + { + for(int i=0;i<28;i++) + { + CbbDay.Items.Add((i+1).ToString()+"日"); + } + CbbDay.SelectedIndex = 0; + } + } + + private void TabControl1_SelectedIndexChanged(object sender, EventArgs e) + { + LblTimeStr.Text ="软件将在以下时刻进行提醒:"+ GetRunTimeStr(out string week, out int modtype); + } + + private void 添加时间段ToolStripMenuItem_Click(object sender, EventArgs e) + { + FrmDisturbedAdd frm = new FrmDisturbedAdd() { Icon = this.Icon }; + frm.mr = new ModalForm(this, frm); + frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => { + if (dg == DialogResult.OK) + { + string date_str = ""; + DateInfo dt_info = new DateInfo() + { + iType = frm.CbbType.SelectedIndex, + start = getdate_minute(frm.Dt_start.Value), + end = getdate_minute(frm.Dt_End.Value), + start_week = frm.CbbStartWeek.SelectedIndex + 1, + end_week = frm.CbbEndWeek.SelectedIndex + 1, + des = frm.TxtDes.Text + }; + if (frm.CbbType.SelectedIndex == 1) + { + date_str = frm.Dt_start.Value.ToString("yyyy-MM-dd HH:mm") + " 到 " + frm.Dt_End.Value.ToString("yyyy-MM-dd HH:mm"); + } + else if (frm.CbbType.SelectedIndex == 2) + { + if (frm.CbbStartWeek.Text == frm.CbbEndWeek.Text) + { date_str = "每"+frm.CbbStartWeek.Text; } + else + { + date_str = frm.CbbStartWeek.Text + " 到 " + frm.CbbEndWeek.Text; + } + } + else + { + date_str = "每天 " + frm.Dt_start.Value.ToString("HH:mm") + " 到 " + frm.Dt_End.Value.ToString("HH:mm"); + } + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = dt_info + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(date_str));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(frm.TxtDes.Text)); + table1.TableModel.Rows.Add(itemList); + tabPage3.Text = "免打扰(" + table1.TableModel.Rows.Count + ")"; + DateTime getdate_minute(DateTime dt) + { + return dt.Date.AddHours(dt.Hour).AddMinutes(dt.Minute); + } + } + }); + frm.mr.ShowModal(); + } + + private void 删除时间段ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (table1.SelectedItems.Length == 0) { return; } + table1.TableModel.Rows.RemoveAt(table1.SelectedItems[0].Index); + tabPage3.Text = "免打扰(" + table1.TableModel.Rows.Count + ")"; + } + + private void 清空时间段ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (MessageBox.Show("确定要删除该项吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) + { + return; + } + table1.TableModel.Rows.Clear(); + tabPage3.Text = "免打扰(" + table1.TableModel.Rows.Count + ")"; + } + + private void BtnSelectSound_Click(object sender, EventArgs e) + { + openFileDialog2.Filter = "音频文件(*.mp3;*.wav)|*.mp3;*.wav"; + openFileDialog2.InitialDirectory =System.IO.Path.GetDirectoryName(RyFiles.GetRealPath(CbbSound.Text)); + if (openFileDialog2.ShowDialog() == DialogResult.OK) + { + CbbSound.Text =RyFiles.GetRelativePath(openFileDialog2.FileName); + } + } + + private void BtnSelectPic_Click(object sender, EventArgs e) + { + openFileDialog2.Filter = "图片文件(*.gif;*.jpg;*.png;*.bmp)|*.gif;*.jpg;*.png;*.bmp"; + openFileDialog2.FileName = System.IO.Path.GetDirectoryName(RyFiles.GetRealPath(CbbShowPic.Text)); + if (openFileDialog2.ShowDialog() == DialogResult.OK) + { + CbbShowPic.Text = RyFiles.GetRelativePath(openFileDialog2.FileName); + } + } + + private void ChkSound_CheckedChanged(object sender, EventArgs e) + { + CbbSound.Enabled = ChkSound.Checked; + BtnSelectSound.Enabled = ChkSound.Checked; + } + + private void ChkShowPic_CheckedChanged(object sender, EventArgs e) + { + CbbShowPic.Enabled = ChkShowPic.Checked; + BtnSelectPic.Enabled = ChkShowPic.Checked; + } + + private void ChkEarlierTime_CheckedChanged(object sender, EventArgs e) + { + CbbEarlierTime.Enabled = ChkEarlierTime.Checked; + CbbEarlierTime.ForeColor = CbbEarlierTime.Enabled?Color.Black:Color.Gray; + } + + private void RbYear_CheckedChanged(object sender, EventArgs e) + { + PnlInterval.Visible = true; + PnlYear.Visible = true; + PnlMonth.Visible = false; + PnlTime.Visible = false; + PnlWeek.Visible = false; + label3.Text = "每过"; + LblInterval.Text = "年"; + PnlStartTime.Visible = true; + Dt_StartTime.Value = DtTime.Value; + if (CbbDay.Items.Count == 0) + { + for (int i = 0; i < 28; i++) + { + CbbDay.Items.Add("第" + (i + 1).ToString() + "天"); + } + CbbDay.SelectedIndex = 0; + } + } + + private void CheckBox1_CheckedChanged(object sender, EventArgs e) + { + + } + + private void CbbLunar_SelectedIndexChanged(object sender, EventArgs e) + { + if(CbbLunar.SelectedIndex==0) //阳历 + { + CbbMonth_y.Items.Clear(); + for (int i = 0; i < 12; i++) + { + CbbMonth_y.Items.Add((i + 1).ToString() + "月"); + } + CbbMonth_y.SelectedIndex = 0; + } + else + { + CbbMonth_y.Items.Clear(); + string stext = "正二三四五六七八九十"; + for (int i = 0; i < 10; i++) + { + CbbMonth_y.Items.Add(stext[i].ToString() + "月"); + } + CbbMonth_y.Items.Add("十一月"); CbbMonth_y.Items.Add("十二月"); + CbbMonth_y.SelectedIndex = 0; + } + if (ChkRevDay_y.Checked) + { + CbbDay_y.Items.Clear(); + for (int i = 0; i < 31; i++) + { + if (i == 30 && CbbLunar.SelectedIndex == 1) { continue; } + CbbDay_y.Items.Add("第" + (i + 1).ToString() + "天"); + } + CbbDay_y.SelectedIndex = 0; + } + else + { + CbbDay_y.Items.Clear(); + if (CbbLunar.SelectedIndex == 0) + { + for (int i = 0; i < 31; i++) + { + CbbDay_y.Items.Add((i + 1).ToString()+"日"); + } + } + else + { + for (int i = 0; i < 30; i++) + { + CbbDay_y.Items.Add(ChinaDate.GetDay(i + 1)); + } + } + CbbDay_y.SelectedIndex = 0; + } + } + + private void ChkRevDay_y_CheckedChanged(object sender, EventArgs e) + { + if (ChkRevDay_y.Checked) + { + CbbDay_y.Items.Clear(); + for (int i = 0; i < 31; i++) + { + if (i == 30 && CbbLunar.SelectedIndex == 1) { continue; } + CbbDay_y.Items.Add("第" + (i + 1).ToString() + "天"); + } + CbbDay_y.SelectedIndex = 0; + } + else + { + CbbDay_y.Items.Clear(); + if (CbbLunar.SelectedIndex == 0) + { + for (int i = 0; i < 31; i++) + { + CbbDay_y.Items.Add((i + 1).ToString() + "日"); + } + } + else + { + for (int i = 0; i < 30; i++) + { + CbbDay_y.Items.Add(ChinaDate.GetDay(i + 1)); + } + } + CbbDay_y.SelectedIndex = 0; + } + } + + private void ChkRevDay_CheckedChanged(object sender, EventArgs e) + { + CbbDay.Items.Clear(); + if (ChkRevDay.Checked) + { + for (int i = 0; i < 28; i++) + { + CbbDay.Items.Add("第" + (i + 1).ToString() + "天"); + } + } + else + { + for (int i = 0; i < 28; i++) + { + CbbDay.Items.Add((i + 1).ToString() + "日"); + } + } + CbbDay.SelectedIndex = 0; + } + + private void BtnPlay_Click(object sender, EventArgs e) + { + string path = CbbSound.Text; + Itrycn_Info.PlaySound(path); + } + + private void ButtonEx1_Click(object sender, EventArgs e) + { + Button btn = (Button)sender; + Point p = new Point(0, btn.Height); + contextMenuStrip2.Show(btn, p); + } + + private void 分钟后ToolStripMenuItem_Click(object sender, EventArgs e) + { + int minute = ((ToolStripMenuItem)sender).Tag.ToInt(); + DateTime dt =DateTime.Now; + dt = dt.AddMinutes(minute); + DtDay.Value = dt; + DtTime.Value = dt; + } + + private void 天后ToolStripMenuItem_Click(object sender, EventArgs e) + { + int day = ((ToolStripMenuItem)sender).Tag.ToInt(); + DateTime dt = DateTime.Now; + dt = dt.AddDays(day); + DtDay.Value = dt; + DtTime.Value = dt; + } + + private void 个月后ToolStripMenuItem_Click(object sender, EventArgs e) + { + int month = ((ToolStripMenuItem)sender).Tag.ToInt(); + DateTime dt = DateTime.Now; + dt = dt.AddMonths(month); + DtDay.Value = dt; + DtTime.Value = dt; + } + bool proc_AfterSelect = false; + private void CtlTreeView1_AfterSelect(object sender, TreeViewEventArgs e) + { + if (proc_AfterSelect) { return; } + if (ctlTreeView1.SelectedNode != null) + { + int img_index = ctlTreeView1.SelectedNode.ImageIndex; + if (img_index < 0) { img_index = 0; } + pictureBox1.Image =Itrycn_Db.GetGroupImg(ctlTreeView1.ImageList.Images.Keys[img_index]); + TxtKeys.Text = ctlTreeView1.SelectedNode.Text; + } + panelEx2.Visible = false; + } + + private void RbWinStart_CheckedChanged(object sender, EventArgs e) + { + RadioButton rb = (RadioButton)sender; + if (rb.Checked) + { + PnlInterval.Visible = true; + PnlYear.Visible = false; + PnlMonth.Visible = false; + PnlTime.Visible = false; + PnlWeek.Visible = false; + label3.Text = "开机"; + LblInterval.Text = "分钟后"; + PnlStartTime.Visible = false; + NumInterval.Minimum = 0; + Dt_StartTime.Value = DtTime.Value; + } + else { NumInterval.Minimum = 1; } + } + + private void 自定义时间ToolStripMenuItem_Click(object sender, EventArgs e) + { + FrmCountdownTip frm = new FrmCountdownTip + { + Icon = Icon + }; + if (frm.ShowDialog()==DialogResult.OK) + { + DateTime dt = DateTime.Now; + dt = dt.AddMinutes(frm.Minute); + DtDay.Value = dt; + DtTime.Value = dt; + } + } + } + public class ActionInfo + { + public delegate void FileEventHandler(object sender); + public event FileEventHandler OnSelected; + public string Id = ""; + public string Title = ""; + public string File = ""; + public string Pram = ""; + public string File_Title = "文件:"; + /// + /// 文件过滤。 + /// + public string File_Filter = ""; + /// + /// 文件文本框提示 + /// + public string File_ToolTip = ""; + public bool ShowFileUI = false; + public bool ShowPramUI = false; + public bool Cancel = false; + public override string ToString() + { + return Title; + } + public void Selected() + { + OnSelected?.Invoke(this); + } + } + public class DateInfo + { + public DateTime start; + public DateTime end; + public int start_week = 1; + public int end_week = 1; + /// + /// 1表示具体时间,0表示每天 + /// + public int iType = 0; + public string des = ""; + } + public class TimeInfo + { + public string Title = ""; + /// + /// 提前多少分钟提醒 + /// + public int Minute = 0; + public override string ToString() + { + return Title; + } + } +} diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.resx b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.resx new file mode 100644 index 0000000..2a43d39 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeAdd.resx @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 502, 19 + + + 768, 19 + + + 165, 17 + + + 909, 19 + + + 17, 17 + + + 362, 19 + + + 603, 19 + + + + + AAABAAEAHyAAAAEAIAAoEAAAFgAAACgAAAAfAAAAQAAAAAEAIAAAAAAAgA8AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACushMArrITAK6yEwCushMDrrITL66yE3eushO3rrIT4a6y + E/WushP7rrIT9a6yE+GushO3rrITd66yEy+ushMDrrITAK6yEwCushMAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6yEwCushMArrITAK6yEwCushM0rrITmq6yE+OushP9rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/2ushPjrrITmq6yEzSushMArrITAK6yEwCushMAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6yEwCushMArrITAK6yEw6ushN6rrIT566yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPnrrITeq6yEw6ushMArrITAK6y + EwAAAAAAAAAAAAAAAAAAAAAAAAAAAK6yEwCushMArrITAK6yExmushOmrrIT/q6yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/6ushOmrrITGa6y + EwCushMArrITAAAAAAAAAAAAAAAAAAAAAACushMArrITAK6yExaushOwrrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E7CushMWrrITAK6yEwAAAAAAAAAAAAAAAACushMArrITAK6yEweushOYrrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrITmK6yEweushMArrITAAAAAAAAAAAArrITAK6yEwCushNerrIT+K6yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/iushNfrrITAK6yEwAAAAAArrITAK6yEwCushMarrIT0K6yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT0K6yExqushMArrITAK6yEwCushMArrITa66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushNrrrITAK6yEwCushMArrITC66yE72ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrITva6yEwuushMArrITAK6yEy+ushPsrrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE+yushMvrrITAK6yEwCushNZrrIT/a6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP9rrITWa6yEwCushMArrITeq6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/qushPfrrIT2q6y + E9qushParrIT2q6yE+aushP+rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE3qushMArrITAK6y + E4yushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushOVrrITHK6y + ExmushMZrrITGa6yExiushMtrrITya6yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushOMrrITAK6y + EwCushOOrrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP+rrITWK6y + EwCushMArrITAa6yEwGushMArrITDK6yE7aushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrITjq6y + EwCushMArrITga6yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/q6y + E1mushMArrITO66yE6iushOqrrITqa6yE72ushP4rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E4GushMArrITAK6yE2SushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/6ushNZrrITAK6yE1uushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushNkrrITAK6yEwCushM7rrIT8q6yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP+rrITWa6yEwCushNZrrIT/q6yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushPzrrITO66yEwCushMArrITE66yE86ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/q6yE1mushMArrITWa6yE/6ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrITzq6yExOushMArrITAK6yEwCushOErrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/6ushNZrrITAK6yE1mushP+rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE4SushMArrITAK6yEwCushMArrITLK6yE+SushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP+rrITWK6yEwCushNYrrIT/q6yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE+SushMsrrITAK6yEwCushMCrrITAK6yEwCushOBrrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE3OushMArrITc66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushOBrrITAK6yEwCushMArrITXa6yExiushMArrITFq6yE72ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushPkrrITq66yE+SushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushO9rrITFq6yEwCushMWrrITU66yE9mushNtrrITAK6yEwCushMwrrIT1a6y + E/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushPVrrITMK6yEwCushMArrITZ66yE9OushP7rrIT2a6yEyeushMArrITAK6y + EzmushPRrrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/+ushPRrrITOa6yEwCushMArrITIa6yE9SushP5rrIT966yE/+ushOorrITDa6y + EwCushMArrITKa6yE66ushP8rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/66yE/yushOurrITKa6yEwCushMArrITCa6yE5+ushP/rrIT966yE9iushP/rrIT/a6y + E4qushMHrrITAK6yEwCushMNrrITZq6yE86ushP8rrIT/66yE/+ushP/rrIT/66yE/+ushP/rrIT/66y + E/+ushP/rrIT/K6yE86ushNmrrITDa6yEwCushMArrITBK6yE4CushP7rrIT/66yE9qushOOrrIT/66y + E/+ushP6rrITi66yEw2ushMArrITAK6yEwCushMXrrITW66yE6SushPUrrIT7a6yE/aushP5rrIT9q6y + E+2ushPUrrITpK6yE1uushMXrrITAK6yEwCushMArrITCa6yE3+ushP3rrIT/66yE/+ushORrrITKq6y + E9iushP/rrIT/66yE/2ushOqrrITKa6yEwCushMArrITAK6yEwCushMCrrITFq6yEy+ushNCrrITSK6y + E0KushMvrrITFq6yEwKushMArrITAK6yEwCushMArrITIK6yE56ushP7rrIT/66yE/+ushPbrrITLa6y + EwCushNXrrIT766yE/+ushP/rrIT/66yE9uushNvrrITGK6yEwCushMArrITAK6yEwCushMArrITAK6y + EwCushMArrITAK6yEwCushMArrITAK6yEwCushMSrrITYq6yE9KushP/rrIT/66yE/+ushPxrrITXK6y + EwCushMArrITAa6yE1iushPYrrIT/66yE/+ushP/rrIT/q6yE9OushOCrrITJa6yEwCushMAAAAAAAAA + AAAAAAAAAAAAAAAAAACushMArrITAK6yExyushN1rrITya6yE/uushP/rrIT/66yE/+ushPcrrITXa6y + EwKushMArrITAK6yEwCushMArrITK66yE4+ushPZrrIT+K6yE/mushPgrrITl66yEyaushMArrITAAAA + AAAAAAAAAAAAAAAAAAAAAAAArrITAK6yEwCushMgrrITka6yE9+ushP6rrIT+a6yE92ushOUrrITL66y + EwCushMArrITAPwAAH7wAAAe4AAADsAAAAbAAAAGgAAAAoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAHwAAAB8AA + + + \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmTimeView.Designer.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeView.Designer.cs new file mode 100644 index 0000000..ab0010f --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeView.Designer.cs @@ -0,0 +1,1643 @@ +namespace TimeClock.DbOp +{ + partial class FrmTimeView + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmTimeView)); + System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("所有提醒"); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.快速提醒ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.添加数据ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.修改数据ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除数据ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.复制提醒ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.启用提醒ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.禁用提醒ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pnlTop = new System.Windows.Forms.Panel(); + this.LblAbout = new System.Windows.Forms.LinkLabel(); + this.LnkSetting = new System.Windows.Forms.LinkLabel(); + this.labelTx1 = new ryControls.LabelTx(); + this.label2 = new System.Windows.Forms.Label(); + this.imageList1 = new System.Windows.Forms.ImageList(this.components); + this.MenuMore = new System.Windows.Forms.ContextMenuStrip(this.components); + this.按下次提醒时间排序ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.chromeTabControl1 = new ryControls.ChromeTabControl(); + this.tabPage15 = new System.Windows.Forms.TabPage(); + this.LblGetRestRecord = new System.Windows.Forms.Label(); + this.table_rest = new XPTable.Models.Table(); + this.columnModel_rest = new XPTable.Models.ColumnModel(); + this.ColTime = new XPTable.Models.TextColumn(); + this.ColMode = new XPTable.Models.TextColumn(); + this.tableModel_rest = new XPTable.Models.TableModel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.table3 = new XPTable.Models.Table(); + this.CM_LatelyHoliday = new XPTable.Models.ColumnModel(); + this.textColumn6 = new XPTable.Models.TextColumn(); + this.textColumn7 = new XPTable.Models.TextColumn(); + this.TM__LatelyHoliday = new XPTable.Models.TableModel(); + this.label17 = new System.Windows.Forms.Label(); + this.LblNextRestTime = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.PnlTipLine5 = new System.Windows.Forms.Panel(); + this.LblTipTime5 = new System.Windows.Forms.Label(); + this.pictureBox6 = new System.Windows.Forms.PictureBox(); + this.LblTipLine5 = new System.Windows.Forms.Label(); + this.PnlTipLine4 = new System.Windows.Forms.Panel(); + this.LblTipTime4 = new System.Windows.Forms.Label(); + this.pictureBox5 = new System.Windows.Forms.PictureBox(); + this.LblTipLine4 = new System.Windows.Forms.Label(); + this.PnlTipLine3 = new System.Windows.Forms.Panel(); + this.LblTipTime3 = new System.Windows.Forms.Label(); + this.pictureBox4 = new System.Windows.Forms.PictureBox(); + this.LblTipLine3 = new System.Windows.Forms.Label(); + this.PnlTipLine2 = new System.Windows.Forms.Panel(); + this.LblTipTime2 = new System.Windows.Forms.Label(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.LblTipLine2 = new System.Windows.Forms.Label(); + this.PnlTipLine1 = new System.Windows.Forms.Panel(); + this.LblTipTime1 = new System.Windows.Forms.Label(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.LblTipLine1 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.LblLunarDate = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.LblDate = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.LblTime = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.TabTipView = new System.Windows.Forms.TabPage(); + this.rySearch1 = new ryControls.rySearch(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.ctlTreeView1 = new ryControls.CtlTreeView(); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.textColumn1 = new XPTable.Models.TextColumn(); + this.textColumn2 = new XPTable.Models.TextColumn(); + this.textColumn3 = new XPTable.Models.TextColumn(); + this.textColumn4 = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.ChkNoShow = new System.Windows.Forms.CheckBox(); + this.BtnMore = new ryControls.ButtonEx(); + this.ctlMyPage1 = new MyPage.ctlMyPage(); + this.btnAdd = new ryControls.ButtonEx(); + this.btnEdit = new ryControls.ButtonEx(); + this.btnDel = new ryControls.ButtonEx(); + this.BtnQuickAdd = new ryControls.ButtonEx(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.table_todo = new XPTable.Models.Table(); + this.columnModel_todo = new XPTable.Models.ColumnModel(); + this.ColTodo_Name = new XPTable.Models.TextColumn(); + this.ColTodo_StartTime = new XPTable.Models.TextColumn(); + this.ColTodo_EndTime = new XPTable.Models.TextColumn(); + this.ColTodo_State = new XPTable.Models.TextColumn(); + this.contextMenuStrip_todo = new System.Windows.Forms.ContextMenuStrip(this.components); + this.添加待办ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.修改待办ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除待办ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.任务作废ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.任务完成ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); + this.查看该待办操作记录ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tableModel_todo = new XPTable.Models.TableModel(); + this.rySearch2 = new ryControls.rySearch(); + this.TabSticky = new System.Windows.Forms.TabPage(); + this.table_sticky = new XPTable.Models.Table(); + this.columnModel_sticky = new XPTable.Models.ColumnModel(); + this.ColSticky = new XPTable.Models.TextColumn(); + this.ColStickyShow = new XPTable.Models.TextColumn(); + this.ColStickyAddTime = new XPTable.Models.TextColumn(); + this.MenuSticky = new System.Windows.Forms.ContextMenuStrip(this.components); + this.添加便笺ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.修改便笺ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除便笺ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator(); + this.在桌面显示ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.关闭桌面显示ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tableModel_sticky = new XPTable.Models.TableModel(); + this.rySearch_sticky = new ryControls.rySearch(); + this.TabCalendar = new System.Windows.Forms.TabPage(); + this.chinaCalendar1 = new ryControls.ChinaCalendar(); + this.panelEx1 = new ryControls.PanelEx(); + this.panelEx2 = new ryControls.PanelEx(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.table2 = new XPTable.Models.Table(); + this.columnModel2 = new XPTable.Models.ColumnModel(); + this.textColumn5 = new XPTable.Models.TextColumn(); + this.ColHoliday = new XPTable.Models.TextColumn(); + this.tableModel2 = new XPTable.Models.TableModel(); + this.contextMenuStrip1.SuspendLayout(); + this.pnlTop.SuspendLayout(); + this.MenuMore.SuspendLayout(); + this.chromeTabControl1.SuspendLayout(); + this.tabPage15.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table_rest)).BeginInit(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table3)).BeginInit(); + this.panel2.SuspendLayout(); + this.PnlTipLine5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit(); + this.PnlTipLine4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit(); + this.PnlTipLine3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit(); + this.PnlTipLine2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + this.PnlTipLine1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.TabTipView.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.tabPage1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table_todo)).BeginInit(); + this.contextMenuStrip_todo.SuspendLayout(); + this.TabSticky.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table_sticky)).BeginInit(); + this.MenuSticky.SuspendLayout(); + this.TabCalendar.SuspendLayout(); + this.panelEx1.SuspendLayout(); + this.panelEx2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table2)).BeginInit(); + this.SuspendLayout(); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.快速提醒ToolStripMenuItem, + this.toolStripMenuItem1, + this.添加数据ToolStripMenuItem, + this.修改数据ToolStripMenuItem, + this.删除数据ToolStripMenuItem, + this.复制提醒ToolStripMenuItem, + this.toolStripMenuItem2, + this.启用提醒ToolStripMenuItem, + this.禁用提醒ToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(146, 170); + this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStrip1_Opening); + // + // 快速提醒ToolStripMenuItem + // + this.快速提醒ToolStripMenuItem.Name = "快速提醒ToolStripMenuItem"; + this.快速提醒ToolStripMenuItem.ShortcutKeyDisplayString = "F1"; + this.快速提醒ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.快速提醒ToolStripMenuItem.Text = "快速提醒"; + this.快速提醒ToolStripMenuItem.Click += new System.EventHandler(this.快速提醒ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(142, 6); + // + // 添加数据ToolStripMenuItem + // + this.添加数据ToolStripMenuItem.Name = "添加数据ToolStripMenuItem"; + this.添加数据ToolStripMenuItem.ShortcutKeyDisplayString = "F2"; + this.添加数据ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.添加数据ToolStripMenuItem.Text = "添加提醒"; + this.添加数据ToolStripMenuItem.Click += new System.EventHandler(this.添加数据ToolStripMenuItem_Click); + // + // 修改数据ToolStripMenuItem + // + this.修改数据ToolStripMenuItem.Name = "修改数据ToolStripMenuItem"; + this.修改数据ToolStripMenuItem.ShortcutKeyDisplayString = "F3"; + this.修改数据ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.修改数据ToolStripMenuItem.Text = "修改提醒"; + this.修改数据ToolStripMenuItem.Click += new System.EventHandler(this.修改数据ToolStripMenuItem_Click); + // + // 删除数据ToolStripMenuItem + // + this.删除数据ToolStripMenuItem.Name = "删除数据ToolStripMenuItem"; + this.删除数据ToolStripMenuItem.ShortcutKeyDisplayString = "F4"; + this.删除数据ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.删除数据ToolStripMenuItem.Text = "删除提醒"; + this.删除数据ToolStripMenuItem.Click += new System.EventHandler(this.删除数据ToolStripMenuItem_Click); + // + // 复制提醒ToolStripMenuItem + // + this.复制提醒ToolStripMenuItem.Name = "复制提醒ToolStripMenuItem"; + this.复制提醒ToolStripMenuItem.ShortcutKeyDisplayString = "F5"; + this.复制提醒ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.复制提醒ToolStripMenuItem.Text = "复制提醒"; + this.复制提醒ToolStripMenuItem.Click += new System.EventHandler(this.复制提醒ToolStripMenuItem_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(142, 6); + // + // 启用提醒ToolStripMenuItem + // + this.启用提醒ToolStripMenuItem.Name = "启用提醒ToolStripMenuItem"; + this.启用提醒ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.启用提醒ToolStripMenuItem.Text = "启用提醒"; + this.启用提醒ToolStripMenuItem.Click += new System.EventHandler(this.启用提醒ToolStripMenuItem_Click); + // + // 禁用提醒ToolStripMenuItem + // + this.禁用提醒ToolStripMenuItem.Name = "禁用提醒ToolStripMenuItem"; + this.禁用提醒ToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.禁用提醒ToolStripMenuItem.Text = "禁用提醒"; + this.禁用提醒ToolStripMenuItem.Click += new System.EventHandler(this.禁用提醒ToolStripMenuItem_Click); + // + // pnlTop + // + this.pnlTop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.pnlTop.Controls.Add(this.LblAbout); + this.pnlTop.Controls.Add(this.LnkSetting); + this.pnlTop.Controls.Add(this.labelTx1); + this.pnlTop.Controls.Add(this.label2); + this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top; + this.pnlTop.Location = new System.Drawing.Point(0, 0); + this.pnlTop.Name = "pnlTop"; + this.pnlTop.Size = new System.Drawing.Size(1106, 86); + this.pnlTop.TabIndex = 44; + // + // LblAbout + // + this.LblAbout.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblAbout.AutoSize = true; + this.LblAbout.LinkColor = System.Drawing.Color.White; + this.LblAbout.Location = new System.Drawing.Point(1069, 9); + this.LblAbout.Name = "LblAbout"; + this.LblAbout.Size = new System.Drawing.Size(29, 12); + this.LblAbout.TabIndex = 7; + this.LblAbout.TabStop = true; + this.LblAbout.Text = "关于"; + this.LblAbout.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LblAbout_LinkClicked); + // + // LnkSetting + // + this.LnkSetting.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LnkSetting.AutoSize = true; + this.LnkSetting.LinkColor = System.Drawing.Color.White; + this.LnkSetting.Location = new System.Drawing.Point(1032, 9); + this.LnkSetting.Name = "LnkSetting"; + this.LnkSetting.Size = new System.Drawing.Size(29, 12); + this.LnkSetting.TabIndex = 6; + this.LnkSetting.TabStop = true; + this.LnkSetting.Text = "设置"; + this.LnkSetting.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkSetting_LinkClicked); + // + // labelTx1 + // + this.labelTx1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.labelTx1.ForeColor = System.Drawing.Color.White; + this.labelTx1.LineDistance = 5; + this.labelTx1.Location = new System.Drawing.Point(40, 51); + this.labelTx1.Name = "labelTx1"; + this.labelTx1.Size = new System.Drawing.Size(1054, 19); + this.labelTx1.TabIndex = 5; + this.labelTx1.Text = "功能强大的定时提醒助手,帮助您实现各种定时提醒/定时执行操作。"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(12, 19); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(135, 20); + this.label2.TabIndex = 0; + this.label2.Text = "定时提醒助手"; + // + // imageList1 + // + this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; + this.imageList1.ImageSize = new System.Drawing.Size(16, 16); + this.imageList1.TransparentColor = System.Drawing.Color.Transparent; + // + // MenuMore + // + this.MenuMore.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.按下次提醒时间排序ToolStripMenuItem}); + this.MenuMore.Name = "MenuMore"; + this.MenuMore.Size = new System.Drawing.Size(185, 26); + // + // 按下次提醒时间排序ToolStripMenuItem + // + this.按下次提醒时间排序ToolStripMenuItem.Name = "按下次提醒时间排序ToolStripMenuItem"; + this.按下次提醒时间排序ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.按下次提醒时间排序ToolStripMenuItem.Text = "按下次提醒时间排序"; + this.按下次提醒时间排序ToolStripMenuItem.Click += new System.EventHandler(this.按下次提醒时间排序ToolStripMenuItem_Click); + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); + // + // chromeTabControl1 + // + this.chromeTabControl1.AllowDragTab = false; + this.chromeTabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.chromeTabControl1.BackTabPageColor = System.Drawing.Color.White; + this.chromeTabControl1.BackTabPageImage = null; + this.chromeTabControl1.Controls.Add(this.tabPage15); + this.chromeTabControl1.Controls.Add(this.TabTipView); + this.chromeTabControl1.Controls.Add(this.tabPage1); + this.chromeTabControl1.Controls.Add(this.TabSticky); + this.chromeTabControl1.Controls.Add(this.TabCalendar); + this.chromeTabControl1.Cursor = System.Windows.Forms.Cursors.Default; + this.chromeTabControl1.ItemSize = new System.Drawing.Size(120, 25); + this.chromeTabControl1.Location = new System.Drawing.Point(0, 89); + this.chromeTabControl1.Name = "chromeTabControl1"; + this.chromeTabControl1.SelectedIndex = 0; + this.chromeTabControl1.ShowAddButton = false; + this.chromeTabControl1.ShowCloseButton = false; + this.chromeTabControl1.Size = new System.Drawing.Size(1106, 622); + this.chromeTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; + this.chromeTabControl1.TabContextMenuStrip = null; + this.chromeTabControl1.TabIndex = 43; + this.chromeTabControl1.TabMaxWidth = 120; + this.chromeTabControl1.TabOffColorEnd = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(230)))), ((int)(((byte)(230))))); + this.chromeTabControl1.TabOffColorStart = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(230)))), ((int)(((byte)(230))))); + this.chromeTabControl1.SelectedIndexChanged += new System.EventHandler(this.chromeTabControl1_SelectedIndexChanged); + // + // tabPage15 + // + this.tabPage15.Controls.Add(this.LblGetRestRecord); + this.tabPage15.Controls.Add(this.table_rest); + this.tabPage15.Controls.Add(this.panel1); + this.tabPage15.Controls.Add(this.LblNextRestTime); + this.tabPage15.Controls.Add(this.label7); + this.tabPage15.Controls.Add(this.panel2); + this.tabPage15.Controls.Add(this.LblLunarDate); + this.tabPage15.Controls.Add(this.label5); + this.tabPage15.Controls.Add(this.LblDate); + this.tabPage15.Controls.Add(this.label4); + this.tabPage15.Controls.Add(this.LblTime); + this.tabPage15.Controls.Add(this.label1); + this.tabPage15.Location = new System.Drawing.Point(1, 29); + this.tabPage15.Name = "tabPage15"; + this.tabPage15.Padding = new System.Windows.Forms.Padding(3); + this.tabPage15.Size = new System.Drawing.Size(1104, 592); + this.tabPage15.TabIndex = 0; + this.tabPage15.Text = "首页"; + this.tabPage15.UseVisualStyleBackColor = true; + // + // LblGetRestRecord + // + this.LblGetRestRecord.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblGetRestRecord.AutoSize = true; + this.LblGetRestRecord.Cursor = System.Windows.Forms.Cursors.Hand; + this.LblGetRestRecord.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblGetRestRecord.ForeColor = System.Drawing.Color.Blue; + this.LblGetRestRecord.Location = new System.Drawing.Point(20, 148); + this.LblGetRestRecord.Name = "LblGetRestRecord"; + this.LblGetRestRecord.Size = new System.Drawing.Size(29, 12); + this.LblGetRestRecord.TabIndex = 56; + this.LblGetRestRecord.Text = "刷新"; + this.LblGetRestRecord.Click += new System.EventHandler(this.LblGetRestRecord_Click); + // + // table_rest + // + this.table_rest.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table_rest.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.table_rest.ColumnModel = this.columnModel_rest; + this.table_rest.EnableToolTips = true; + this.table_rest.FullRowSelect = true; + this.table_rest.HeaderFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table_rest.Location = new System.Drawing.Point(18, 163); + this.table_rest.Name = "table_rest"; + this.table_rest.NoItemsText = "当前列表没有任何项"; + this.table_rest.Size = new System.Drawing.Size(785, 420); + this.table_rest.TabIndex = 55; + this.table_rest.TableModel = this.tableModel_rest; + this.table_rest.Text = "table4"; + // + // columnModel_rest + // + this.columnModel_rest.Columns.AddRange(new XPTable.Models.Column[] { + this.ColTime, + this.ColMode}); + // + // ColTime + // + this.ColTime.Editable = false; + this.ColTime.Tag = null; + this.ColTime.Text = "时间"; + this.ColTime.Width = 360; + // + // ColMode + // + this.ColMode.Editable = false; + this.ColMode.Tag = null; + this.ColMode.Text = "状态"; + this.ColMode.Width = 200; + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel1.BackgroundImage"))); + this.panel1.Controls.Add(this.table3); + this.panel1.Controls.Add(this.label17); + this.panel1.Location = new System.Drawing.Point(813, 208); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(280, 240); + this.panel1.TabIndex = 54; + // + // table3 + // + this.table3.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.table3.ColumnModel = this.CM_LatelyHoliday; + this.table3.EnableToolTips = true; + this.table3.FullRowSelect = true; + this.table3.HeaderFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table3.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table3.Location = new System.Drawing.Point(10, 56); + this.table3.Name = "table3"; + this.table3.NoItemsText = "近期没有任何节假日"; + this.table3.Size = new System.Drawing.Size(260, 181); + this.table3.TabIndex = 26; + this.table3.TableModel = this.TM__LatelyHoliday; + this.table3.Text = "table3"; + // + // CM_LatelyHoliday + // + this.CM_LatelyHoliday.Columns.AddRange(new XPTable.Models.Column[] { + this.textColumn6, + this.textColumn7}); + // + // textColumn6 + // + this.textColumn6.Editable = false; + this.textColumn6.Tag = null; + this.textColumn6.Text = "时间"; + this.textColumn6.Width = 85; + // + // textColumn7 + // + this.textColumn7.Editable = false; + this.textColumn7.Tag = null; + this.textColumn7.Text = "节日"; + this.textColumn7.Width = 145; + // + // TM__LatelyHoliday + // + this.TM__LatelyHoliday.RowHeight = 20; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.BackColor = System.Drawing.Color.Transparent; + this.label17.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label17.ForeColor = System.Drawing.Color.Gray; + this.label17.Location = new System.Drawing.Point(17, 17); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(107, 25); + this.label17.TabIndex = 25; + this.label17.Text = "最近节假日"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // LblNextRestTime + // + this.LblNextRestTime.AutoSize = true; + this.LblNextRestTime.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblNextRestTime.ForeColor = System.Drawing.Color.RoyalBlue; + this.LblNextRestTime.Location = new System.Drawing.Point(91, 114); + this.LblNextRestTime.Name = "LblNextRestTime"; + this.LblNextRestTime.Size = new System.Drawing.Size(35, 14); + this.LblNextRestTime.TabIndex = 53; + this.LblNextRestTime.Text = "未知"; + this.LblNextRestTime.Click += new System.EventHandler(this.LblNextRestTime_Click); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.Location = new System.Drawing.Point(19, 114); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(70, 14); + this.label7.TabIndex = 52; + this.label7.Text = "下次休息:"; + // + // panel2 + // + this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.panel2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel2.BackgroundImage"))); + this.panel2.Controls.Add(this.PnlTipLine5); + this.panel2.Controls.Add(this.PnlTipLine4); + this.panel2.Controls.Add(this.PnlTipLine3); + this.panel2.Controls.Add(this.PnlTipLine2); + this.panel2.Controls.Add(this.PnlTipLine1); + this.panel2.Controls.Add(this.label3); + this.panel2.Location = new System.Drawing.Point(813, 12); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(280, 190); + this.panel2.TabIndex = 51; + // + // PnlTipLine5 + // + this.PnlTipLine5.BackColor = System.Drawing.Color.Transparent; + this.PnlTipLine5.Controls.Add(this.LblTipTime5); + this.PnlTipLine5.Controls.Add(this.pictureBox6); + this.PnlTipLine5.Controls.Add(this.LblTipLine5); + this.PnlTipLine5.Location = new System.Drawing.Point(10, 163); + this.PnlTipLine5.Name = "PnlTipLine5"; + this.PnlTipLine5.Size = new System.Drawing.Size(260, 21); + this.PnlTipLine5.TabIndex = 46; + // + // LblTipTime5 + // + this.LblTipTime5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTipTime5.AutoSize = true; + this.LblTipTime5.ForeColor = System.Drawing.Color.DimGray; + this.LblTipTime5.Location = new System.Drawing.Point(220, 4); + this.LblTipTime5.Name = "LblTipTime5"; + this.LblTipTime5.Size = new System.Drawing.Size(35, 12); + this.LblTipTime5.TabIndex = 43; + this.LblTipTime5.Text = "01-01"; + // + // pictureBox6 + // + this.pictureBox6.BackColor = System.Drawing.Color.Transparent; + this.pictureBox6.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox6.Image"))); + this.pictureBox6.Location = new System.Drawing.Point(3, 2); + this.pictureBox6.Name = "pictureBox6"; + this.pictureBox6.Size = new System.Drawing.Size(17, 17); + this.pictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox6.TabIndex = 40; + this.pictureBox6.TabStop = false; + // + // LblTipLine5 + // + this.LblTipLine5.BackColor = System.Drawing.Color.Transparent; + this.LblTipLine5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTipLine5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.LblTipLine5.Location = new System.Drawing.Point(25, 2); + this.LblTipLine5.Name = "LblTipLine5"; + this.LblTipLine5.Size = new System.Drawing.Size(198, 16); + this.LblTipLine5.TabIndex = 41; + this.LblTipLine5.Text = "正在读取....."; + // + // PnlTipLine4 + // + this.PnlTipLine4.BackColor = System.Drawing.Color.Transparent; + this.PnlTipLine4.Controls.Add(this.LblTipTime4); + this.PnlTipLine4.Controls.Add(this.pictureBox5); + this.PnlTipLine4.Controls.Add(this.LblTipLine4); + this.PnlTipLine4.Location = new System.Drawing.Point(10, 136); + this.PnlTipLine4.Name = "PnlTipLine4"; + this.PnlTipLine4.Size = new System.Drawing.Size(260, 21); + this.PnlTipLine4.TabIndex = 45; + // + // LblTipTime4 + // + this.LblTipTime4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTipTime4.AutoSize = true; + this.LblTipTime4.ForeColor = System.Drawing.Color.DimGray; + this.LblTipTime4.Location = new System.Drawing.Point(220, 4); + this.LblTipTime4.Name = "LblTipTime4"; + this.LblTipTime4.Size = new System.Drawing.Size(35, 12); + this.LblTipTime4.TabIndex = 43; + this.LblTipTime4.Text = "01-01"; + // + // pictureBox5 + // + this.pictureBox5.BackColor = System.Drawing.Color.Transparent; + this.pictureBox5.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox5.Image"))); + this.pictureBox5.Location = new System.Drawing.Point(3, 2); + this.pictureBox5.Name = "pictureBox5"; + this.pictureBox5.Size = new System.Drawing.Size(17, 17); + this.pictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox5.TabIndex = 40; + this.pictureBox5.TabStop = false; + // + // LblTipLine4 + // + this.LblTipLine4.BackColor = System.Drawing.Color.Transparent; + this.LblTipLine4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTipLine4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.LblTipLine4.Location = new System.Drawing.Point(25, 2); + this.LblTipLine4.Name = "LblTipLine4"; + this.LblTipLine4.Size = new System.Drawing.Size(193, 16); + this.LblTipLine4.TabIndex = 41; + this.LblTipLine4.Text = "正在读取....."; + // + // PnlTipLine3 + // + this.PnlTipLine3.BackColor = System.Drawing.Color.Transparent; + this.PnlTipLine3.Controls.Add(this.LblTipTime3); + this.PnlTipLine3.Controls.Add(this.pictureBox4); + this.PnlTipLine3.Controls.Add(this.LblTipLine3); + this.PnlTipLine3.Location = new System.Drawing.Point(10, 111); + this.PnlTipLine3.Name = "PnlTipLine3"; + this.PnlTipLine3.Size = new System.Drawing.Size(260, 21); + this.PnlTipLine3.TabIndex = 44; + // + // LblTipTime3 + // + this.LblTipTime3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTipTime3.AutoSize = true; + this.LblTipTime3.ForeColor = System.Drawing.Color.DimGray; + this.LblTipTime3.Location = new System.Drawing.Point(220, 4); + this.LblTipTime3.Name = "LblTipTime3"; + this.LblTipTime3.Size = new System.Drawing.Size(35, 12); + this.LblTipTime3.TabIndex = 48; + this.LblTipTime3.Text = "01-01"; + // + // pictureBox4 + // + this.pictureBox4.BackColor = System.Drawing.Color.Transparent; + this.pictureBox4.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox4.Image"))); + this.pictureBox4.Location = new System.Drawing.Point(3, 2); + this.pictureBox4.Name = "pictureBox4"; + this.pictureBox4.Size = new System.Drawing.Size(17, 17); + this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox4.TabIndex = 40; + this.pictureBox4.TabStop = false; + // + // LblTipLine3 + // + this.LblTipLine3.BackColor = System.Drawing.Color.Transparent; + this.LblTipLine3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTipLine3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.LblTipLine3.Location = new System.Drawing.Point(25, 2); + this.LblTipLine3.Name = "LblTipLine3"; + this.LblTipLine3.Size = new System.Drawing.Size(193, 16); + this.LblTipLine3.TabIndex = 41; + this.LblTipLine3.Text = "正在读取....."; + // + // PnlTipLine2 + // + this.PnlTipLine2.BackColor = System.Drawing.Color.Transparent; + this.PnlTipLine2.Controls.Add(this.LblTipTime2); + this.PnlTipLine2.Controls.Add(this.pictureBox3); + this.PnlTipLine2.Controls.Add(this.LblTipLine2); + this.PnlTipLine2.Location = new System.Drawing.Point(10, 84); + this.PnlTipLine2.Name = "PnlTipLine2"; + this.PnlTipLine2.Size = new System.Drawing.Size(260, 21); + this.PnlTipLine2.TabIndex = 43; + // + // LblTipTime2 + // + this.LblTipTime2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTipTime2.AutoSize = true; + this.LblTipTime2.ForeColor = System.Drawing.Color.DimGray; + this.LblTipTime2.Location = new System.Drawing.Point(220, 4); + this.LblTipTime2.Name = "LblTipTime2"; + this.LblTipTime2.Size = new System.Drawing.Size(35, 12); + this.LblTipTime2.TabIndex = 43; + this.LblTipTime2.Text = "01-01"; + // + // pictureBox3 + // + this.pictureBox3.BackColor = System.Drawing.Color.Transparent; + this.pictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox3.Image"))); + this.pictureBox3.Location = new System.Drawing.Point(3, 2); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(17, 17); + this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox3.TabIndex = 40; + this.pictureBox3.TabStop = false; + // + // LblTipLine2 + // + this.LblTipLine2.BackColor = System.Drawing.Color.Transparent; + this.LblTipLine2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTipLine2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.LblTipLine2.Location = new System.Drawing.Point(25, 2); + this.LblTipLine2.Name = "LblTipLine2"; + this.LblTipLine2.Size = new System.Drawing.Size(193, 16); + this.LblTipLine2.TabIndex = 41; + this.LblTipLine2.Text = "正在读取....."; + // + // PnlTipLine1 + // + this.PnlTipLine1.BackColor = System.Drawing.Color.Transparent; + this.PnlTipLine1.Controls.Add(this.LblTipTime1); + this.PnlTipLine1.Controls.Add(this.pictureBox2); + this.PnlTipLine1.Controls.Add(this.LblTipLine1); + this.PnlTipLine1.Location = new System.Drawing.Point(10, 59); + this.PnlTipLine1.Name = "PnlTipLine1"; + this.PnlTipLine1.Size = new System.Drawing.Size(260, 21); + this.PnlTipLine1.TabIndex = 42; + // + // LblTipTime1 + // + this.LblTipTime1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.LblTipTime1.AutoSize = true; + this.LblTipTime1.ForeColor = System.Drawing.Color.DimGray; + this.LblTipTime1.Location = new System.Drawing.Point(220, 4); + this.LblTipTime1.Name = "LblTipTime1"; + this.LblTipTime1.Size = new System.Drawing.Size(35, 12); + this.LblTipTime1.TabIndex = 42; + this.LblTipTime1.Text = "01-01"; + // + // pictureBox2 + // + this.pictureBox2.BackColor = System.Drawing.Color.Transparent; + this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); + this.pictureBox2.Location = new System.Drawing.Point(3, 2); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(17, 17); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox2.TabIndex = 40; + this.pictureBox2.TabStop = false; + // + // LblTipLine1 + // + this.LblTipLine1.BackColor = System.Drawing.Color.Transparent; + this.LblTipLine1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTipLine1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.LblTipLine1.Location = new System.Drawing.Point(25, 2); + this.LblTipLine1.Name = "LblTipLine1"; + this.LblTipLine1.Size = new System.Drawing.Size(193, 16); + this.LblTipLine1.TabIndex = 41; + this.LblTipLine1.Text = "正在读取....."; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.Gray; + this.label3.Location = new System.Drawing.Point(17, 17); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(88, 25); + this.label3.TabIndex = 25; + this.label3.Text = "最近提醒"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // LblLunarDate + // + this.LblLunarDate.AutoSize = true; + this.LblLunarDate.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblLunarDate.ForeColor = System.Drawing.Color.RoyalBlue; + this.LblLunarDate.Location = new System.Drawing.Point(60, 88); + this.LblLunarDate.Name = "LblLunarDate"; + this.LblLunarDate.Size = new System.Drawing.Size(35, 14); + this.LblLunarDate.TabIndex = 5; + this.LblLunarDate.Text = "未知"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(19, 88); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(42, 14); + this.label5.TabIndex = 4; + this.label5.Text = "农历:"; + // + // LblDate + // + this.LblDate.AutoSize = true; + this.LblDate.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblDate.ForeColor = System.Drawing.Color.RoyalBlue; + this.LblDate.Location = new System.Drawing.Point(60, 61); + this.LblDate.Name = "LblDate"; + this.LblDate.Size = new System.Drawing.Size(35, 14); + this.LblDate.TabIndex = 3; + this.LblDate.Text = "未知"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(19, 61); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(42, 14); + this.label4.TabIndex = 2; + this.label4.Text = "日期:"; + // + // LblTime + // + this.LblTime.AutoSize = true; + this.LblTime.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LblTime.ForeColor = System.Drawing.Color.RoyalBlue; + this.LblTime.Location = new System.Drawing.Point(58, 12); + this.LblTime.Name = "LblTime"; + this.LblTime.Size = new System.Drawing.Size(198, 33); + this.LblTime.TabIndex = 1; + this.LblTime.Text = "正在获取..."; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(19, 23); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(42, 14); + this.label1.TabIndex = 0; + this.label1.Text = "时间:"; + // + // TabTipView + // + this.TabTipView.Controls.Add(this.rySearch1); + this.TabTipView.Controls.Add(this.splitContainer1); + this.TabTipView.Controls.Add(this.ChkNoShow); + this.TabTipView.Controls.Add(this.BtnMore); + this.TabTipView.Controls.Add(this.ctlMyPage1); + this.TabTipView.Controls.Add(this.btnAdd); + this.TabTipView.Controls.Add(this.btnEdit); + this.TabTipView.Controls.Add(this.btnDel); + this.TabTipView.Controls.Add(this.BtnQuickAdd); + this.TabTipView.Location = new System.Drawing.Point(1, 29); + this.TabTipView.Name = "TabTipView"; + this.TabTipView.Padding = new System.Windows.Forms.Padding(3); + this.TabTipView.Size = new System.Drawing.Size(1104, 592); + this.TabTipView.TabIndex = 1; + this.TabTipView.Text = "我的提醒"; + this.TabTipView.UseVisualStyleBackColor = true; + // + // rySearch1 + // + this.rySearch1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.rySearch1.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.rySearch1.EmptyText = "请输入搜索内容"; + this.rySearch1.Location = new System.Drawing.Point(6, 6); + this.rySearch1.Name = "rySearch1"; + this.rySearch1.Size = new System.Drawing.Size(329, 24); + this.rySearch1.TabIndex = 28; + this.rySearch1.OnSearch += new System.EventHandler(this.RySearch1_OnSearch); + // + // splitContainer1 + // + this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainer1.Location = new System.Drawing.Point(6, 36); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.ctlTreeView1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.table1); + this.splitContainer1.Size = new System.Drawing.Size(1095, 521); + this.splitContainer1.SplitterDistance = 224; + this.splitContainer1.TabIndex = 46; + // + // ctlTreeView1 + // + this.ctlTreeView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.ctlTreeView1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ctlTreeView1.HideSelection = false; + this.ctlTreeView1.HotTracking = true; + this.ctlTreeView1.ImageIndex = 0; + this.ctlTreeView1.ImageList = this.imageList1; + this.ctlTreeView1.ItemHeight = 18; + this.ctlTreeView1.Location = new System.Drawing.Point(0, 0); + this.ctlTreeView1.Name = "ctlTreeView1"; + treeNode1.ImageIndex = 0; + treeNode1.Name = "节点0"; + treeNode1.Text = "所有提醒"; + this.ctlTreeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { + treeNode1}); + this.ctlTreeView1.SelectedImageIndex = 0; + this.ctlTreeView1.Size = new System.Drawing.Size(224, 521); + this.ctlTreeView1.T_FirstShowText = "所有提醒"; + this.ctlTreeView1.T_ShowMenu = true; + this.ctlTreeView1.TabIndex = 45; + this.ctlTreeView1.OnDataChange += new System.EventHandler(this.CtlTreeView1_OnDataChange); + this.ctlTreeView1.OnBeforeAddGroup += new ryControls.CtlTreeView.OptHandler(this.CtlTreeView1_OnBeforeAddGroup); + this.ctlTreeView1.OnBeforeDelGroup += new ryControls.CtlTreeView.OptHandler(this.CtlTreeView1_OnBeforeDelGroup); + this.ctlTreeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.CtlTreeView1_AfterSelect); + // + // table1 + // + this.table1.ColumnModel = this.columnModel1; + this.table1.ContextMenuStrip = this.contextMenuStrip1; + this.table1.Dock = System.Windows.Forms.DockStyle.Fill; + this.table1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table1.FullRowSelect = true; + this.table1.GridLines = XPTable.Models.GridLines.Rows; + this.table1.GridLineStyle = XPTable.Models.GridLineStyle.Dot; + this.table1.HeaderFont = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(0, 0); + this.table1.MultiSelect = true; + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何提醒"; + this.table1.Size = new System.Drawing.Size(867, 521); + this.table1.TabIndex = 42; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + this.table1.CellDoubleClick += new XPTable.Events.CellMouseEventHandler(this.Table1_CellDoubleClick); + this.table1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Table1_KeyDown); + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.textColumn1, + this.textColumn2, + this.textColumn3, + this.textColumn4}); + // + // textColumn1 + // + this.textColumn1.Editable = false; + this.textColumn1.Tag = null; + this.textColumn1.Text = "定时"; + this.textColumn1.Width = 230; + // + // textColumn2 + // + this.textColumn2.Editable = false; + this.textColumn2.Tag = null; + this.textColumn2.Text = "标题"; + this.textColumn2.Width = 220; + // + // textColumn3 + // + this.textColumn3.Editable = false; + this.textColumn3.Tag = null; + this.textColumn3.Text = "下次提醒时间"; + this.textColumn3.Width = 220; + // + // textColumn4 + // + this.textColumn4.Editable = false; + this.textColumn4.Tag = null; + this.textColumn4.Text = "属性"; + this.textColumn4.Width = 160; + // + // ChkNoShow + // + this.ChkNoShow.AutoSize = true; + this.ChkNoShow.Location = new System.Drawing.Point(379, 12); + this.ChkNoShow.Name = "ChkNoShow"; + this.ChkNoShow.Size = new System.Drawing.Size(168, 16); + this.ChkNoShow.TabIndex = 47; + this.ChkNoShow.Text = "不显示已过期或无效的提醒"; + this.ChkNoShow.UseVisualStyleBackColor = true; + this.ChkNoShow.CheckedChanged += new System.EventHandler(this.ChkNoShow_CheckedChanged); + // + // BtnMore + // + this.BtnMore.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnMore.Location = new System.Drawing.Point(339, 6); + this.BtnMore.Name = "BtnMore"; + this.BtnMore.Size = new System.Drawing.Size(26, 24); + this.BtnMore.TabIndex = 48; + this.BtnMore.Text = "▼"; + this.BtnMore.UseVisualStyleBackColor = true; + this.BtnMore.Click += new System.EventHandler(this.BtnMore_Click); + // + // ctlMyPage1 + // + this.ctlMyPage1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ctlMyPage1.Location = new System.Drawing.Point(6, 563); + this.ctlMyPage1.Name = "ctlMyPage1"; + this.ctlMyPage1.PageSize = 50; + this.ctlMyPage1.RecordCount = 0; + this.ctlMyPage1.Size = new System.Drawing.Size(506, 26); + this.ctlMyPage1.SQLText = ""; + this.ctlMyPage1.SQLText2 = ""; + this.ctlMyPage1.T_FirstCaption = "首页"; + this.ctlMyPage1.T_LastCaption = "末页"; + this.ctlMyPage1.T_NextCaption = "下一页"; + this.ctlMyPage1.T_Parameters = null; + this.ctlMyPage1.T_PreCaption = "上一页"; + this.ctlMyPage1.T_SkipCaption = "跳到"; + this.ctlMyPage1.T_TipCaption = "{pageindex}/{pagecount} 页,共 {recordcount} 条记录,每页 {pagesize} 条"; + this.ctlMyPage1.TabIndex = 30; + this.ctlMyPage1.OnPageChange += new System.EventHandler(this.CtlMyPage1_OnPageChange); + // + // btnAdd + // + this.btnAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnAdd.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnAdd.Location = new System.Drawing.Point(897, 6); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(62, 24); + this.btnAdd.TabIndex = 38; + this.btnAdd.Text = "添加"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.BtnAdd_Click); + // + // btnEdit + // + this.btnEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnEdit.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnEdit.Location = new System.Drawing.Point(965, 6); + this.btnEdit.Name = "btnEdit"; + this.btnEdit.Size = new System.Drawing.Size(62, 24); + this.btnEdit.TabIndex = 39; + this.btnEdit.Text = "修改"; + this.btnEdit.UseVisualStyleBackColor = true; + this.btnEdit.Click += new System.EventHandler(this.BtnEdit_Click); + // + // btnDel + // + this.btnDel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnDel.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.btnDel.Location = new System.Drawing.Point(1033, 6); + this.btnDel.Name = "btnDel"; + this.btnDel.Size = new System.Drawing.Size(62, 24); + this.btnDel.TabIndex = 40; + this.btnDel.Text = "删除"; + this.btnDel.UseVisualStyleBackColor = true; + this.btnDel.Click += new System.EventHandler(this.BtnDel_Click); + // + // BtnQuickAdd + // + this.BtnQuickAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BtnQuickAdd.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnQuickAdd.Location = new System.Drawing.Point(829, 6); + this.BtnQuickAdd.Name = "BtnQuickAdd"; + this.BtnQuickAdd.Size = new System.Drawing.Size(62, 24); + this.BtnQuickAdd.TabIndex = 42; + this.BtnQuickAdd.Text = "快速提醒"; + this.BtnQuickAdd.UseVisualStyleBackColor = true; + this.BtnQuickAdd.Click += new System.EventHandler(this.BtnQuickAdd_Click); + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.table_todo); + this.tabPage1.Controls.Add(this.rySearch2); + this.tabPage1.Location = new System.Drawing.Point(1, 29); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(1104, 592); + this.tabPage1.TabIndex = 3; + this.tabPage1.Text = "我的待办"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // table_todo + // + this.table_todo.ColumnModel = this.columnModel_todo; + this.table_todo.ContextMenuStrip = this.contextMenuStrip_todo; + this.table_todo.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table_todo.FullRowSelect = true; + this.table_todo.GridLines = XPTable.Models.GridLines.Rows; + this.table_todo.GridLineStyle = XPTable.Models.GridLineStyle.Dot; + this.table_todo.HeaderFont = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table_todo.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table_todo.Location = new System.Drawing.Point(6, 36); + this.table_todo.MultiSelect = true; + this.table_todo.Name = "table_todo"; + this.table_todo.NoItemsText = "当前列表没有任何提醒"; + this.table_todo.Size = new System.Drawing.Size(1087, 547); + this.table_todo.TabIndex = 43; + this.table_todo.TableModel = this.tableModel_todo; + this.table_todo.Text = "table4"; + // + // columnModel_todo + // + this.columnModel_todo.Columns.AddRange(new XPTable.Models.Column[] { + this.ColTodo_Name, + this.ColTodo_StartTime, + this.ColTodo_EndTime, + this.ColTodo_State}); + // + // ColTodo_Name + // + this.ColTodo_Name.Editable = false; + this.ColTodo_Name.Tag = null; + this.ColTodo_Name.Text = "待办事项"; + this.ColTodo_Name.Width = 300; + // + // ColTodo_StartTime + // + this.ColTodo_StartTime.Editable = false; + this.ColTodo_StartTime.Tag = null; + this.ColTodo_StartTime.Text = "开始时间"; + this.ColTodo_StartTime.Width = 320; + // + // ColTodo_EndTime + // + this.ColTodo_EndTime.Editable = false; + this.ColTodo_EndTime.Tag = null; + this.ColTodo_EndTime.Text = "结束时间"; + this.ColTodo_EndTime.Width = 320; + // + // ColTodo_State + // + this.ColTodo_State.Editable = false; + this.ColTodo_State.Tag = null; + this.ColTodo_State.Text = "状态"; + this.ColTodo_State.Width = 100; + // + // contextMenuStrip_todo + // + this.contextMenuStrip_todo.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.添加待办ToolStripMenuItem, + this.修改待办ToolStripMenuItem, + this.删除待办ToolStripMenuItem, + this.toolStripMenuItem3, + this.任务作废ToolStripMenuItem, + this.任务完成ToolStripMenuItem, + this.toolStripMenuItem4, + this.查看该待办操作记录ToolStripMenuItem}); + this.contextMenuStrip_todo.Name = "contextMenuStrip_todo"; + this.contextMenuStrip_todo.Size = new System.Drawing.Size(185, 148); + // + // 添加待办ToolStripMenuItem + // + this.添加待办ToolStripMenuItem.Name = "添加待办ToolStripMenuItem"; + this.添加待办ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.添加待办ToolStripMenuItem.Text = "添加待办"; + this.添加待办ToolStripMenuItem.Click += new System.EventHandler(this.添加待办ToolStripMenuItem_Click); + // + // 修改待办ToolStripMenuItem + // + this.修改待办ToolStripMenuItem.Name = "修改待办ToolStripMenuItem"; + this.修改待办ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.修改待办ToolStripMenuItem.Text = "修改待办"; + this.修改待办ToolStripMenuItem.Click += new System.EventHandler(this.修改待办ToolStripMenuItem_Click); + // + // 删除待办ToolStripMenuItem + // + this.删除待办ToolStripMenuItem.Name = "删除待办ToolStripMenuItem"; + this.删除待办ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.删除待办ToolStripMenuItem.Text = "删除待办"; + this.删除待办ToolStripMenuItem.Click += new System.EventHandler(this.删除待办ToolStripMenuItem_Click); + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(181, 6); + // + // 任务作废ToolStripMenuItem + // + this.任务作废ToolStripMenuItem.Name = "任务作废ToolStripMenuItem"; + this.任务作废ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.任务作废ToolStripMenuItem.Text = "任务作废"; + this.任务作废ToolStripMenuItem.Click += new System.EventHandler(this.任务作废ToolStripMenuItem_Click); + // + // 任务完成ToolStripMenuItem + // + this.任务完成ToolStripMenuItem.Name = "任务完成ToolStripMenuItem"; + this.任务完成ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.任务完成ToolStripMenuItem.Text = "任务完成"; + this.任务完成ToolStripMenuItem.Click += new System.EventHandler(this.任务完成ToolStripMenuItem_Click); + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(181, 6); + // + // 查看该待办操作记录ToolStripMenuItem + // + this.查看该待办操作记录ToolStripMenuItem.Name = "查看该待办操作记录ToolStripMenuItem"; + this.查看该待办操作记录ToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + this.查看该待办操作记录ToolStripMenuItem.Text = "查看该待办操作记录"; + this.查看该待办操作记录ToolStripMenuItem.Click += new System.EventHandler(this.查看该待办操作记录ToolStripMenuItem_Click); + // + // rySearch2 + // + this.rySearch2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.rySearch2.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.rySearch2.EmptyText = "请输入搜索内容"; + this.rySearch2.Location = new System.Drawing.Point(6, 6); + this.rySearch2.Name = "rySearch2"; + this.rySearch2.Size = new System.Drawing.Size(329, 24); + this.rySearch2.TabIndex = 29; + this.rySearch2.OnSearch += new System.EventHandler(this.RySearch2_OnSearch); + // + // TabSticky + // + this.TabSticky.Controls.Add(this.table_sticky); + this.TabSticky.Controls.Add(this.rySearch_sticky); + this.TabSticky.Location = new System.Drawing.Point(1, 29); + this.TabSticky.Name = "TabSticky"; + this.TabSticky.Padding = new System.Windows.Forms.Padding(3); + this.TabSticky.Size = new System.Drawing.Size(1104, 592); + this.TabSticky.TabIndex = 4; + this.TabSticky.Text = "桌面便笺"; + this.TabSticky.UseVisualStyleBackColor = true; + // + // table_sticky + // + this.table_sticky.ColumnModel = this.columnModel_sticky; + this.table_sticky.ContextMenuStrip = this.MenuSticky; + this.table_sticky.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table_sticky.FullRowSelect = true; + this.table_sticky.GridLines = XPTable.Models.GridLines.Rows; + this.table_sticky.GridLineStyle = XPTable.Models.GridLineStyle.Dot; + this.table_sticky.HeaderFont = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table_sticky.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table_sticky.Location = new System.Drawing.Point(6, 36); + this.table_sticky.MultiSelect = true; + this.table_sticky.Name = "table_sticky"; + this.table_sticky.NoItemsText = "当前列表没有任何提醒"; + this.table_sticky.Size = new System.Drawing.Size(1087, 547); + this.table_sticky.TabIndex = 44; + this.table_sticky.TableModel = this.tableModel_sticky; + this.table_sticky.Text = "table4"; + // + // columnModel_sticky + // + this.columnModel_sticky.Columns.AddRange(new XPTable.Models.Column[] { + this.ColSticky, + this.ColStickyShow, + this.ColStickyAddTime}); + // + // ColSticky + // + this.ColSticky.Editable = false; + this.ColSticky.Tag = null; + this.ColSticky.Text = "便笺"; + this.ColSticky.Width = 400; + // + // ColStickyShow + // + this.ColStickyShow.Editable = false; + this.ColStickyShow.Tag = null; + this.ColStickyShow.Text = "是否显示"; + // + // ColStickyAddTime + // + this.ColStickyAddTime.Editable = false; + this.ColStickyAddTime.Tag = null; + this.ColStickyAddTime.Text = "添加时间"; + this.ColStickyAddTime.Width = 200; + // + // MenuSticky + // + this.MenuSticky.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.添加便笺ToolStripMenuItem, + this.修改便笺ToolStripMenuItem, + this.删除便笺ToolStripMenuItem, + this.toolStripMenuItem5, + this.在桌面显示ToolStripMenuItem, + this.关闭桌面显示ToolStripMenuItem}); + this.MenuSticky.Name = "contextMenuStrip_todo"; + this.MenuSticky.Size = new System.Drawing.Size(149, 120); + // + // 添加便笺ToolStripMenuItem + // + this.添加便笺ToolStripMenuItem.Name = "添加便笺ToolStripMenuItem"; + this.添加便笺ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.添加便笺ToolStripMenuItem.Text = "添加便笺"; + this.添加便笺ToolStripMenuItem.Click += new System.EventHandler(this.添加便笺ToolStripMenuItem_Click); + // + // 修改便笺ToolStripMenuItem + // + this.修改便笺ToolStripMenuItem.Name = "修改便笺ToolStripMenuItem"; + this.修改便笺ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.修改便笺ToolStripMenuItem.Text = "修改便笺"; + this.修改便笺ToolStripMenuItem.Visible = false; + // + // 删除便笺ToolStripMenuItem + // + this.删除便笺ToolStripMenuItem.Name = "删除便笺ToolStripMenuItem"; + this.删除便笺ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.删除便笺ToolStripMenuItem.Text = "删除便笺"; + this.删除便笺ToolStripMenuItem.Click += new System.EventHandler(this.删除便笺ToolStripMenuItem_Click); + // + // toolStripMenuItem5 + // + this.toolStripMenuItem5.Name = "toolStripMenuItem5"; + this.toolStripMenuItem5.Size = new System.Drawing.Size(145, 6); + // + // 在桌面显示ToolStripMenuItem + // + this.在桌面显示ToolStripMenuItem.Name = "在桌面显示ToolStripMenuItem"; + this.在桌面显示ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.在桌面显示ToolStripMenuItem.Text = "在桌面显示"; + this.在桌面显示ToolStripMenuItem.Click += new System.EventHandler(this.在桌面显示ToolStripMenuItem_Click); + // + // 关闭桌面显示ToolStripMenuItem + // + this.关闭桌面显示ToolStripMenuItem.Name = "关闭桌面显示ToolStripMenuItem"; + this.关闭桌面显示ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.关闭桌面显示ToolStripMenuItem.Text = "关闭桌面显示"; + this.关闭桌面显示ToolStripMenuItem.Click += new System.EventHandler(this.关闭桌面显示ToolStripMenuItem_Click); + // + // rySearch_sticky + // + this.rySearch_sticky.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.rySearch_sticky.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.rySearch_sticky.EmptyText = "请输入搜索内容"; + this.rySearch_sticky.Location = new System.Drawing.Point(6, 6); + this.rySearch_sticky.Name = "rySearch_sticky"; + this.rySearch_sticky.Size = new System.Drawing.Size(329, 24); + this.rySearch_sticky.TabIndex = 30; + this.rySearch_sticky.OnSearch += new System.EventHandler(this.RySearch_sticky_OnSearch); + // + // TabCalendar + // + this.TabCalendar.Controls.Add(this.chinaCalendar1); + this.TabCalendar.Controls.Add(this.panelEx1); + this.TabCalendar.Location = new System.Drawing.Point(1, 29); + this.TabCalendar.Name = "TabCalendar"; + this.TabCalendar.Padding = new System.Windows.Forms.Padding(3); + this.TabCalendar.Size = new System.Drawing.Size(1104, 592); + this.TabCalendar.TabIndex = 2; + this.TabCalendar.Text = "日历"; + this.TabCalendar.UseVisualStyleBackColor = true; + // + // chinaCalendar1 + // + this.chinaCalendar1.BackColor = System.Drawing.Color.White; + this.chinaCalendar1.DateTime = new System.DateTime(2019, 2, 8, 22, 34, 16, 892); + this.chinaCalendar1.HolidayFolder = "E:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\IDE\\SysDb\\" + + "Holidays"; + this.chinaCalendar1.Location = new System.Drawing.Point(40, 11); + this.chinaCalendar1.Name = "chinaCalendar1"; + this.chinaCalendar1.Size = new System.Drawing.Size(581, 585); + this.chinaCalendar1.TabIndex = 2; + this.chinaCalendar1.OnClickItem += new ryControls.ChinaCalendar.ClickItemHandler(this.ChinaCalendar1_OnClickItem); + // + // panelEx1 + // + this.panelEx1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx1.Controls.Add(this.panelEx2); + this.panelEx1.Controls.Add(this.table2); + this.panelEx1.Location = new System.Drawing.Point(667, 6); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx1.Size = new System.Drawing.Size(426, 577); + this.panelEx1.TabIndex = 1; + this.panelEx1.TileBackColor = System.Drawing.Color.White; + // + // panelEx2 + // + this.panelEx2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx2.Controls.Add(this.richTextBox1); + this.panelEx2.Location = new System.Drawing.Point(6, 312); + this.panelEx2.Name = "panelEx2"; + this.panelEx2.Padding = new System.Windows.Forms.Padding(1); + this.panelEx2.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx2.Size = new System.Drawing.Size(414, 262); + this.panelEx2.TabIndex = 7; + this.panelEx2.TileBackColor = System.Drawing.Color.White; + // + // richTextBox1 + // + this.richTextBox1.BackColor = System.Drawing.Color.White; + this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.richTextBox1.Location = new System.Drawing.Point(1, 1); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.ReadOnly = true; + this.richTextBox1.Size = new System.Drawing.Size(412, 260); + this.richTextBox1.TabIndex = 0; + this.richTextBox1.Text = ""; + // + // table2 + // + this.table2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.table2.ColumnModel = this.columnModel2; + this.table2.EnableToolTips = true; + this.table2.FullRowSelect = true; + this.table2.HeaderFont = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.table2.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table2.Location = new System.Drawing.Point(6, 3); + this.table2.Name = "table2"; + this.table2.NoItemsText = "当前列表没有任何项"; + this.table2.Size = new System.Drawing.Size(414, 303); + this.table2.TabIndex = 6; + this.table2.TableModel = this.tableModel2; + this.table2.Text = "table2"; + this.table2.CellClick += new XPTable.Events.CellMouseEventHandler(this.Table2_CellClick); + // + // columnModel2 + // + this.columnModel2.Columns.AddRange(new XPTable.Models.Column[] { + this.textColumn5, + this.ColHoliday}); + // + // textColumn5 + // + this.textColumn5.Editable = false; + this.textColumn5.Tag = null; + this.textColumn5.Text = "名称"; + // + // ColHoliday + // + this.ColHoliday.Editable = false; + this.ColHoliday.Tag = null; + this.ColHoliday.Text = "内容"; + this.ColHoliday.Width = 300; + // + // FrmTimeView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(1106, 713); + this.Controls.Add(this.chromeTabControl1); + this.Controls.Add(this.pnlTop); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmTimeView"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "提醒助手"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmTimeView_FormClosing); + this.Load += new System.EventHandler(this.FrmView_Load); + this.contextMenuStrip1.ResumeLayout(false); + this.pnlTop.ResumeLayout(false); + this.pnlTop.PerformLayout(); + this.MenuMore.ResumeLayout(false); + this.chromeTabControl1.ResumeLayout(false); + this.tabPage15.ResumeLayout(false); + this.tabPage15.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table_rest)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table3)).EndInit(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.PnlTipLine5.ResumeLayout(false); + this.PnlTipLine5.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit(); + this.PnlTipLine4.ResumeLayout(false); + this.PnlTipLine4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit(); + this.PnlTipLine3.ResumeLayout(false); + this.PnlTipLine3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); + this.PnlTipLine2.ResumeLayout(false); + this.PnlTipLine2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + this.PnlTipLine1.ResumeLayout(false); + this.PnlTipLine1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.TabTipView.ResumeLayout(false); + this.TabTipView.PerformLayout(); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.tabPage1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.table_todo)).EndInit(); + this.contextMenuStrip_todo.ResumeLayout(false); + this.TabSticky.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.table_sticky)).EndInit(); + this.MenuSticky.ResumeLayout(false); + this.TabCalendar.ResumeLayout(false); + this.panelEx1.ResumeLayout(false); + this.panelEx2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.table2)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private ryControls.rySearch rySearch1; + private MyPage.ctlMyPage ctlMyPage1; + private ryControls.ButtonEx btnDel; + private ryControls.ButtonEx btnEdit; + private ryControls.ButtonEx btnAdd; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 添加数据ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 修改数据ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除数据ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 快速提醒ToolStripMenuItem; + private ryControls.ButtonEx BtnQuickAdd; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.Panel pnlTop; + private System.Windows.Forms.LinkLabel LnkSetting; + private ryControls.LabelTx labelTx1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem 启用提醒ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 禁用提醒ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 复制提醒ToolStripMenuItem; + private ryControls.CtlTreeView ctlTreeView1; + private System.Windows.Forms.ImageList imageList1; + private System.Windows.Forms.SplitContainer splitContainer1; + private XPTable.Models.Table table1; + private XPTable.Models.TableModel tableModel1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn textColumn1; + private XPTable.Models.TextColumn textColumn2; + private XPTable.Models.TextColumn textColumn3; + private XPTable.Models.TextColumn textColumn4; + private System.Windows.Forms.LinkLabel LblAbout; + private System.Windows.Forms.CheckBox ChkNoShow; + private ryControls.ButtonEx BtnMore; + private System.Windows.Forms.ContextMenuStrip MenuMore; + private System.Windows.Forms.ToolStripMenuItem 按下次提醒时间排序ToolStripMenuItem; + private System.Windows.Forms.TabPage tabPage15; + private System.Windows.Forms.Label LblTime; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Label LblDate; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label LblLunarDate; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel PnlTipLine5; + private System.Windows.Forms.Label LblTipTime5; + private System.Windows.Forms.PictureBox pictureBox6; + private System.Windows.Forms.Label LblTipLine5; + private System.Windows.Forms.Panel PnlTipLine4; + private System.Windows.Forms.Label LblTipTime4; + private System.Windows.Forms.PictureBox pictureBox5; + private System.Windows.Forms.Label LblTipLine4; + private System.Windows.Forms.Panel PnlTipLine3; + private System.Windows.Forms.Label LblTipTime3; + private System.Windows.Forms.PictureBox pictureBox4; + private System.Windows.Forms.Label LblTipLine3; + private System.Windows.Forms.Panel PnlTipLine2; + private System.Windows.Forms.Label LblTipTime2; + private System.Windows.Forms.PictureBox pictureBox3; + private System.Windows.Forms.Label LblTipLine2; + private System.Windows.Forms.Panel PnlTipLine1; + private System.Windows.Forms.Label LblTipTime1; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.Label LblTipLine1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label LblNextRestTime; + private System.Windows.Forms.Label label7; + private ryControls.PanelEx panelEx1; + private ryControls.ChinaCalendar chinaCalendar1; + private XPTable.Models.Table table2; + private XPTable.Models.ColumnModel columnModel2; + private XPTable.Models.TextColumn textColumn5; + private XPTable.Models.TextColumn ColHoliday; + private XPTable.Models.TableModel tableModel2; + private ryControls.PanelEx panelEx2; + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Panel panel1; + private XPTable.Models.Table table3; + private XPTable.Models.ColumnModel CM_LatelyHoliday; + private XPTable.Models.TextColumn textColumn6; + private XPTable.Models.TextColumn textColumn7; + private XPTable.Models.TableModel TM__LatelyHoliday; + private System.Windows.Forms.Label label17; + public ryControls.ChromeTabControl chromeTabControl1; + public System.Windows.Forms.TabPage TabTipView; + public System.Windows.Forms.TabPage TabCalendar; + private XPTable.Models.Table table_rest; + private XPTable.Models.ColumnModel columnModel_rest; + private XPTable.Models.TextColumn ColTime; + private XPTable.Models.TextColumn ColMode; + private XPTable.Models.TableModel tableModel_rest; + private System.Windows.Forms.Label LblGetRestRecord; + private System.Windows.Forms.TabPage tabPage1; + private XPTable.Models.Table table_todo; + private ryControls.rySearch rySearch2; + private XPTable.Models.TableModel tableModel_todo; + private XPTable.Models.ColumnModel columnModel_todo; + private XPTable.Models.TextColumn ColTodo_Name; + private XPTable.Models.TextColumn ColTodo_StartTime; + private XPTable.Models.TextColumn ColTodo_EndTime; + private XPTable.Models.TextColumn ColTodo_State; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip_todo; + private System.Windows.Forms.ToolStripMenuItem 添加待办ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 修改待办ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除待办ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem 任务完成ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 任务作废ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; + private System.Windows.Forms.ToolStripMenuItem 查看该待办操作记录ToolStripMenuItem; + private System.Windows.Forms.TabPage TabSticky; + private XPTable.Models.Table table_sticky; + private XPTable.Models.ColumnModel columnModel_sticky; + private XPTable.Models.TextColumn ColSticky; + private XPTable.Models.TextColumn ColStickyShow; + private XPTable.Models.TextColumn ColStickyAddTime; + private System.Windows.Forms.ContextMenuStrip MenuSticky; + private System.Windows.Forms.ToolStripMenuItem 添加便笺ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 修改便笺ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除便笺ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem5; + private System.Windows.Forms.ToolStripMenuItem 在桌面显示ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 关闭桌面显示ToolStripMenuItem; + private XPTable.Models.TableModel tableModel_sticky; + private ryControls.rySearch rySearch_sticky; + } +} \ No newline at end of file diff --git a/Source/MyTimeClock/TimeClock/DbOp/FrmTimeView.cs b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeView.cs new file mode 100644 index 0000000..f13fda0 --- /dev/null +++ b/Source/MyTimeClock/TimeClock/DbOp/FrmTimeView.cs @@ -0,0 +1,1613 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; + +namespace TimeClock.DbOp +{ + public partial class FrmTimeView : Form + { + string orderSQL = "order by addTime desc"; + string tableName = "Dingshi"; + public FrmTimeView() + { + InitializeComponent(); + for (int i = 1; i <= 12; i++) + { + imageList1.Images.Add(i.ToString(), Itrycn_Db.GetGroupImg(i.ToString())); + } + _RestTip_On = Itrycn_Info.RestTip_On; + if (Itrycn_Info.RestTip_On) + { + LblNextRestTime.Text = DateTime.Now.AddSeconds(Itrycn_Info.Timer_index).ToString("HH:mm:ss"); + LblNextRestTime.ForeColor = Color.Blue; + } + else + { + _RestTip_On = Itrycn_Info.RestTip_On; + LblNextRestTime.Text = "未开启休息提醒"; LblNextRestTime.ForeColor = Color.Red; + } + } + #region 需要修改的内容 + private void RySearch1_OnSearch(object sender, EventArgs e) + { + //需要修改此处 + NoUpdateList = true; + LoadDb("(MsgText like @SearchText or MsgTitle like @SearchText)"); + NoUpdateList = false; + } + + private void CtlMyPage1_OnPageChange(object sender, EventArgs e) + { + #region 重新载入数据 + table1.TableModel.Rows.Clear(); + DataProvider mydb = new DataProvider(); + IDbInterface db = TimeClock.Itrycn_Db.CreateDataProvider(TimeClock.Itrycn_Db.dataType); + if (db.ConnDb(TimeClock.Itrycn_Db.SQLConnStr) == 1) + { + DataSet ds = db.ReadData(ctlMyPage1.GetSQLText, ctlMyPage1.T_Parameters); + Font font_base = table1.Font; + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = new TipInfo() { Id = row["id"].ToInt(), Enabled = row["Enabled"].ToBool(), NextTipTime = row["NextTipTime"].ToDateTime(), Modtype = row["modtype"].ToInt() } + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(row["RunTimeStr"].ToString()));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(row["MsgTitle"].ToString()));//示例 + if (!row["Enabled"].ToBool()) + { + itemList.Cells.Add(new XPTable.Models.Cell("提醒已禁用"));//示例 + itemList.ForeColor = Color.Gray; + } + else + { + bool out_run = false; + if (row["modtype"].ToInt() == TipType.tip_winstart) + { + if (row["NextTipTime"].ToDateTime() < DateTime.Now) + { + itemList.Cells.Add(new XPTable.Models.Cell("本次已执行完毕"));//示例 + out_run = true; + } + } + if (!out_run) + { + DateTime dt = row["NextTipTime"].ToDateTime(); + itemList.Cells.Add(new XPTable.Models.Cell(GetNextTipTimeStr(dt, false)));//示例 + if (row["NextTipTime"].ToDateTime() < DateTime.Now) + { + itemList.ForeColor = Color.Red; + } + } + } + int EarlierMinute = row["EarlierMinute"].ToInt(); + string attr = ""; + #region 提前提醒 + if (EarlierMinute != 0) + { + if (EarlierMinute < 60) + { + attr += "提前" + EarlierMinute + "分钟"; + } + else if (EarlierMinute < 60 * 24) + { + attr += "提前" + EarlierMinute / 60 + "小时"; + } + else + { + attr += "提前" + EarlierMinute / 60 / 24 + "天"; + } + } + #endregion + itemList.Cells.Add(new XPTable.Models.Cell(attr.Trim(), Color.Gray, Color.White, font_base));//示例 + table1.TableModel.Rows.Add(itemList); + } + db.Free(); + } + #endregion + } + string[] week_day = { "日", "一", "二", "三", "四", "五", "六", "日" }; + private string GetNextTipTimeStr(DateTime dt, bool convert_day) + { + string dt_str = dt.ToString("yyyy-MM-dd dddd HH:mm"); + if (dt.Date == DateTime.Now.Date) { dt_str = "今天 " + dt.ToString("HH:mm"); } + else if (dt.Date == DateTime.Now.Date.AddDays(1)) { dt_str = "明天 " + dt.ToString("HH:mm"); } + else if (dt.Date == DateTime.Now.Date.AddDays(2)) { dt_str = "后天 " + dt.ToString("HH:mm"); } + else if (dt.Date == DateTime.Now.Date.AddDays(-1)) { dt_str = "昨天 " + dt.ToString("HH:mm"); } + else if (dt.Date == DateTime.Now.Date.AddDays(-2)) { dt_str = "前天 " + dt.ToString("HH:mm"); } + else + { + var weekinfo1 = ryCommon.RyDate.GetWeekInfo(dt); + var weekinfo2 = ryCommon.RyDate.GetWeekInfo(DateTime.Now); + if (weekinfo1.startDate == weekinfo2.startDate) + { + dt_str = "本周" + week_day[dt.DayOfWeek.ToInt()] + " " + dt.ToString("HH:mm"); + } + else if (weekinfo1.startDate == weekinfo2.startDate.AddDays(7)) + { + dt_str = "下周" + week_day[dt.DayOfWeek.ToInt()] + " " + dt.ToString("HH:mm"); + } + } + var timespan = dt - DateTime.Now; + if (convert_day) + { + var TotalDays = timespan.TotalDays.ToInt(); + if (TotalDays >= 2) + { + dt_str += "(还有" + TotalDays + "天)"; + } + else if (TotalDays <= -2) + { + dt_str += "(已过去" + -TotalDays + "天)"; + } + } + var TotalMinutes = timespan.TotalMinutes.ToInt(); + if (TotalMinutes < 60 && TotalMinutes >= 0) + { + if (TotalMinutes <= 1) + { + dt_str += "(不足一分钟)"; + } + else + { + dt_str += "(还有" + TotalMinutes + "分钟)"; + } + } + else if (TotalMinutes < 600) + { + var Hour = TotalMinutes / 60; + var Minute = TotalMinutes % 60; + if (TotalMinutes < 0 && TotalMinutes>=-600) + { + if (Minute == 0) + { dt_str += "(已过去" + -Hour + "小时)"; } + else + { + dt_str += "(已过去" + -Hour + "小时" + -Minute + "分钟)"; + } + } + else if (TotalMinutes >0) + { + if (Minute == 0) + { dt_str += "(还有" + Hour + "小时)"; } + else + { + dt_str += "(还有" + Hour + "小时" + Minute + "分钟)"; + } + } + } + return dt_str; + } + /// + /// 获得最近的几个提醒 + /// + private void GetLastTipList() + { + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.SQLConnStr) == 1) + { + RyQuickSQL mySQL = new RyQuickSQL("Dingshi"); + mySQL.AddParameter("@date", DateTime.Now); + mySQL.AddParameter("@enddate", DateTime.Now.AddDays(7)); + DataSet ds = db.ReadData("select * from Dingshi where NextTipTime>=@date and NextTipTime<@enddate and Enabled=1 and NoShow<>1 and TipClose=0 order by NextTipTime asc limit 5", mySQL); + if (!mydb.HaveData(ds)) + { + //BtnNoTip.Visible = true; + } + else + { + // BtnNoTip.Visible = false; + } + int icount = 0; + List