3.6.2 复 选 框 值 映 射 列 表 单 元 格 按 钮 掩 码 验 证 自 定 义 编 辑 器 编 辑 模 式 合 并 单 元

Size: px
Start display at page:

Download "3.6.2 复 选 框 值 映 射 列 表 单 元 格 按 钮 掩 码 验 证 自 定 义 编 辑 器 编 辑 模 式 合 并 单 元"

Transcription

1 目 录 1. WinForms 平 台 中 FlexGrid 的 快 速 启 动 第 一 步 : 为 WinForms 应 用 程 序 创 建 FlexGrid 第 二 步 : 将 C1FlexGrid 控 件 绑 定 到 一 个 数 据 源 第 三 步 : 自 定 义 C1FlexGrid 设 置 设 计 时 支 持 C1FlexGrid 编 辑 器 C1FlexGrid 列 编 辑 器 C1FlexGrid 样 式 编 辑 器 标 题 样 式 和 列 样 式 C1FlexGrid 智 能 标 签 C1FlexGrid 任 务 菜 单 列 任 务 菜 单 使 用 C1FlexGrid 控 件 行 和 列 列 宽 度 单 元 格 选 择 单 元 格 区 域 单 元 格 图 像 设 置 单 元 格 格 式 单 元 格 的 内 容 单 元 格 的 外 观 有 条 件 地 设 置 格 式 自 绘 单 元 格 编 辑 单 元 格 列 表 和 组 合 产 品 网 站 : 咨 询 热 线 : of 269

2 3.6.2 复 选 框 值 映 射 列 表 单 元 格 按 钮 掩 码 验 证 自 定 义 编 辑 器 编 辑 模 式 合 并 单 元 格 合 并 表 头 合 并 后 的 数 据 视 图 溢 出 文 本 自 定 义 合 并 概 述 和 汇 总 数 据 创 建 分 类 汇 总 创 建 自 定 义 树 型 图 用 C1FlexGrid 控 件 来 创 建 大 纲 和 树 型 图 大 纲 树 型 图 添 加 分 类 汇 总 使 用 分 类 汇 总 方 法 大 纲 维 护 使 用 节 点 类 保 存 加 载 和 打 印 保 存 和 载 入 表 格 到 文 本 文 件 保 存 和 加 载 Microsoft Excel 文 件 从 数 据 库 中 载 入 表 格 打 印 表 格 C1FlexGrid 过 滤 产 品 网 站 : 咨 询 热 线 : of 269

3 允 许 过 滤 属 性 程 序 化 地 管 理 过 滤 器 程 序 化 地 应 用 过 滤 器 自 定 义 过 滤 器 的 行 为 自 定 义 UI 过 滤 C1FlexGrid 的 属 性 组 数 据 绑 定 绑 定 到 数 据 源 存 储 和 检 索 数 据 FlexGrid for WinForms 示 例 FlexGrid for WinForms 教 程 编 辑 教 程 步 骤 1/6: 为 这 个 编 辑 教 程 创 建 一 个 C1FlexGrid 控 件 步 骤 2/6: 设 置 列 的 类 型 和 格 式 步 骤 3/6: 纳 入 下 拉 列 表 步 骤 4/6: 添 加 数 据 验 证 步 骤 5/6: 添 加 剪 贴 板 的 支 持 步 骤 6/6: 包 含 一 个 自 定 义 编 辑 器 大 纲 教 程 步 骤 1/5: 创 建 控 件 步 骤 2/5: 读 取 数 据 并 创 建 大 纲 步 骤 3/5: 添 加 自 定 义 的 鼠 标 和 键 盘 处 理 步 骤 4/5: 允 许 / 阻 止 编 辑 步 骤 5/5: 实 现 工 具 提 示 数 据 分 析 教 程 步 骤 1/4: 为 数 据 分 析 教 程 创 建 C1FlexGrid 控 件 步 骤 2/4: 初 始 化 和 填 充 表 格 产 品 网 站 : 咨 询 热 线 : of 269

4 6.3.3 步 骤 3/4: 允 许 自 动 排 序 步 骤 4/4: 添 加 合 计 和 大 纲 树 FlexGrid For WinForms 中 基 于 任 务 的 帮 助 访 问 C1FlexGrid 编 辑 器 访 问 C1FlexGrid 列 编 辑 器 访 问 C1FlexGrid 样 式 编 辑 器 向 单 元 格 中 添 加 图 片 和 文 本 向 固 定 列 中 添 加 行 号 向 标 题 行 添 加 三 维 文 字 使 用 内 置 的 样 式 向 标 题 行 添 加 三 维 文 字 添 加 ToolTips 用 来 显 示 UserData 列 上 的 UserData ToolTips 单 元 格 区 域 中 的 UserData ToolTips 单 元 格 样 式 中 的 UserData ToolTips 行 上 的 UserData ToolTips 单 一 单 元 格 上 的 UserData ToolTips 为 一 个 单 元 格 区 域 应 用 渐 变 背 景 色 在 表 格 中 改 变 列 的 顺 序 根 据 值 过 滤 根 据 条 件 过 滤 更 改 过 滤 器 语 言 清 除 树 视 图 清 除 C1FlexGrid 清 除 内 容 清 除 样 式 清 除 UserData 清 除 内 容 样 式 和 UserData 产 品 网 站 : 咨 询 热 线 : of 269

5 7.13 将 列 上 的 字 母 转 换 为 大 写 字 母 使 用 视 觉 样 式 来 自 定 义 外 观 只 在 单 元 格 中 输 入 数 字 格 式 化 单 元 格 将 单 元 格 设 置 为 只 读 将 单 元 格 格 式 化 为 显 示 十 进 制 内 容 基 于 内 容 格 式 化 单 元 格 格 式 化 边 框 样 式 格 式 化 控 件 的 边 框 样 式 格 式 化 显 示 表 格 的 边 框 样 式 冻 结 行 和 列 读 取 和 保 存 Open XML 文 件 用 数 据 填 充 一 个 非 绑 定 的 表 格 用 数 据 填 充 一 列 用 数 据 填 充 一 个 单 元 格 区 域 用 数 据 填 充 一 行 用 数 据 填 充 一 个 单 元 格 限 制 表 格 的 编 辑 在 整 个 表 格 内 禁 止 编 辑 禁 止 某 一 列 的 编 辑 禁 止 某 一 行 的 编 辑 限 制 一 列 的 排 序 缩 放 图 像 在 整 个 表 格 中 缩 放 图 像 搜 寻 列 中 的 条 目 当 用 户 按 下 Delete 键 时 清 空 单 元 格 将 行 设 置 为 标 题 行 产 品 网 站 : 咨 询 热 线 : of 269

6 7.27 为 行 或 者 列 设 置 背 景 色 在 一 个 语 句 中 设 置 行 和 列 的 背 景 色 为 单 一 单 元 格 设 置 字 体 在 C1FlexGrid 中 设 置 文 本 分 隔 符 多 列 排 序 取 消 排 序 在 C1FlexGrid 中 使 用 密 码 项 隐 藏 已 经 输 入 的 字 符 在 列 头 或 者 固 定 行 换 行 WinForms 中 的 FlexGrid 关 键 技 巧 产 品 网 站 : 咨 询 热 线 : of 269

7 1. WinForms 平 台 中 FlexGrid 的 快 速 启 动 在 本 节 中, 你 将 学 到 如 下 应 用, 即 如 何 使 用 基 本 的 C1FlexGrid 功 能 来 创 建 一 个 简 单 的 表 格 本 节 并 不 是 一 个 关 于 C1FlexGrid 所 有 功 能 的 全 面 教 程, 而 是 提 供 一 种 快 速 启 动 并 突 出 强 调 一 些 常 规 的 方 法 来 使 用 这 个 产 品 至 于 更 深 入 的 教 程, 请 参 阅 FlexGrid for WinForms 教 程 本 例 中 使 用 Visual Studio 2010, 它 的 操 作 步 骤 可 能 与 其 他 版 本 的 Visual Studio 中 的 略 有 不 同 1.1 第 一 步 : 为 WinForms 应 用 程 序 创 建 FlexGrid 以 下 步 骤 将 引 导 你 创 建 一 个 简 单 的 表 格 应 用 1. 创 建 一 个 新 项 目 2. 在 窗 体 上 添 加 一 个 C1FlexGrid 控 件 3. 打 开 C1FlexGrid 任 务 菜 单 有 关 如 何 访 问 C1FlexGrid 任 务 菜 单 的 详 细 信 息 请 参 阅 C1FlexGrid 任 务 菜 单 4. 在 C1FlexGrid 任 务 菜 单 中, 单 击 停 靠 在 父 容 器 这 个 操 作 将 表 格 中 停 靠 的 属 性 设 置 为 填 充, 设 置 后 这 个 表 格 就 会 充 满 整 个 窗 体 运 行 该 程 序 一 个 简 单 的 表 格 应 用 将 会 出 现 恭 喜 你! 你 已 经 成 功 地 创 建 了 一 个 简 单 的 表 格 应 用 在 下 一 个 主 题 中, 你 将 会 学 到 如 何 将 C1FlexGrid 控 件 绑 定 到 一 个 数 据 源 上 1.2 第 二 步 : 将 C1FlexGrid 控 件 绑 定 到 一 个 数 据 源 上 文 中, 即 第 一 步 : 为 WinForms 应 用 程 序 创 建 FlexGrid 你 已 经 创 建 了 一 个 表 格 应 用 以 下 步 骤 将 引 导 你 实 现 一 个 数 据 源 与 这 个 表 格 应 用 的 绑 定 1. 打 开 C1FlexGrid 任 务 菜 单 有 关 如 何 访 问 C1FlexGrid 任 务 菜 单 的 详 细 信 息 请 参 阅 C1FlexGrid 任 务 菜 单 2. 在 C1FlexGrid 任 务 菜 单 中, 单 击 选 择 数 据 源 下 拉 箭 头 并 从 下 拉 框 中 选 择 添 加 项 目 数 据 源 链 接 3. 数 据 源 配 置 向 导 出 现 保 留 默 认 设 置, 在 选 择 数 据 源 类 型 页 面 上 选 择 数 据 库, 然 后 单 击 下 一 步 4. 在 选 择 一 个 数 据 库 模 型 页 面 上, 仍 然 保 持 选 择 数 据 库 状 态, 然 后 单 击 下 一 步 5. 单 击 新 的 连 接 按 钮 来 创 建 一 个 新 的 连 接, 或 从 下 拉 列 表 中 选 择 一 种 当 你 单 击 新 的 连 接 时, 添 加 连 接 对 话 框 出 现 6. 保 留 Microsoft Access 数 据 库 文 件 作 为 数 据 源 7. 单 击 在 数 据 库 文 件 名 下 面 的 浏 览 按 钮 在 选 择 Microsoft Access 数 据 库 文 件 对 话 框 中, 浏 览 如 下 地 址 C:\Documents and Settings\< 用 户 名 >\My Documents\ComponentOne Samples\Common (Windows XP) or C:\Users\< 用 户 名 >\Documents\ComponentOne 产 品 网 站 : 咨 询 热 线 : of 269

8 Samples\Common (Vista) 目 录 中 的 NWind.mdb 数 据 库 选 择 NWind.mdb 文 件, 并 单 击 打 开 8. 在 添 加 连 接 的 对 话 框 中, 单 击 测 试 连 接 按 钮 以 便 确 认 你 已 经 成 功 地 连 接 上 了 数 据 库 或 服 务 器, 然 后 单 击 确 定 9. 再 一 次 单 击 确 定 来 关 闭 添 加 连 接 的 对 话 框 10. 单 击 下 一 步 按 钮 来 继 续 操 作 会 出 现 一 个 对 话 框 来 询 问 你 是 否 想 添 加 这 个 数 据 库 文 件 到 你 的 项 目 并 修 改 连 接 字 符 串 如 果 不 需 要 复 制 这 个 数 据 库 到 你 的 项 目, 请 单 击 否 11. 在 此 应 用 程 序 的 配 置 文 件 中 通 过 选 择 是 的, 将 此 连 接 另 存 为 来 保 存 连 接 字 符 串, 并 输 入 一 个 名 称 单 击 下 一 步 按 钮 来 继 续 操 作 12. 在 选 择 数 据 库 对 象 页 面 上, 展 开 表 格 节 点, 并 选 择 产 品 表 在 数 据 集 名 称 栏 中 输 入 产 品 数 据 集, 之 后 单 击 完 成 来 退 出 向 导 13. 这 样, 一 个 数 据 集 和 连 接 字 符 串 就 被 添 加 到 你 的 项 目 里 了 除 此 之 外,Visual Studio 会 自 动 创 建 以 下 代 码 来 填 充 这 个 数 据 集 : Visual Basic Me.ProductsTableAdapter.Fill(Me.ProductsDS.Products) C# this.productstableadapter.fill(this.productsds.products); 运 行 该 程 序 并 遵 守 以 下 规 定 : 请 注 意, 产 品 表 中 的 数 据 会 反 映 在 表 格 产 品 网 站 : 咨 询 热 线 : of 269

9 恭 喜 你! 你 已 经 将 一 个 表 格 应 用 成 功 地 绑 定 在 了 一 个 数 据 源 上 在 下 一 个 标 题 中, 你 将 会 学 到 如 何 自 定 义 格 式 字 符 串, 视 觉 样 式 和 内 置 样 式 1.3 第 三 步 : 自 定 义 C1FlexGrid 设 置 以 下 步 骤 将 引 导 你 实 现 表 格 中 格 式 字 符 串, 视 觉 样 式 和 内 置 样 式 的 设 置 1. 向 左 拖 动 出 现 在 第 一 列 标 题 右 边 缘 的 水 平 双 箭 头, 直 到 可 以 看 见 单 价 这 一 列, 以 此 来 调 整 表 格 中 的 第 一 列 2. 单 击 单 价 这 一 列 来 打 开 列 任 务 菜 单 3. 单 击 格 式 字 符 串 文 本 框 旁 边 的 省 略 号 按 钮 来 打 开 格 式 字 符 串 对 话 框 4. 在 格 式 字 符 串 对 话 框 中, 选 择 格 式 类 型 下 面 的 货 币 然 后, 单 击 确 定 产 品 网 站 : 咨 询 热 线 : of 269

10 5. 在 属 性 窗 口 中, 找 到 视 觉 样 式 属 性, 并 将 其 设 置 为 Office2007Blue 6. 打 开 C1FlexGrid 任 务 菜 单 由 于 我 们 上 次 曾 经 使 用 任 务 菜 单 来 编 辑 了 一 列, 列 任 务 菜 单 就 会 出 现 选 择 C1FlexGrid 任 务 菜 单 来 返 回 到 C1FlexGrid 任 务 菜 单 7. 在 C1FlexGrid 任 务 菜 单 上, 选 择 样 式 来 打 开 C1FlexGrid 样 式 编 辑 器 ( 第 27 页 ) 8. 在 内 置 样 式 下 面 的 C1FlexGrid 样 式 编 辑 器 中, 选 择 已 修 订 9. 在 右 窗 格 中 展 开 字 体 节 点, 并 且 把 粗 体 的 属 性 设 置 为 真 10. 在 网 站 标 签 上 将 前 景 色 的 属 性 设 置 为 矢 车 菊 蓝, 然 后 单 击 确 定 来 关 闭 对 话 框 运 行 该 程 序 并 遵 守 以 下 规 定 : 这 个 表 格 的 应 用 程 序 就 会 用 格 式 字 符 串, 视 觉 样 式 和 内 置 样 式 来 显 示 一 个 产 品 表 恭 喜 你! 你 已 经 成 功 地 设 置 了 一 个 表 格 的 格 式 字 符 串, 视 觉 样 式, 以 及 内 置 样 式 关 于 快 速 启 动 的 介 绍 到 此 结 束 产 品 网 站 : 咨 询 热 线 : of 269

11 2. 设 计 时 支 持 在 设 计 时 使 用 Visual Studio 中 的 属 性 表 格, 菜 单 和 设 计 器, 你 可 以 轻 松 地 实 现 ComponentOne FlexGrid for WinForms 配 置 以 下 各 节 描 述 了 如 何 使 用 C1FlexGrid 的 设 计 时 环 境 来 配 置 C1FlexGrid 控 件 2.1 C1FlexGrid 编 辑 器 C1FlexGrid 列 编 辑 器 和 C1FlexGrid 样 式 编 辑 器, 利 用 这 两 个 设 计 时 编 辑 器, 你 可 以 控 制 C1FlexGrid 的 布 局 和 外 观 除 此 之 外, 利 用 标 题 样 式 和 列 样 式 这 两 个 设 计 时 编 辑 器 你 可 以 改 变 一 个 特 定 的 标 题 或 列 的 外 观 C1FlexGrid 列 编 辑 器 只 要 你 愿 意, 你 就 可 以 在 设 计 时 就 设 置 好 表 格 列, 而 不 是 靠 编 写 代 码 来 执 行 这 一 步 操 作 要 访 问 设 计 器 你 可 以 通 过 以 下 三 种 途 经 中 的 任 意 一 种 : 在 设 计 视 图 中 选 择 表 格, 进 入 属 性 窗 口, 然 后 单 击 一 下 COLS 属 性 旁 边 的 省 略 号 按 钮 (...) 右 键 单 击 此 控 件, 并 在 上 下 文 菜 单 中 选 择 设 计 器 单 击 表 格 右 上 角 的 智 能 标 签 (), 并 从 C1FlexGrid 任 务 菜 单 中 选 择 设 计 器 这 将 使 列 编 辑 器 显 示 如 下 图 所 示 : 在 绑 定 模 式 下, 编 辑 器 可 用 于 选 择 应 显 示 在 数 据 源 中 的 如 下 区 域, 它 们 的 产 品 网 站 : 咨 询 热 线 : of 269

12 顺 序, 列 标 题, 宽 度 和 对 齐 在 未 绑 定 模 式 下, 编 辑 器 也 可 以 用 来 选 择 列 数 据 类 型 编 辑 器 允 许 您 执 行 以 下 操 作 : 将 列 重 新 排 序 : 你 可 以 通 过 用 鼠 标 拖 动 标 题 单 元 格 来 将 所 选 择 的 列 移 动 到 新 的 位 置 调 整 列 宽 : 你 可 以 通 过 用 鼠 标 拖 动 标 题 单 元 格 的 右 边 缘 来 调 整 列 宽 你 也 可 以 通 过 按 住 SHIFT 键 并 单 击 标 题 单 元 格 来 选 择 多 列, 然 后, 一 次 性 地 使 用 属 性 窗 口 来 设 置 所 有 列 的 宽 度 比 如 将 设 置 为 -1 的 列 宽 度 恢 复 到 默 认 宽 度 设 置 列 属 性 : 每 当 选 择 了 一 个 或 多 个 的 列, 你 都 可 以 在 编 辑 器 左 侧 的 属 性 表 格 中 看 到 并 编 辑 其 属 性 插 入 或 删 除 列 : 使 用 工 具 栏 在 所 选 位 置 之 前 或 之 后 插 入 列 ( 大 多 在 绑 定 模 式 下 比 较 实 用 ), 或 删 除 列 使 用 工 具 栏 来 执 行 常 规 任 务 : 以 下 列 表 分 别 描 述 了 工 具 栏 中 各 个 按 钮 的 功 能 : 按 钮 描 述 字 体 : 在 下 拉 列 表 中 设 置 所 选 定 的 字 体 字 号 : 在 下 拉 列 表 中 设 置 所 选 定 的 字 体 大 小 字 体 格 式 : 可 将 粗 体, 斜 体 或 下 划 线 这 几 种 字 体 应 用 于 所 选 文 字 字 体 水 平 对 齐 : 可 将 字 体 对 齐 设 置 为 居 左, 居 中, 居 右 或 常 规 字 体 垂 直 对 齐 : 将 列 的 内 容 对 齐 到 顶 端, 居 中 或 底 部 这 些 按 钮 仅 仅 会 影 响 到 表 格 的 滚 动 区 域 要 想 设 置 标 题 列 的 对 齐 的 话, 请 选 择 列, 并 设 置 TextAlignFixed 的 属 性 背 景 色 : 可 以 用 于 所 选 列 的 背 景 色 的 设 置 前 景 色 : 可 以 用 于 所 选 列 的 前 景 色 的 设 置 适 用 于 固 定 行 : 可 将 此 设 置 应 产 品 网 站 : 咨 询 热 线 : of 269

13 用 于 固 定 行 帮 助 : 用 于 显 示 或 隐 藏 对 所 选 定 的 属 性 的 描 述 撤 消 : 取 消 所 有 更 改, 将 表 格 列 恢 复 到 它 们 原 本 的 状 态 自 动 调 整 : 当 表 格 被 绑 定 到 一 个 数 据 源 时, 用 它 来 判 断 表 格 是 否 应 自 动 调 整 所 有 列 来 适 应 其 内 容 从 数 据 源 上 重 新 加 载 : 用 从 当 前 数 据 源 上 得 来 的 信 息 来 对 所 有 列 进 行 重 置 当 表 格 被 绑 定 到 一 个 数 据 源 上 并 且 你 想 要 从 头 开 始 编 辑 时, 这 个 按 钮 非 常 有 用 当 表 格 未 被 绑 定 到 一 个 数 据 源 上 时, 此 按 钮 被 禁 用 选 定 的 列 : 可 用 于 从 下 拉 列 表 中 选 择 当 前 列 插 入 列 : 在 所 选 定 的 位 置 左 边 或 者 右 边 插 入 列 删 除 列 : 删 除 所 选 列 列 的 宽 度 : 将 所 选 定 的 所 有 列 的 列 宽 设 置 为 相 同 的 宽 度, 较 之 以 前 更 宽 或 更 窄 切 换 显 示 : 显 示 或 隐 藏 列 取 消 隐 藏 所 有 列 : 使 所 有 列 可 见 显 示 隐 藏 列 : 显 示 隐 藏 列 如 果 你 将 列 的 可 见 属 性 更 改 为 假, 它 就 会 被 隐 藏, 因 此, 你 将 无 法 用 鼠 标 来 选 择 它 这 时 候 使 用 这 个 按 钮 就 可 以 显 示 所 有 隐 藏 的 列, 以 便 你 可 以 选 择 和 编 辑 它 们 用 这 个 工 具 来 判 断 所 选 定 的 列 产 品 网 站 : 咨 询 热 线 : of 269

14 的 属 性 应 该 按 分 类 显 示 还 是 按 字 母 顺 序 显 示 C1FlexGrid 样 式 编 辑 器 只 要 你 愿 意, 你 就 可 以 在 设 计 时 就 设 置 好 样 式, 而 不 是 靠 编 写 代 码 来 执 行 这 一 步 操 作 要 访 问 C1FlexGrid 样 式 编 辑 器 你 可 以 通 过 以 下 三 种 途 经 中 的 任 意 一 种 : 选 择 表 格, 进 入 属 性 窗 口, 然 后 单 击 一 下 样 式 属 性 旁 边 的 省 略 号 按 钮 右 键 单 击 表 格, 并 从 上 下 文 菜 单 中 选 择 样 式 单 击 表 格 右 上 角 的 智 能 标 签 (), 并 从 C1FlexGrid 任 务 菜 单 中 选 择 样 式 这 时, 表 格 将 会 弹 出 C1FlexGrid 样 式 编 辑 器 的 对 话 框 样 式 编 辑 器 可 以 让 你 修 改 现 有 的 样 式, 并 添 加 一 些 新 的 自 定 义 的, 这 些 以 后 也 许 会 被 分 配 到 单 元 格 行 和 列 使 用 添 加 按 钮 来 添 加 一 个 自 定 义 样 式 你 可 以 看 到 你 新 添 加 的 样 式 是 如 何 出 现 在 样 式 属 性 上 方 的 预 览 区 域 的 产 品 网 站 : 咨 询 热 线 : of 269

15 移 除 按 钮 可 以 删 除 所 选 定 的 自 定 义 样 式 你 可 以 通 过 在 列 表 中 选 中 它 们 并 键 入 一 个 新 的 名 称 来 重 命 名 自 定 义 样 式 清 除 按 钮 可 以 删 除 所 有 的 自 定 义 样 式, 并 且 将 内 置 样 式 恢 复 为 其 默 认 值 使 用 自 动 套 用 格 式 按 钮, 会 弹 出 一 个 二 级 对 话 框, 你 可 以 在 其 中 选 择 一 套 完 整 的 预 定 样 式 以 下 就 是 自 动 套 用 格 式 对 话 框 看 起 来 的 样 子 : 标 题 样 式 和 列 样 式 你 可 以 使 用 标 题 样 式 编 辑 器 和 列 样 式 编 辑 器, 为 一 个 选 定 的 列 来 明 确 其 标 题 文 本 和 列 中 文 本 的 属 性, 除 此 之 外, 还 分 别 包 括 对 齐, 背 景 和 边 框 标 题 样 式 和 列 样 式 编 辑 器 只 能 通 过 列 任 务 菜 单 来 访 问 如 需 列 任 务 菜 单 上 的 更 多 信 息, 请 参 阅 列 任 务 菜 单 标 题 样 式 和 列 样 式 编 辑 器 有 四 个 标 签 : 文 本, 对 齐, 背 景 和 边 框 在 将 所 有 设 置 应 用 于 表 格 之 前, 你 可 以 通 过 预 览 区 域 来 查 看 你 的 设 置 文 本 文 本 标 签 可 以 用 来 设 置 标 题 的 字 体 和 格 式 产 品 网 站 : 咨 询 热 线 : of 269

16 在 字 体 方 面 可 以 用 到 下 列 选 项 : 名 称 : 选 择 一 个 字 体 的 名 称 尺 寸 : 选 择 一 个 字 体 大 小 颜 色 : 选 择 一 个 字 体 颜 色 方 向 : 从 常 规, 向 上 或 向 下 中 选 择 字 体 效 果 : 使 用 按 钮 来 进 行 粗 体 斜 体 与 下 划 线 之 间 的 切 换, 进 行 开 启 或 关 闭 在 格 式 方 面 可 以 用 到 下 列 选 项 : 格 式 : 单 击 省 略 号 按 钮 来 打 开 格 式 字 符 串 对 话 框 有 关 格 式 字 符 串 对 话 框 的 更 多 详 细 信 息 请 参 阅 单 元 格 的 内 容 ( 第 46 页 ) 输 入 掩 码 : 单 击 省 略 号 按 钮 打 开 输 入 掩 码 对 话 框 有 关 输 入 掩 码 对 话 框 的 更 多 详 细 信 息 请 参 阅 掩 码 ( 第 58 页 ) 效 果 : 在 平 面 凸 起 或 嵌 入 中 选 择 有 关 输 入 文 本 效 果 选 项 的 更 多 详 细 信 息 请 参 阅 TextEffectEnum Enumeration 剪 裁 : 从 无 字 符 文 字 省 略 字 符 省 略 文 字 省 略 路 径 中 选 择 所 需 要 的 来 设 置 长 字 符 串 应 该 如 何 调 整 以 适 应 单 元 格 自 动 换 行 : 勾 选 这 一 栏 来 允 许 标 题 中 的 文 字 自 动 换 行 对 齐 产 品 网 站 : 咨 询 热 线 : of 269

17 对 齐 标 签 可 以 对 标 题 中 的 文 本 和 图 像 两 方 面 进 行 对 齐 设 置 在 文 本 对 齐 方 面 可 以 用 到 下 列 选 项 : 水 平 对 齐 : 单 击 以 下 按 钮 来 进 行 不 同 对 齐 之 间 的 切 换, 左 对 齐, 居 中 对 齐, 右 对 齐 和 常 规 对 齐 垂 直 对 齐 : 单 击 以 下 按 钮 来 进 行 不 同 对 齐 之 间 的 切 换, 顶 端 对 齐, 中 间 对 齐 和 底 部 对 齐 在 图 像 对 齐 方 面 可 以 用 到 下 列 选 项 : Clip: 点 击 那 些 按 钮 来 进 行 单 元 格 中 图 像 对 齐 的 切 换, 或 者 Scale, Tile, Stretch, TileStretch, 或 Hide 该 图 像 有 关 图 像 对 齐 方 面 不 同 选 项 的 更 多 详 细 信 息 请 参 阅 ImageAlignEnum Enumeration 显 示 样 本 图 像 : 勾 选 显 示 样 本 图 像 栏 来 在 预 览 区 域 中 显 示 样 本 图 像 在 显 示 区 域 可 以 用 到 下 列 选 项 : 文 本 / 图 像 间 距 : 增 加 或 减 少 该 值 来 增 加 或 减 少 文 本 和 图 像 之 间 的 间 距 量 显 示 : 在 纯 文 本 纯 图 像 覆 盖 叠 加 或 无 中 选 择 产 品 网 站 : 咨 询 热 线 : of 269

18 所 需 要 的 有 关 显 示 的 不 同 选 项 的 更 多 详 细 信 息 请 参 阅 DisplayEnum Enumeration 背 景 背 景 标 签 可 以 用 来 设 置 背 景 颜 色 和 背 景 图 片 在 背 景 颜 色 区 域 可 以 用 到 下 列 选 项 : 颜 色 : 为 一 个 单 元 格 选 择 一 种 背 景 颜 色 在 背 景 图 片 区 域 可 以 用 到 下 列 选 项 : 图 像 : 单 击 选 择 按 钮 来 选 择 一 个 图 像 或 单 击 清 除 按 钮 来 删 除 一 个 图 像 布 局 : 可 用 于 在 Scale, Tile, Stretch, TileStretch 或 隐 藏 之 间 进 行 切 换 边 框 边 框 标 签 可 以 用 于 设 置 边 框 与 页 边 距 产 品 网 站 : 咨 询 热 线 : of 269

19 在 边 框 区 域 可 以 用 到 下 列 选 项 : 样 式 : 包 括 以 下 选 项, 无 平 面 重 叠 凸 起 嵌 入 凹 槽, 袋 状 或 点 状 有 关 边 框 样 式 不 同 选 项 的 详 细 信 息, 请 参 阅 C1.Win.C1FlexGrid.BorderStyleEnum Enumeration 宽 度 : 增 加 或 减 少 该 值 来 扩 大 或 缩 小 边 框 的 宽 度 颜 色 : 给 边 框 选 择 一 个 颜 色 方 向 : 包 括 如 下 选 项, 水 平 垂 直 均 有 水 平 或 垂 直 有 关 边 框 方 向 不 同 选 项 的 详 细 信 息, 请 参 阅 BorderDirEnum Enumeration 在 页 边 距 区 域 可 以 用 到 下 列 选 项 : 左 边 : 增 加 或 减 少 该 值 来 扩 大 或 缩 小 左 边 的 页 边 距 顶 端 : 增 加 或 减 少 该 值 来 扩 大 或 缩 小 顶 端 的 页 边 距 右 边 : 增 加 或 减 少 该 值 来 扩 大 或 缩 小 右 边 的 页 边 距 底 部 : 增 加 或 减 少 该 值 来 扩 大 或 缩 小 底 部 的 页 边 距 产 品 网 站 : 咨 询 热 线 : of 269

20 2.2 C1FlexGrid 智 能 标 签 智 能 标 签 () 代 表 着 捷 径 任 务 菜 单, 可 以 提 供 控 件 中 最 常 用 的 几 种 属 性 C1FlexGrid 中 通 过 智 能 标 签 提 供 了 两 个 任 务 菜 单,C1FlexGrid 任 务 菜 单 ( 第 34 页 ) 和 列 任 务 菜 单 ( 第 36 页 ) C1FlexGrid 任 务 菜 单 在 C1FlexGrid 任 务 菜 单 中, 你 可 以 快 速 访 问 C1FlexGrid 列 编 辑 器 和 C1FlexGrid 样 式 编 辑 器, 以 及 设 置 以 下 属 性 : 允 许 添 加 新 建 允 许 删 除 允 许 编 辑 和 允 许 拖 动 要 进 入 C1FlexGrid 任 务 菜 单, 只 需 要 单 击 表 格 右 上 角 的 智 能 标 签 () 这 步 操 作 就 可 以 打 开 C1FlexGrid 任 务 菜 单 选 择 数 据 源 在 选 择 数 据 源 对 话 框 中 单 击 下 拉 箭 头 就 会 打 开 一 个 可 用 的 数 据 源 的 列 表, 并 且 允 许 你 自 己 添 加 一 个 新 的 数 据 源 要 想 将 一 个 新 的 数 据 源 添 加 到 项 目, 需 要 单 击 添 加 项 目 数 据 源 来 打 开 数 据 源 配 置 向 导 有 关 如 何 将 一 个 新 的 数 据 源 添 加 到 项 目 的 详 细 信 息, 请 参 阅 绑 定 到 数 据 源 ( 第 95 页 ) 启 用 添 加 行 选 择 启 用 添 加 行 复 选 框, 将 允 许 添 加 新 建 的 属 性 设 置 为 真, 并 且 允 许 添 加 新 的 行 到 表 格 默 认 设 为 未 被 选 中 启 用 删 除 行 选 择 启 用 删 除 行 复 选 框, 将 允 许 删 除 的 属 性 设 置 为 真, 并 且 产 品 网 站 : 咨 询 热 线 : of 269

21 允 许 从 表 格 中 删 除 行 默 认 设 为 未 被 选 中 启 用 编 辑 选 择 启 用 编 辑 复 选 框, 将 允 许 编 辑 的 属 性 设 置 为 真, 并 且 允 许 在 表 格 中 进 行 编 辑 默 认 设 为 被 选 中 启 用 列 重 新 排 序 选 择 启 用 列 重 新 排 序 复 选 框, 将 允 许 拖 动 的 属 性 设 置 为 列, 并 且 允 许 在 表 格 中 对 列 进 行 拖 动 默 认 设 为 被 选 中 显 示 隐 藏 的 列 选 择 显 示 隐 藏 的 列 复 选 框, 将 隐 藏 列 的 可 见 性 属 性 设 置 为 真, 并 显 示 它 们 默 认 设 为 未 被 选 中 设 计 器 单 击 设 计 器 来 打 开 C1FlexGrid 列 编 辑 器 有 关 如 何 使 用 C1FlexGrid 列 编 辑 器 来 对 列 进 行 编 辑 的 详 细 信 息, 请 参 阅 C1FlexGrid 列 编 辑 器 ( 第 25 页 ) 样 式 单 击 样 式 来 打 开 C1FlexGrid 样 式 编 辑 器 产 品 网 站 : 咨 询 热 线 : of 269

22 有 关 如 何 使 用 C1FlexGrid 样 式 编 辑 器 来 自 定 义 单 元 格 的 外 观 的 更 多 详 细 信 息, 请 参 阅 C1FlexGrid 样 式 编 辑 器 ( 第 27 页 ) 列 任 务 单 击 列 任 务 来 打 开 列 任 务 菜 单 有 关 列 任 务 菜 单 的 更 多 详 细 信 息, 请 参 阅 列 任 务 菜 单 ( 第 36 页 ) 关 于 C1FlexGrid 点 击 关 于 C1FlexGrid 来 显 示 关 于 ComponentOne C1FlexGrid 对 话 框, 这 对 找 到 C1FlexGrid 的 版 本 号 是 有 帮 助 的 停 靠 在 父 容 器 / 取 消 停 靠 在 父 容 器 点 击 停 靠 在 父 容 器 来 将 C1FlexGrid 的 停 靠 属 性 设 置 为 填 充 如 果 C1FlexGrid 已 经 停 靠 在 父 容 器, 取 消 C1FlexGrid 停 靠 在 父 容 器 这 个 选 项 是 可 用 的 单 击 取 消 停 靠 在 父 容 器 来 将 C1FlexGrid 的 停 靠 属 性 设 置 为 无 产 品 网 站 : 咨 询 热 线 : of 269

23 2.2.2 列 任 务 菜 单 列 任 务 菜 单 允 许 你 对 一 个 列 的 列 标 题 数 据 字 段 数 据 类 型 编 辑 掩 码 格 式 字 符 串 和 组 合 列 表 进 行 设 置, 并 可 以 设 置 以 下 属 性 : 允 许 排 序 允 许 编 辑 允 许 调 整 允 许 拖 动 允 许 合 并 以 及 可 见 性 要 访 问 列 任 务 菜 单, 可 以 通 过 一 下 两 种 方 式, 或 点 击 表 格 中 的 列, 或 从 C1FlexGrid 任 务 菜 单 中 选 择 列 任 务 列 标 题 在 列 标 题 对 话 框 中 输 入 一 个 标 题 来 对 这 一 列 的 标 题 属 性 进 行 设 置 数 据 字 段 在 数 据 字 段 对 话 框 中 单 击 下 拉 箭 头 来 打 开 一 个 数 据 源 中 的 可 用 字 段 的 列 表 数 据 类 型 在 数 据 类 型 对 话 框 中 单 击 下 拉 箭 头 来 打 开 一 个 的 可 用 数 据 类 型 的 列 表 编 辑 掩 码 在 编 辑 掩 码 对 话 框 中 单 击 省 略 号 按 钮 来 打 开 输 入 掩 码 对 话 框 格 式 字 符 串 在 格 式 字 符 串 对 话 框 中 单 击 省 略 号 按 钮 来 打 开 格 式 字 符 串 对 话 框 组 合 列 表 在 组 合 列 表 对 话 框 中 单 击 省 略 号 按 钮 来 打 开 组 合 列 表 对 话 框 允 许 排 序 选 择 允 许 排 序 复 选 框, 将 允 许 排 序 属 性 设 置 为 真, 并 允 许 在 该 列 进 行 排 序 默 认 设 为 被 选 中 允 许 编 辑 选 择 允 许 编 辑 复 选 框, 将 允 许 编 辑 属 性 设 置 为 真, 并 允 许 在 该 列 进 行 编 辑 默 认 设 为 被 选 中 允 许 调 整 选 择 允 许 调 整 复 选 框, 将 允 许 调 整 属 性 设 置 为 真, 并 允 许 在 该 列 进 行 调 整 默 认 设 为 被 选 中 允 许 拖 动 选 择 允 许 拖 动 复 选 框, 将 允 许 拖 动 属 性 设 置 为 真, 并 允 许 在 该 列 进 行 拖 动 默 认 设 为 被 选 中 产 品 网 站 : 咨 询 热 线 : of 269

24 允 许 合 并 选 择 允 许 合 并 复 选 框, 将 允 许 合 并 属 性 设 置 为 真, 并 允 许 在 该 列 进 行 合 并 默 认 设 为 被 选 中 可 见 性 选 择 可 见 性 复 选 框, 将 可 见 性 属 性 设 置 为 真, 并 允 许 该 列 在 表 格 中 可 见 默 认 设 为 被 选 中 标 题 样 式 单 击 标 题 样 式 来 打 开 所 选 列 的 标 题 样 式 编 辑 器, 它 允 许 你 指 定 标 题 文 本 的 属 性, 包 括 对 齐, 背 景 和 边 框 列 样 式 单 击 列 样 式 来 打 开 所 选 列 的 列 样 式 编 辑 器, 它 允 许 你 指 定 该 列 的 属 性, 包 括 对 齐, 背 景 和 边 框 C1FlexGrid 任 务 单 击 C1FlexGrid 任 务, 你 可 以 返 回 到 C1FlexGrid 任 务 菜 单 有 关 C1FlexGrid 任 务 菜 单 的 详 细 信 息, 请 参 阅 C1FlexGrid 任 务 菜 单 停 靠 在 父 容 器 / 取 消 停 靠 在 父 容 器 点 击 停 靠 在 父 容 器 来 将 C1FlexGrid 的 停 靠 属 性 设 置 为 填 充 如 果 C1FlexGrid 已 经 停 靠 在 父 容 器, 取 消 C1FlexGrid 停 靠 在 父 容 器 这 个 选 项 是 可 用 的 单 击 取 消 停 靠 在 父 容 器 来 将 C1FlexGrid 的 停 靠 属 性 设 置 为 无 产 品 网 站 : 咨 询 热 线 : of 269

25 3. 使 用 C1FlexGrid 控 件 你 可 以 使 用 C1FlexGrid 控 件 来 对 一 个 表 格 格 式 中 的 数 据 进 行 显 示, 编 辑, 组 和 总 结 该 表 格 可 以 绑 定 到 一 个 数 据 源, 它 可 以 对 自 己 的 数 据 进 行 管 理 C1FlexGrid 控 件 有 一 个 包 含 以 下 元 素 的 丰 富 的 对 象 模 型 : 以 下 的 几 个 标 题 将 引 导 你 熟 悉 C1FlexGrid 控 件 的 几 个 主 要 特 点 : 行 与 列 ( 第 41 页 ) 介 绍 了 应 该 如 何 设 置 表 格 尺 寸 和 布 局 单 元 格 选 择 ( 第 43 页 ) 产 品 网 站 : 咨 询 热 线 : of 269

26 介 绍 了 当 前 单 元 格 和 选 择 的 概 念 单 元 格 区 域 ( 第 45 页 ) 介 绍 了 应 该 如 何 将 一 个 单 元 格 的 集 合 作 为 一 个 单 元 来 操 作 单 元 格 图 像 ( 第 45 页 ) 介 绍 了 应 该 如 何 在 一 个 单 元 格 中 显 示 图 像 设 置 单 元 格 格 式 ( 第 46 页 ) 介 绍 了 应 该 如 何 通 过 设 置 数 字 日 期 和 布 尔 值 的 格 式, 或 为 一 个 单 个 的 单 元 格 或 一 个 单 元 格 的 集 合 改 变 字 体 颜 色 对 齐 方 式 来 自 定 义 表 格 的 外 观 编 辑 单 元 格 ( 第 51 页 ) 介 绍 了 应 该 如 何 实 现 简 单 的 文 字 编 辑, 下 拉 列 表 和 组 合 列 表, 单 元 格 按 钮, 编 辑 掩 码 和 数 据 验 证 合 并 单 元 格 ( 第 62 页 ) 介 绍 了 应 该 如 何 通 过 建 立 分 类 意 见 来 突 出 数 据 的 关 系 并 更 改 表 格 的 显 示, 以 便 使 具 有 类 似 内 容 的 单 元 格 合 并 到 一 起 概 述 和 汇 总 数 据 ( 第 67 页 ) 介 绍 了 应 该 如 何 将 分 类 汇 总 添 加 到 表 格 和 如 何 建 立 一 个 树 形 大 纲 保 存, 加 载, 并 打 印 ( 第 84 页 ) 介 绍 了 你 应 该 如 何 对 一 个 表 格 的 内 容 或 格 式 进 行 保 存, 并 在 稍 后 重 新 加 载, 或 利 用 其 他 应 用 程 序, 例 如 Microsoft Access 和 Excel, 来 互 换 表 格 的 数 据 本 节 还 介 绍 了 你 应 该 如 何 对 表 格 进 行 打 印 C1FlexGrid 属 性 组 介 绍 了 一 个 按 功 能 交 叉 引 用 的 C1FlexGrid 主 要 属 性 的 图 3.1 行 和 列 响 一 个 C1FlexGrid 控 件 包 括 由 行 和 列 行 和 列 的 集 合 受 到 行 和 列 属 性 的 影 当 把 表 格 绑 定 到 一 个 数 据 源, 行 和 列 的 数 目 取 决 于 可 用 的 数 据 源 中 的 数 据 有 多 少 在 绑 定 模 式 下, 你 可 以 使 用 集 合 的 Count 属 性 将 它 们 设 置 为 任 意 值 例 如, 下 面 的 代 码 将 表 格 的 尺 寸 设 置 为 500 行 乘 以 10 列 : Visual Basic _flex.rows.count = 500 _flex.cols.count = 10 C# 产 品 网 站 : 咨 询 热 线 : of 269

27 flex.rows.count = 500; _flex.cols.count = 10; 行 和 列 有 两 个 基 本 类 型 : 固 定 的 和 滚 动 的 ( 通 过 Count 属 性 被 还 原 的 数 值 包 括 了 固 定 的 和 滚 动 的 单 元 格 ) 当 用 户 垂 直 滚 动 表 格 时, 固 定 行 停 留 在 表 格 顶 部 ; 而 当 用 户 水 平 滚 动 表 格 时, 固 定 列 停 留 在 表 格 左 侧 固 定 的 单 元 格 用 于 显 示 行 和 列 的 标 题 信 息 你 可 以 通 过 使 用 行 和 列 的 集 合 中 固 定 的 属 性 来 设 置 固 定 的 行 和 列 的 数 目 例 如, 下 面 的 代 码 可 以 创 建 一 个 具 有 两 个 固 定 行 和 无 固 定 列 的 表 格 : Visual Basic flex.rows.fixed = 1 _flex.cols.fixed = 0 C# flex.rows.fixed = 1; _flex.cols.fixed = 0; 行 和 列 的 集 合 也 包 含 了 在 表 格 中 插 入 删 除 和 移 动 行 和 列 的 方 法 你 可 以 使 用 条 目 属 性 ( 索 引 ) 来 访 问 在 每 个 集 合 中 的 独 立 的 各 个 元 素 ( 行 和 列 ) 只 要 你 愿 意, 你 就 可 以 在 设 计 时 通 过 使 用 C1FlexGrid 列 编 辑 器 来 设 置 好 表 格 列, 而 不 是 靠 编 写 代 码 来 执 行 这 一 步 操 作 有 关 如 何 使 用 C1FlexGrid 列 编 辑 器 来 对 列 进 行 编 辑 的 更 多 详 细 信 息, 请 参 阅 C1FlexGrid 列 编 辑 器 产 品 网 站 : 咨 询 热 线 : of 269

28 3.1.1 列 宽 度 列 的 宽 度 取 决 于 它 的 宽 度 属 性 在 设 计 时, 可 以 在 表 格 中 直 接 设 置 宽 度 属 性, 或 通 过 C1FlexGrid 列 编 辑 器 来 进 行 在 表 格 中, 单 击 并 拖 动 出 现 在 列 标 题 的 右 边 缘 的 水 平 的 双 箭 头 可 以 重 新 调 整 列 的 尺 寸 垂 直 的 虚 线 显 示 了 表 格 将 会 如 何 被 重 新 调 整 尺 寸 向 左 拖 动 指 针 使 列 宽 变 小 ; 将 其 向 右 边 拖 动 使 列 宽 变 大 当 调 整 的 操 作 完 成, 列 的 宽 度 属 性 将 被 调 整 在 C1FlexGrid 列 编 辑 器 中 或 代 码 中, 为 列 指 定 宽 度 属 性 值 有 关 C1FlexGrid 列 编 辑 器 的 更 多 详 细 信 息, 请 参 阅 C1FlexGrid 列 编 辑 器 ( 第 25 页 ) 下 面 的 代 码 可 以 设 置 第 一 列 到 第 十 列 的 宽 度 的 属 性 : Visual Basic _flex.cols(1).width = 10 C# _flex.cols[1].width = 10; 为 了 防 止 一 个 特 定 的 列 被 调 整, 请 在 无 论 是 列 任 务 菜 单 上, 还 是 列 编 辑 器 或 代 码 中, 都 将 这 一 列 的 允 许 调 整 属 性 设 置 为 假 有 关 列 任 务 菜 单 的 更 多 详 细 信 息, 请 参 阅 列 任 务 菜 单 ( 第 36 页 ) 下 面 的 代 码 可 以 将 第 一 列 的 允 许 调 整 属 性 设 置 为 假 : Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

29 _flex.cols(1).allowresizing = False C# _flex.cols[1].allowresizing = false; 3.2 单 元 格 选 择 表 格 中 有 一 个 光 标 单 元 格, 当 表 格 时 是 激 活 的, 它 会 显 示 一 个 焦 点 矩 形 当 表 格 是 可 编 辑 的, 用 户 可 以 使 用 键 盘 或 鼠 标 来 移 动 这 个 光 标 并 且 编 辑 单 元 格 的 内 容 请 注 意,Office Visual Styles 也 会 通 过 高 亮 显 示 光 标 单 元 格 所 在 的 行 和 列 标 题, 来 显 明 光 标 单 元 格 的 位 置 要 想 了 解 更 多 有 关 设 置 视 觉 样 式 的 详 细 信 息, 请 参 阅 自 定 义 外 观, 使 用 视 觉 样 式 ( 第 165 页 ) 你 可 以 在 代 码 中 通 过 使 用 行 与 列 属 性 来 获 取 或 设 置 当 前 单 元 格 例 如, 将 任 一 属 性 设 置 为 -1, 可 以 隐 藏 光 标 表 格 支 持 扩 展 选 择, 单 元 格 的 矩 形 范 围 由 两 个 对 立 的 角 落 决 定, 即 光 标 所 在 单 元 格 和 单 元 格 选 择 的 单 元 格 请 注 意,Office Visual Styles 也 通 过 高 亮 显 示 选 定 的 单 元 格 所 在 的 行 和 列 的 标 题 来 显 明 了 扩 展 选 择 的 位 置 要 想 了 解 更 多 有 关 设 置 视 觉 样 式 的 详 细 信 息, 请 参 阅 自 定 义 外 观, 使 用 视 觉 样 式 ( 第 165 页 ) 你 可 以 在 代 码 中 通 过 使 用 行 选 择 和 列 选 择 属 性 来 获 取 或 设 置 单 元 格 选 择, 或 通 过 使 用 选 择 的 方 法 也 可 以 产 品 网 站 : 咨 询 热 线 : of 269

30 注 意 : 当 光 标 单 元 格 变 化 了, 该 选 择 会 自 动 复 位 要 在 代 码 中 创 建 扩 展 选 项, 无 论 是 通 过 在 行 选 择 和 列 选 择 之 前 先 设 置 行 与 列 或 直 接 使 用 选 择 的 方 法 都 可 以 选 择 的 外 观 是 由 以 下 属 性 决 定 的 : 定 焦 矩 形 决 定 了 焦 点 矩 形 的 类 型 是 为 了 表 明 光 标 单 元 格 而 绘 制 的 高 亮 显 示 决 定 了 什 么 时 候 该 选 择 应 该 被 突 出 显 示 ( 通 常 是, 当 该 控 件 有 一 个 突 出 的 重 点 时, 或 者 从 不 ) 高 亮 和 定 焦 都 是 决 定 了 选 择 的 外 观 的 单 元 格 样 式 ( 字 体, 颜 色 和 边 框 ) 可 供 选 择 的 类 型 是 由 选 择 模 式 的 属 性 决 定 的 在 默 认 情 况 下, 表 格 支 持 常 规 的 范 围 选 择 你 可 以 修 改 此 行 为 来 防 止 扩 展 选 择, 或 者 来 按 行 按 列, 或 在 列 表 框 模 式 下 进 行 选 择 ( 列 表 框 模 式 可 以 允 许 你 来 选 择 个 别 行 ) 当 使 用 列 表 框 选 择 模 式 时, 你 可 以 通 过 使 用 选 择 属 性 来 获 取 或 设 置 个 别 行 的 选 择 状 态 你 还 可 以 通 过 使 用 选 择 属 性 来 恢 复 选 定 的 行 的 集 合 例 如, 下 面 的 代 码 可 以 选 择 符 合 一 个 条 件 的 所 有 行 : Visual Basic ' 在 销 售 列 中 选 择 多 于 8000 名 销 售 的 所 有 行 _flex.selectionmode = C1.Win.C1FlexGrid.SelectionModeEnum.ListBox Dim index As Integer For index = _flex.rows.fixed To _flex.rows.count - 1 If Val(_flex(index, "Sales")) > Then _flex.rows(index).selected = True End If Next Console.WriteLine("There are now 0 rows selected", _flex.rows.selected.count) C# 产 品 网 站 : 咨 询 热 线 : of 269

31 ti // 在 销 售 列 中 选 择 多 于 8000 名 销 售 的 所 有 行 _flex.selectionmode = SelectionModeEnum.ListBox; for (int index = _flex.rows.fixed ; index < _flex.rows.count; index++) if (Microsoft.VisualBasic.Conversion.Val(System.Runtime.CompilerServices.Run mehelpers.getobjectvalue(_flex[index, "Sales"])) > 80000) _flex.rows[index].selected = true; Console.WriteLine("There are now 0 rows selected", _flex.rows.selected.count); 3.3 单 元 格 区 域 单 元 格 区 域 对 象 可 以 使 你 将 单 元 格 的 任 意 组 合 作 为 一 个 简 单 的 单 元 来 工 作 例 如, 下 面 的 代 码 创 建 了 一 个 单 元 格 区 域 的 对 象, 清 除 了 范 围 内 的 数 据, 并 赋 予 了 它 一 个 自 定 义 样 式 : Visual Basic Dim rg As CellRange = _flex.getcellrange(3, 3, 10, 10) rg.data = Nothing rg.style = _flex.styles("myrangestyle") C# CellRange rg = _flex.getcellrange(3, 3, 10, 10); rg.data = null; rg.style = _flex.styles["myrangestyle"]; 单 元 格 区 域 的 对 象 具 有 可 以 恢 复 区 域 样 式 的 StyleNew 的 属 性, 如 果 存 在 一 个, 或 创 建 了 一 个 新 的, 将 其 分 配 给 该 区 域 并 返 回 它 在 你 不 需 要 对 格 式 进 行 全 面 控 制 的 情 况 下, 此 属 性 是 很 方 便 的 例 如, 如 果 你 想 要 做 的 是 给 这 个 区 域 设 定 一 个 红 色 的 背 景, 你 可 以 编 写 如 下 代 码 来 实 现 : Visual Basic Dim rg As CellRange = _flex.getcellrange(3, 3, 10, 10) rg.stylenew.backcolor = Color.Red 产 品 网 站 : 咨 询 热 线 : of 269

32 C# CellRange rg = _flex.getcellrange(3, 3, 10, 10); rg.stylenew.backcolor = Color.Red; 3.4 单 元 格 图 像 每 个 表 格 内 的 单 元 格 除 了 在 单 元 格 中 存 储 数 据 以 外 还 都 可 以 显 示 图 像 这 可 以 通 过 两 种 方 式 来 实 现 : 你 可 以 通 过 使 用 设 置 单 元 格 图 像 的 方 法, 来 将 一 个 图 像 对 象 分 配 到 一 个 单 元 格 这 种 方 法 可 以 允 许 你 指 定 任 意 图 像 到 每 个 单 元 格, 并 且 当 图 像 与 单 元 格 中 的 数 据 没 有 什 么 关 系 时 这 是 很 有 用 的 例 如, 你 可 能 想 使 用 图 片 作 为 一 项 指 标 来 表 明 单 元 格 中 的 数 据 是 无 效 的 你 可 以 将 一 个 图 像 映 射 指 定 到 一 列, 表 格 就 会 将 单 元 格 中 的 数 据 自 动 映 射 到 一 个 相 应 的 图 像 当 图 像 包 含 了 代 表 性 的 数 据 的 情 况 下, 这 种 方 法 是 很 有 用 的 例 如, 图 像 可 能 含 有 表 示 产 品 类 型 的 图 标 3.5 设 置 单 元 格 格 式 C1FlexGrid 控 件 的 主 要 优 势 之 一 就 是, 具 有 自 定 义 整 个 表 格 和 每 个 个 体 的 单 元 格 外 观 的 几 乎 任 一 方 面 的 能 力 单 元 格 的 内 容 为 了 控 制 单 元 格 的 内 容 如 何 被 格 式 化, 请 将 格 式 化 属 性 设 置 到 一 个 类 似 于 你 在.NET framework 中 通 过 String.Format 方 法 使 用 的 格 式 字 符 串 例 如, 下 面 的 代 码 显 示 了 第 一 列 的 短 日 期 和 第 二 列 的 货 币 值 : Visual Basic ' 短 日 期 _flex.cols(1).format = "d" ' 货 币 值 _flex.cols(2).format = "c" C# // 短 日 期 _flex.cols[1].format = "d"; // 货 币 值 _flex.cols[2].format = "c"; 产 品 网 站 : 咨 询 热 线 : of 269

33 单 元 格 内 容 的 格 式 也 是 可 以 通 过 使 用 格 式 字 符 串 对 话 框 在 设 计 时 就 进 行 设 置 的 格 式 字 符 串 对 话 框 的 访 问 路 径 有 两 种, 一 种 是 可 通 过 列 任 务 菜 单 另 一 种 是 可 通 过 C1FlexGrid 列 编 辑 器 属 性 在 列 任 务 菜 单 上, 单 击 格 式 字 符 串 中 的 省 略 号 按 钮 在 C1FlexGrid 列 编 辑 器 中, 在 左 窗 格 中 找 到 格 式 属 性, 并 单 击 它 旁 边 的 省 略 号 按 钮 注 意 : 格 式 字 符 串 对 话 框 是 特 定 列, 而 且 只 会 更 改 所 选 定 的 列 的 格 式 你 还 是 可 以 使 用 自 定 义 格 式, 就 像 你 在 Visual Basic 格 式 功 能 中 所 使 用 的 一 样 ( 例 如, #,###, 等 等 ) 检 索 单 元 格 数 据 你 可 以 使 用 索 引 或 获 取 数 据 方 法 来 检 索 原 始 的 表 格 数 据 要 检 索 格 式 过 的 数 据, 请 改 为 使 用 GetDataDisplay 的 方 法 例 如 : Visual Basic ' 短 日 期 _flex.cols(1).format = "d" ' 货 币 值 _flex.cols(2).format = "c" _flex(1, 2) = Console.WriteLine("Raw value: 0", _flex(1, 2)) Console.WriteLine("Display value: 0", _flex.getdatadisplay(1, 2)) ' 行 值 :10000 C# // 短 日 期 _flex.cols[1].format = "d"; // 货 币 值 _flex.cols[2].format = "c"; _flex[1, 2] = 10000; Console.WriteLine("Raw value: 0", _flex[1, 2]); Console.WriteLine("Display value: 0", _flex.getdatadisplay(1, 2)); // 行 值 : 单 元 格 的 外 观 单 元 格 的 外 观 ( 对 齐 方 式 字 体 颜 色 边 框, 等 ) 是 由 单 元 格 样 式 对 象 处 理 的 表 格 有 一 个 样 式 属 性, 它 包 含 了 用 于 设 置 单 元 格 格 式 的 所 有 产 品 网 站 : 咨 询 热 线 : of 269

34 样 式 的 集 合 这 个 集 合 有 一 些 可 以 定 义 表 格 元 素 的 外 观 的 内 置 成 员, 如 固 定 的 和 滚 动 的 单 元 格, 单 元 格 选 择, 单 元 格 定 焦, 等 等 你 可 以 更 改 这 些 样 式 来 修 改 表 格 的 外 观, 你 也 可 以 创 建 自 己 的 自 定 义 样 式, 并 将 它 们 分 配 给 单 元 格, 行 或 列 改 变 内 置 的 样 式 是 改 变 表 格 外 观 的 最 简 单 的 方 式 例 如, 下 面 的 代 码 可 以 将 所 选 定 的 部 分 的 背 景 显 示 为 红 色, 字 体 为 绿 色 粗 体 : Visual Basic Dim cs As CellStyle = _flex.styles.highlight cs.font = New Font(_flex.Font, FontStyle.Bold) cs.forecolor = Color.Green cs.backcolor = Color.Red C# CellStyle cs = _flex.styles.highlight; cs.font = new Font(_flex.Font, FontStyle.Bold); cs.forecolor = Color.Green; cs.backcolor = Color.Red; 你 还 可 以 创 建 你 自 己 的 样 式, 并 将 它 们 分 配 到 单 元 格, 行 和 列 例 如, 下 面 的 代 码 可 以 创 建 一 个 自 定 义 单 元 格 样 式 并 敬 爱 那 个 它 分 配 给 每 一 个 第 五 行 : Visual Basic Dim cs As CellStyle = _flex.styles.add("fifth") cs.backcolor = Color.Gray Dim idex% For idex = _flex.rows.fixed To _flex.rows.count - 1 Step 5 _flex.rows(idex).style = cs Next C# CellStyle cs = _flex.styles.add("fifth"); cs.backcolor = Color.Gray; for (int index = _flex.rows.fixed ; index <= _flex.rows.count - 1; index += 5) _flex.rows[index].style = cs; 下 面 是 一 个 例 子, 显 示 了 如 何 创 建 自 定 义 样 式, 并 将 它 们 分 配 到 行, 列 和 产 品 网 站 : 咨 询 热 线 : of 269

35 单 元 格 区 域 : Visual Basic ' 创 建 一 个 新 的 自 定 义 样 式 Dim s As CellStyle = _flex.styles.add("mystyle") s.backcolor = Color.Red s.forecolor = Color.White ' 将 新 的 样 式 分 配 到 一 列 _flex.cols(3).style = _flex.styles("mystyle") ' 将 新 的 样 式 分 配 到 一 行 _flex.rows(3).style = _flex.styles("mystyle") ' 将 新 的 样 式 分 配 到 一 个 单 元 格 区 域 Dim rg As CellRange = _flex.getcellrange(4, 4, 6, 6) rg.style = _flex.styles("mystyle") C# 只 要 你 愿 意, 你 就 可 以 在 设 计 时 使 用 C1FlexGrid 样 式 编 辑 器 来 设 置 好 样 式, 而 不 是 靠 编 写 代 码 来 执 行 这 一 步 操 作 有 关 如 何 使 用 C1FlexGrid 样 式 编 辑 器 来 自 定 义 单 元 格 的 外 观 的 更 多 详 细 信 息, 请 参 阅 C1FlexGrid 样 式 编 辑 器 ( 第 27 页 ) // 创 建 一 个 新 的 自 定 义 样 式 CellStyle s = _flex.styles.add("mystyle"); s.backcolor = Color.Red; s.forecolor = Color.White; // 将 新 的 样 式 分 配 到 一 列 _flex.cols[3].style = _flex.styles["mystyle"]; // 将 新 的 样 式 分 配 到 一 行 _flex.rows[3].style = _flex.styles["mystyle"]; // 将 新 的 样 式 分 配 到 一 个 单 元 格 区 域 CellRange rg = _flex.getcellrange(4,4,6,6); rg.style = _flex.styles["mystyle"]; 有 条 件 地 设 置 格 式 要 根 据 单 元 格 的 内 容 设 置 其 格 式, 你 可 以 基 于 其 内 容 使 用 单 元 格 变 更 事 件 来 为 单 元 格 选 择 一 种 样 式 例 如, 下 面 的 代 码 可 以 根 据 单 元 格 的 内 容 为 大 货 币 值 创 建 一 个 新 的 样 式, 并 将 其 应 用 于 单 元 格 : 产 品 网 站 : 咨 询 热 线 : of 269

36 Visual Basic Dim cs As C1.Win.C1FlexGrid.CellStyle Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 为 大 货 币 值 创 建 一 个 自 定 义 样 式 cs = _flex.styles.add("largevalue") cs.font = New Font(Font, FontStyle.Italic) cs.backcolor = Color.Gold End Sub ' 根 据 单 元 格 的 内 容 来 设 置 其 格 式 Private Sub _flex_cellchanged(byval sender As Object, ByVal e As RowColEventArgs) Handles _flex.cellchanged ' 将 货 币 值 大 于 50,000 的 标 记 为 大 货 币 值 ( 通 过 将 样 式 设 置 为 无 来 重 新 设 置 其 他 的 ) Dim cs As CellStyle If _flex(e.row, e.col).tostring >= Then cs = _flex.styles("largevalue") _flex.setcellstyle(e.row, e.col, cs) End If C# CellStyle cs; private void Form1_Load(object sender, EventArgs e) // 为 大 货 币 值 创 建 一 个 自 定 义 样 式 cs = _flex.styles.add("largevalue"); cs.font = new Font(Font, FontStyle.Italic); cs.backcolor = Color.Gold; // 根 据 单 元 格 的 内 容 来 设 置 其 格 式 private void _flex_cellchanged( object sender, RowColEventArgs e) // 将 货 币 值 大 于 50,000 的 标 记 为 大 货 币 值 ( 通 过 将 样 式 设 置 为 无 来 重 新 设 置 其 他 的 ) if (Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(_flex[e.Row, e.col].tostring()) >= 50000) cs = _flex.styles["largevalue"]; _flex.setcellstyle(e.row, e.col, cs); 产 品 网 站 : 咨 询 热 线 : of 269

37 3.5.4 自 绘 单 元 格 即 使 单 元 格 样 式 对 象 已 经 通 过 单 元 格 外 观 ( 背 景 色 和 前 景 色 对 齐 方 式 字 体 边 距 边 框, 等 等 ) 提 供 了 很 多 控 件, 有 时 这 仍 是 不 够 的 你 可 能 想 使 用 渐 变 背 景, 或 直 接 在 单 元 格 中 画 一 些 自 定 义 的 图 形 在 这 些 情 况 下, 你 可 以 使 用 绘 制 模 式 属 性 和 自 绘 单 元 格 事 件, 通 过 每 一 个 单 元 格 是 如 何 绘 制 的 来 实 现 全 面 控 制 绘 制 模 式 属 性 决 定 了 自 绘 单 元 格 事 件 是 否 被 激 发 该 事 件 可 以 是 你 兼 顾 到 每 一 个 单 元 格 的 视 觉 效 果 自 绘 单 元 格 事 件 中 的 参 数, 允 许 你 对 所 显 示 的 数 据 以 及 用 于 显 示 数 据 的 样 式, 做 出 更 改, 甚 至 允 许 你 完 全 接 管 并 绘 制 单 元 格 中 你 所 想 要 的 任 何 东 西 你 可 以 通 过 在 事 件 处 理 程 序 中 设 置 e.text 和 e.image 参 数, 来 改 变 即 将 显 示 在 单 元 格 中 的 文 本 和 图 像 你 也 可 以 通 过 设 置 e.style 属 性 来 改 变 将 用 于 显 示 单 元 格 的 样 式 请 注 意, 你 不 应 该 修 改 样 式 参 数 的 属 性, 因 为 这 可 能 会 影 响 到 其 他 单 元 格 相 反, 你 要 分 配 一 个 新 的 单 元 格 样 式 对 象 到 样 式 参 数 例 如, 不 要 设 置 e.style.forecolor= Color.Red, 而 应 该 通 过 使 用 e.style = _flex.styles["redstyle"] 将 一 个 全 新 的 样 式 分 配 给 参 数 你 还 可 以 使 用 自 己 的 绘 图 代 码 在 单 元 格 中 进 行 绘 制, 甚 至 用 命 令 将 你 的 自 定 义 代 码 与 e.drawcell 方 法 合 并 到 一 起 例 如, 你 可 以 使 用 GDI 命 令 来 绘 制 单 元 格 的 背 景, 然 后 调 用 e.drawcell 来 显 示 单 元 格 边 框 和 内 容 可 用 的 示 例 项 目 有 关 高 级 的 自 绘 单 元 格 的 一 个 范 例, 请 参 阅 ComponentOne 帮 助 中 心 的 RtfGrid 样 品 下 面 的 代 码 显 示 了 一 个 例 子 它 使 用 了 渐 变 画 笔 来 绘 制 所 选 定 的 单 元 格 的 背 景 首 先, 代 码 会 设 置 绘 制 模 式 属 性, 显 示 一 个 线 性 渐 变 画 笔 的 对 象 并 且 在 表 格 重 新 调 整 大 小 时 更 新 画 笔 : 产 品 网 站 : 咨 询 热 线 : of 269

38 Visual Basic Dim m_gradientbrush As System.Drawing.Drawing2D.LinearGradientBrush Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 通 过 自 绘 单 元 格 来 使 用 画 笔 m_gradientbrush = New System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.SteelBlue, Color.White, 45) ' 使 用 自 绘 来 添 加 渐 变 _flex.drawmode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw End Sub Private Sub _flex_resize(byval sender As Object, ByVal e As System.EventArgs) Handles _flex.resize ' 当 控 件 调 整 大 小 时 更 新 渐 变 画 笔 m_gradientbrush = New System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.SteelBlue, Color.White, 45) End Sub 产 品 网 站 : 咨 询 热 线 : of 269

39 C# System.Drawing.Drawing2D.LinearGradientBrush m_gradientbrush; private void Form1_Load(object sender, EventArgs e) // 通 过 自 绘 单 元 格 来 使 用 画 笔 m_gradientbrush = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.SteelBlue, Color.White, 45); // 使 用 自 绘 来 添 加 渐 变 _flex.drawmode = DrawModeEnum.OwnerDraw; private void _flex_resize( object sender, System.EventArgs e) // 当 控 件 调 整 大 小 时 更 新 渐 变 画 笔 m_gradientbrush = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.SteelBlue, Color.White, 45); 产 品 网 站 : 咨 询 热 线 : of 269

40 第 二 步 是 处 理 自 绘 单 元 格 事 件, 并 使 用 自 定 义 画 刷 来 绘 制 单 元 格 的 背 景 在 这 个 例 子 中, 通 过 在 事 件 参 数 中 使 用 绘 制 单 元 格 方 法, 表 格 自 己 处 理 了 自 己 的 前 景 : Visual Basic Private Sub _flex_ownerdrawcell(byval sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles _flex.ownerdrawcell ' 使 用 渐 变 画 笔 来 绘 制 所 选 定 的 单 元 格 的 背 景 If _flex.selection.contains(e.row, e.col) Then ' 绘 制 背 景 e.graphics.fillrectangle(m_gradientbrush, e.bounds) ' 让 表 格 绘 制 其 内 容 e.drawcell(c1.win.c1flexgrid.drawcellflags.content) ' 我 们 已 完 成 这 个 单 元 格 的 绘 制 e.handled = True End If C# 产 品 网 站 : 咨 询 热 线 : of 269

41 e) private void _flex_ownerdrawcell( object sender, OwnerDrawCellEventArgs // 使 用 渐 变 画 笔 来 绘 制 所 选 定 的 单 元 格 的 背 景 if (_flex.selection.contains(e.row, e.col)) // 绘 制 背 景 e.graphics.fillrectangle(m_gradientbrush, e.bounds); // 让 表 格 绘 制 其 内 容 e.drawcell(drawcellflags.content); // 我 们 已 完 成 这 个 单 元 格 的 绘 制 e.handled = true; 3.6 编 辑 单 元 格 默 认 情 况 下,C1FlexGrid 控 件 允 许 用 户 通 过 在 单 元 格 中 打 字 来 编 辑 单 元 格 你 可 以 通 过 允 许 编 辑 属 性 设 置 为 假 来 阻 止 用 户 对 表 格 进 行 编 辑 你 还 可 以 通 过 将 允 许 编 辑 属 性 设 假 来 阻 止 用 户 对 特 定 列 进 行 编 辑 ( 当 表 格 被 绑 定 到 一 个 数 据 源 上, 它 会 检 测 哪 些 列 是 可 编 辑 的 并 自 动 设 置 允 许 编 辑 属 性 ) 要 开 始 编 辑 一 个 单 元 格, 用 户 可 以 : 开 始 在 单 元 格 中 输 入 这 将 替 换 单 元 格 原 有 的 内 容 按 F2 键 或 ENTER 键 这 使 得 表 格 处 于 编 辑 模 式 下, 并 将 当 前 单 元 格 的 内 容 放 到 编 辑 器 双 击 一 个 单 元 格 这 与 按 F2 键 有 相 同 的 效 果, 但 光 标 会 出 现 在 被 点 击 的 单 元 格 基 本 的 编 辑 模 式 允 许 用 户 在 单 元 格 中 输 入 值 如 果 正 在 被 编 辑 的 列 有 一 个 特 定 的 数 据 类 型, 由 用 户 输 入 的 值 会 自 动 转 换 成 适 当 的 数 据 类 型 如 果 用 户 输 入 了 不 能 转 换 成 适 当 的 数 据 类 型 的 值, 表 格 会 激 活 表 格 错 误 事 件 并 忽 略 该 编 辑 对 于 许 多 应 用 来 说, 基 本 的 编 辑 就 足 够 了, 但 C1FlexGrid 含 有 这 样 的 属 性 和 事 件, 它 能 让 你 控 制 编 辑 过 程, 并 提 供 选 择 清 单, 编 辑 按 钮 和 高 级 的 验 证 控 制 从 版 本 2.5 开 始,C1FlexGrid 也 有 了 外 部 编 辑 器 的 内 置 支 持 这 使 你 可 以 将 任 何 一 个 控 件 作 为 表 格 编 辑 器 使 用 ( 例 如, 现 在 你 可 以 将 C1Input 控 件 作 为 表 格 编 辑 器 使 用 ) 产 品 网 站 : 咨 询 热 线 : of 269

42 在 以 下 主 题 中 主 要 介 绍 了 这 些 功 能 列 表 和 组 合 在 许 多 应 用 中, 单 元 格 都 有 一 个 关 于 可 能 值 的 定 义 明 确 的 列 表 在 这 些 情 况 下, 你 可 以 让 用 户 从 下 拉 列 表 中 选 择 值 要 做 到 这 一 点, 必 须 建 立 一 个 字 符 串, 其 中 包 含 所 有 的 以 管 道 字 符 分 隔 出 来 的 选 择 ( 例 如, 真 假 不 知 道 ), 并 将 它 分 配 到 组 合 列 表 属 性 每 一 列 都 可 能 有 不 同 的 列 表 设 置 组 合 列 表 属 性, 使 表 格 在 单 元 格 旁 边 显 示 一 个 下 拉 框 用 户 可 以 单 击 此 下 拉 框 ( 或 按 F2 键 ) 来 显 示 该 单 元 格 中 可 用 选 择 的 列 表 另 一 种 常 见 的 情 况 是 即 使 单 元 格 有 共 同 价 值 的 一 个 列 表, 但 也 应 允 许 用 户 键 入 别 的 东 西 这 可 以 通 过 下 拉 组 合, 文 本 框 和 下 拉 列 表 的 组 合 来 实 现 要 创 建 一 个 组 合, 只 需 用 管 道 字 符 ( 例 如 真 假 不 知 道 ) 来 启 动 选 择 列 表, 然 后 将 它 像 以 前 一 样 分 配 到 组 合 列 表 属 性 例 如, 下 面 的 代 码 会 使 表 格 在 第 一 列 上 显 示 包 含 了 颜 色 名 称 的 下 拉 组 合 列 表, 并 在 第 二 列 上 显 示 一 个 下 拉 组 合 当 对 第 一 列 进 行 编 辑 时, 用 户 必 须 从 列 表 中 选 择 一 个 值 当 对 第 二 列 进 行 编 辑 时, 用 户 也 要 选 择 一 个 值 或 输 入 什 么 别 的 东 西 : Visual Basic ' 下 拉 列 表 _flex.cols(1).combolist = "Red Green Blue Red White" ' 下 拉 组 合 _flex.cols(2).combolist = " Red Green Blue Red White" C# // 下 拉 列 表 _flex.cols[1].combolist = "Red Green Blue Red White"; // 下 拉 组 合 _flex.cols[2].combolist = " Red Green Blue Red White"; 你 也 可 以 在 设 计 时 使 用 组 合 列 表 对 话 框 来 设 置 组 合 列 表 属 性 组 合 列 表 对 话 框 允 许 你 选 择 你 是 想 让 列 表 显 示 为 一 个 下 拉 列 表, 下 拉 组 合, 省 略 号 按 钮, 还 是 文 本 框 和 省 略 号 按 钮 产 品 网 站 : 咨 询 热 线 : of 269

43 你 可 以 通 过 列 任 务 菜 单, 或 通 过 C1FlexGrid 列 编 辑 器 来 访 问 组 合 列 表 对 话 框 在 列 任 务 菜 单 上, 单 击 组 合 列 表 框 中 的 省 略 号 按 钮 在 C1FlexGrid 列 编 辑 器 中, 在 左 窗 格 中 找 到 的 组 合 列 表 属 性, 并 单 击 它 旁 边 的 省 略 号 按 钮 注 意 : 组 合 列 表 对 话 框 是 特 定 的 列, 并 且 只 会 更 改 所 选 定 列 的 组 合 列 表 属 性 在 某 些 情 况 下, 在 同 一 列 中 的 单 元 格 可 能 需 要 不 同 的 列 表 例 如, 一 个 属 性 列 表 可 能 会 在 第 一 列 上 显 示 显 示 所 有 的 属 性, 并 在 第 二 列 上 显 示 他 们 的 值 该 值 取 决 于 属 性 本 身, 所 以 有 效 的 选 项 一 行 接 一 行 地 改 变 在 这 种 情 况 下, 你 应 该 捕 获 编 辑 前 事 件, 并 且 为 当 前 单 元 格 设 置 组 合 列 表 属 性 到 一 个 适 当 的 列 表 组 合 列 表 属 性 适 用 于 整 个 表 格 内 置 的 组 合 框 提 供 了 一 个 默 认 的 自 动 搜 索 功 能 当 用 户 输 入 一 个 值, 选 中 的 部 分 将 移 动 到 下 一 个 适 配 的 对 象 您 可 以 通 过 使 用 编 辑 选 项 属 性 来 禁 用 此 功 能, 也 可 以 通 过 使 用 自 动 搜 索 延 迟 属 性, 在 表 格 重 新 设 置 自 动 搜 索 缓 冲 之 前 来 控 制 时 间 内 置 的 组 合 框 也 有 一 个 像 Visual Studio 的 属 性 窗 口 中 的 编 辑 器 那 样 的 自 动 循 环 功 能 当 你 双 击 一 个 具 有 与 它 相 关 联 的 列 表 的 单 元 格, 表 格 会 自 动 选 择 下 一 个 值 你 也 可 以 通 过 使 用 编 辑 选 项 属 性 来 禁 用 此 功 能 复 选 框 默 认 情 况 下, 表 格 会 将 值 以 复 选 框 的 形 式 在 布 尔 列 显 示 ( 列 的 类 型 是 由 列 对 象 的 数 据 类 型 属 性 决 定 的 ) 如 果 你 不 想 让 让 布 尔 值 以 复 选 框 的 形 式 显 示 出 来, 请 将 列 的 格 式 属 性 设 置 为 一 个 字 符 串, 此 字 符 串 包 含 会 显 示 为 真 产 品 网 站 : 咨 询 热 线 : of 269

44 和 假 的 值 例 如 : Visual Basic _flex.cols("bools").format = "Yes;No" C# _flex.cols["bools"].format = "Yes;No"; 在 未 绑 定 模 式 下, 你 可 以 通 过 使 用 GetCellCheck 和 SetCellCheck 属 性 将 复 选 框 添 加 到 任 意 单 元 格 复 选 框 将 会 随 着 单 元 格 中 的 任 何 文 本 来 显 示, 而 且 你 可 以 使 用 列 的 图 像 对 齐 属 性 来 设 置 他 们 的 位 置 复 选 框 有 两 种 类 型 : 布 尔 和 三 态 布 尔 复 选 框 可 以 在 CheckEnum.Checked 和 CheckEnum.Unchecked 状 态 之 间 进 行 切 换 三 态 复 选 框 可 以 在 CheckEnum.TSChecked, CheckEnum.TSUnchecked 和 CheckEnum.TSGrayed 之 间 进 行 循 环 切 换 如 果 某 单 元 格 有 一 个 复 选 框 并 且 允 许 编 辑 属 性 被 设 置 为 真, 用 户 可 以 通 过 用 鼠 标 点 击 或 按 空 格 键 或 回 车 键 来 改 变 复 选 框 的 状 态 默 认 情 况 下, 用 鼠 标 或 键 盘 切 换 复 选 框 的 值 会 将 所 有 选 中 的 复 选 框 都 切 换 掉 你 可 以 通 过 使 用 编 辑 选 项 属 性 来 禁 用 此 功 能 值 映 射 列 表 如 上 所 述 的 组 合 列 表 属 性 可 以 确 保 从 列 表 中 选 择 单 元 格 的 值 由 用 户 选 择 的 值 被 转 换 成 适 合 于 列 的 类 型 并 存 储 在 表 格 中, 确 切 地 说, 是 如 果 用 户 输 入 了 值 的 话 在 许 多 情 况 下, 单 元 格 可 以 从 定 义 明 确 的 列 表 中 采 用 一 个 值, 但 你 想 要 显 示 的 是 一 个 包 含 实 际 值 的 用 户 界 面 友 好 的 版 本 例 如, 如 果 一 个 列 包 含 产 品 编 码, 你 可 能 想 存 储 它 的 代 码, 但 显 示 的 产 品 名 称 来 代 替 这 可 以 通 过 数 据 映 射 属 性 来 实 现 此 属 性 包 含 一 个 IDictionary 对 象 的 引 用, 它 在 什 么 是 存 储 在 表 格 中 的 什 么 是 用 户 可 见 的 之 间 建 立 了 一 个 映 射 (IDictionary 接 口 界 面 是 在 系 统 中 定 义 的 集 合 的 命 名 空 间 是 由 哈 希 表 之 类 实 现 的 ) 例 如, 下 面 的 代 码 可 以 创 建 一 个 的 包 含 颜 色 值 和 他 们 的 名 字 的 数 据 映 射 颜 色 存 储 于 表 格 中, 而 向 用 户 显 示 的 是 他 们 的 名 字 : 产 品 网 站 : 咨 询 热 线 : of 269

45 Visual Basic Dim dtmap As Hashtable = New Hashtable() dtmap.add(color.red, "Apple") dtmap.add(color.green, "Forest") dtmap.add(color.blue, "Sky") dtmap.add(color.black, "Coal") dtmap.add(color.white, "Snow") _flex.cols(1).datatype = GetType(Color) _flex.cols(1).datamap = dtmap C# System.Collections.Hashtable dtmap = new System.Collections.Hashtable(); dtmap.add(color.red, "Apple"); dtmap.add(color.green, "Forest"); dtmap.add(color.blue, "Sky"); dtmap.add(color.black, "Coal"); dtmap.add(color.white, "Snow"); _flex.cols[1].datatype = typeof(color); _flex.cols[1].datamap = dtmap; 产 品 网 站 : 咨 询 热 线 : of 269

46 配 备 了 Idictionary 接 口 的 任 何 一 类 都 可 以 作 为 一 个 数 据 映 射 来 使 用 例 如,Hashtable,ListDictionary 和 SortedList 都 提 供 了 有 效 的 数 据 映 射 所 不 同 的 是, 当 他 们 在 可 编 辑 的 列 中 使 用 时, 下 拉 列 表 中 条 目 的 顺 序 将 取 决 于 类 SortedList 类 通 过 键 值 将 各 条 目 分 类,Hashtable 通 过 任 意 顺 序, 而 ListDictionary 保 持 了 那 些 条 目 被 添 加 到 列 表 中 的 顺 序 正 因 为 如 此, ListDictionary 通 常 是 数 据 映 射 的 最 佳 选 择 请 注 意, 当 单 元 格 正 在 编 辑 中 时, 数 据 映 射 的 键 值 必 须 是 同 一 类 型 的 例 如, 如 果 一 个 列 包 含 短 整 数 (Int16), 那 么, 与 此 列 相 关 联 的 任 何 数 据 映 射 也 应 该 是 短 整 型 的 键 值 如 果 将 正 整 数 (INT32) 作 为 键 值 将 不 起 作 用 下 面 的 例 子 显 示 了 它 们 的 区 别 : Visual Basic Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 按 key 排 序 Dim sl As New SortedList() sl.add("0", "Zero") sl.add("1", "One") sl.add("2", "Two") sl.add("3", "Three") ' 保 持 添 加 顺 序 Dim ld As New Specialized.ListDictionary() ld.add(0, "Zero") ld.add(1, "One") ld.add(2, "Two") ld.add(3, "Three") ' 任 意 顺 序 Dim ht As New Hashtable() ht.add(0, "Zero") ht.add(1, "One") ht.add(2, "Two") ht.add(3, "Three") _flex.cols(1).datamap = sl _flex.cols(1).caption = "SortedList" _flex.cols(2).datamap = ld _flex.cols(2).caption = "ListDictionary" _flex.cols(3).datamap = ht _flex.cols(3).caption = "HashTable" End Sub 产 品 网 站 : 咨 询 热 线 : of 269

47 C# private void Form1_Load(object sender, System.EventArgs e); // 按 key 排 序 System.Collections.SortedList sl = new System.Collections.SortedList(); sl.add("0", "Zero"); sl.add("1", "One"); sl.add("2", "Two"); sl.add("3", "Three"); // 保 持 添 加 顺 序 System.Collections.Specialized.ListDictionary ld = new System.Collections.Specialized.ListDictionary(); ld.add(0, "Zero"); ld.add(1, "One"); ld.add(2, "Two"); ld.add(3, "Three"); // 任 意 顺 序 System.Collections.Hashtable ht = new System.Collections.Hashtable(); ht.add(0, "Zero"); ht.add(1, "One"); ht.add(2, "Two"); ht.add(3, "Three"); _flex.cols[1].datamap = sl; _flex.cols[1].caption = "SortedList"; _flex.cols[2].datamap = ld; _flex.cols[2].caption = "ListDictionary"; _flex.cols[3].datamap = ht; _flex.cols[3].caption = "HashTable"; 产 品 网 站 : 咨 询 热 线 : of 269

48 此 外, 如 果 列 的 数 据 类 型 属 性 被 设 置 为 一 个 枚 举, 表 格 将 自 动 建 立 并 使 用 一 个 含 枚 举 中 每 个 值 的 名 称 的 数 据 映 射 例 如, 下 面 的 代 码 可 以 创 建 一 个 包 含 国 家 的 枚 举 国 家 的 值 存 储 在 表 格 中, 向 用 户 显 示 的 是 他 们 的 名 字 : C# Visual Basic Private Enum Countries NewYork Chicago NewOrleans London Paris End Enum Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load _flex.cols(1).datatype = GetType(Countries) End Sub private enum Countries NewYork, Chicago, NewOrleans, London, Paris private void Form1_Load(object sender, EventArgs e) _flex.cols[1].datatype = typeof(countries); 产 品 网 站 : 咨 询 热 线 : of 269

49 3.6.4 单 元 格 按 钮 某 些 类 型 的 单 元 格, 除 了 文 本 框 或 下 拉 列 表 以 外, 可 能 还 需 要 更 复 杂 的 编 辑 器 例 如, 如 果 一 个 列 包 含 文 件 名 称 或 颜 色, 它 应 该 可 以 用 一 个 对 话 框 来 编 辑 在 这 些 情 况 下, 你 应 该 将 组 合 列 表 属 性 设 置 为 省 略 号 (... ) 该 控 件 将 在 单 元 格 旁 边 显 示 一 个 按 钮, 当 用 户 点 击 它 时, 将 触 发 单 元 格 按 钮 点 击 事 件 你 可 以 捕 获 该 事 件, 显 示 对 话 框, 并 使 用 用 户 的 选 择 来 更 新 单 元 格 的 内 容 如 果 你 在 省 略 号 前 添 加 管 道 字 符, 那 么 用 户 也 将 被 允 许 通 过 在 单 元 格 输 入 的 方 式 来 编 辑 单 元 格 的 内 容 默 认 情 况 下, 单 元 格 的 按 钮 显 示 省 略 号 您 可 以 使 用 单 元 格 按 钮 图 像 属 性 将 图 片 指 定 到 单 元 格 按 钮 下 面 的 示 例 演 示 了 你 应 该 如 何 使 用 单 元 格 按 钮 来 显 示 一 个 拾 色 器 对 话 框, 并 在 一 列 中 选 择 一 种 颜 色 Visual Basic ' 建 立 色 列 Dim c As C1.Win.C1FlexGrid.Column = _flex.cols(1) c.datatype = GetType(Color) ' 显 示 单 元 格 按 钮 c.combolist = "..." C# 通 过 此 代 码 设 置 该 列, 用 户 可 以 通 过 点 击 一 个 按 钮 来 从 一 个 对 话 框 中 选 择 一 个 颜 色 下 一 步 处 理 单 元 格 按 钮 点 击 的 代 码 : // 建 立 色 列 Column c = _flex.cols[1]; c.datatype = typeof(color); // 显 示 单 元 格 按 钮 c.combolist = "..."; Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

50 Private Sub _flex_cellbuttonclick(byval sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles _flex.cellbuttonclick ' 创 建 拾 色 器 对 话 框 Dim clrdlg As New ColorDialog() ' 初 始 化 对 话 框 If _flex(e.row, e.col) Is GetType(Color) Then clrdlg.color = _flex(e.row, e.col) End If ' 从 对 话 框 中 获 取 新 的 颜 色, 并 将 它 分 配 到 单 元 格 If clrdlg.showdialog() = Windows.Forms.DialogResult.OK Then _flex(e.row, e.col) = clrdlg.color End If End Sub 产 品 网 站 : 咨 询 热 线 : of 269

51 C# private void _flex_cellbuttonclick( object sender, RowColEventArgs e) // 创 建 拾 色 器 对 话 框 ColorDialog clrdlg = new ColorDialog(); // 初 始 化 对 话 框 if (_flex[e.row, e.col] == typeof(color)) clrdlg.color = (Color)_flex[e.Row, e.col]; // 从 对 话 框 中 获 取 新 的 颜 色, 并 将 它 分 配 到 单 元 格 if (clrdlg.showdialog() == DialogResult.OK) _flex[e.row, e.col] = clrdlg.color; 产 品 网 站 : 咨 询 热 线 : of 269

52 3.6.5 掩 码 C1FlexGrid 控 件 还 支 持 屏 蔽 编 辑 当 用 户 输 入 时, 这 种 类 型 的 编 辑 可 以 使 用 一 种 输 入 掩 码 来 提 供 一 个 模 板, 并 自 动 验 证 该 输 入 该 掩 码 由 编 辑 掩 码 属 性 明 确 指 定, 它 可 以 通 过 普 通 的 文 本 字 段 和 下 拉 组 合 区 域 来 使 用 掩 码 字 符 串 包 括 两 种 类 型 的 字 符 : 文 字 字 符, 这 可 以 成 为 输 入 的 一 部 分 ; 模 板 字 符, 这 是 属 于 特 定 类 别 的 占 位 字 符 ( 例 如, 数 字 或 字 母 ) 例 如, 下 面 的 代 码 将 一 个 编 辑 掩 码 (999) 指 定 到 第 一 列, 该 掩 码 包 含 的 是 电 话 号 码,( 数 字 9 是 一 个 可 以 代 表 任 何 数 字 的 占 位 字 符 ): Visual Basic ' 建 立 一 个 电 话 号 码 的 编 辑 掩 码 _flex.cols(1).editmask = "(999) " C# 当 你 将 编 辑 掩 码 属 性 设 置 为 一 个 非 空 的 字 符 串, 会 导 致 它 必 须 使 用 内 置 的 屏 蔽 编 辑, 即 便 该 列 包 含 日 期 / 时 间 值 ( 通 常, 一 个 日 期 时 间 提 取 器 控 件 可 以 用 于 编 辑 这 些 列 ) 如 果 你 有 只 含 时 间 ( 没 有 日 期 ) 的 日 期 时 间 列, 这 使 用 起 来 将 格 外 方 便 在 这 些 情 况 下, 你 可 以 设 置 以 下 属 性 来 使 用 一 个 屏 蔽 编 辑 器, 而 不 是 一 个 日 期 时 间 提 取 器 控 件 : // 建 立 一 个 电 话 号 码 的 编 辑 掩 码 _flex.cols[1].editmask = "(999) "; Visual Basic flex.cols(1).datatype = GetType(DateTime) _flex.cols(1).format = "hh:mm tt" _flex.cols(1).editmask = "99:99 LL" 性 C# flex.cols[1].datatype = typeof(datetime); _flex.cols[1].format = "hh:mm tt"; _flex.cols[1].editmask = "99:99 LL"; 你 也 可 以 在 设 计 时 通 过 使 用 输 入 掩 码 对 话 框 来 设 置 编 辑 掩 码 属 产 品 网 站 : 咨 询 热 线 : of 269

53 要 访 问 输 入 掩 码 对 话 框 可 通 过 以 下 两 种 途 经, 列 任 务 菜 单 或 C1FlexGrid 列 编 辑 器 进 入 列 任 务 菜 单, 在 编 辑 掩 码 框 中 单 击 省 略 号 按 钮 进 入 C1FlexGrid 列 编 辑 器, 找 到 左 窗 格 中 的 编 辑 掩 码 属 性, 并 单 击 它 旁 边 的 省 略 号 按 钮 注 意 : 输 入 掩 码 对 话 框 是 特 定 的 列, 并 且 只 会 更 改 所 选 定 的 列 的 编 辑 掩 码 属 性 有 关 建 立 掩 码 字 符 串 的 语 法 的 详 细 信 息, 请 参 阅 该 控 件 参 考 资 料 部 分 的 编 辑 掩 码 属 性 如 果 在 同 一 列 的 不 同 单 元 格 需 要 不 同 的 掩 码, 需 要 捕 获 编 辑 前 事 件, 并 为 当 前 单 元 格 将 编 辑 掩 码 属 性 设 置 一 个 的 适 当 的 值 验 证 在 许 多 情 况 下, 为 确 保 用 户 的 数 据 输 入 是 有 效 的, 只 有 编 辑 掩 码 是 不 够 的 例 如, 掩 码 不 会 让 你 指 定 一 个 可 能 值 的 范 围, 或 以 另 一 个 单 元 格 的 内 容 为 基 础 来 验 证 当 前 单 元 格 在 这 些 情 况 下, 需 要 捕 获 验 证 编 辑 事 件, 看 看 在 编 辑 器 - 文 本 属 性 中 包 含 的 值 是 不 是 当 前 单 元 格 的 有 效 条 目 ( 在 这 一 点 上, 单 元 格 仍 然 有 它 的 原 始 值 ) 如 果 该 输 入 的 是 无 效 的, 将 取 消 参 数 设 置 为 真, 表 格 将 保 持 编 辑 模 式 直 到 用 户 输 入 一 个 有 效 的 条 目 例 如, 将 下 面 的 代 码 验 证 输 入 到 一 个 货 币 列, 以 确 保 输 入 的 值 处 于 1000 和 产 品 网 站 : 咨 询 热 线 : of 269

54 10000 之 间 : Visual Basic Private Sub _flex_validateedit(byval sender As Object, ByVal e As C1.Win.C1FlexGrid.ValidateEditEventArgs) Handles _flex.validateedit ' 验 证 金 额 If _flex.cols(e.col).datatype Is GetType(Decimal) Then Try Dim dec As Decimal = Decimal.Parse(_flex.Editor.Text()) If (dec < 1000) Or (dec > 10000) Then MessageBox.Show("Value must be between 1,000 and 10,000") e.cancel = True End If Catch MessageBox.Show("Value not recognized as a Currency") e.cancel = True End Try End If End Sub 产 品 网 站 : 咨 询 热 线 : of 269

55 C# private void _flex_validateedit( object sender, ValidateEditEventArgs e) // 验 证 金 额 if (_flex.cols[e.col].datatype == typeof(decimal)) try Decimal dec = Decimal.Parse(_flex.Editor.Text); if ( dec < 1000 dec > ) MessageBox.Show("Value must be between 1,000 and 10,000"); e.cancel = true; catch MessageBox.Show("Value not recognized as a Currency"); e.cancel = true; 产 品 网 站 : 咨 询 热 线 : of 269

56 3.6.7 自 定 义 编 辑 器 内 置 的 编 辑 器 可 以 具 备 很 大 的 灵 活 性 和 能 力, 但 在 某 些 情 况 下, 你 可 能 要 使 用 外 部 控 件 作 为 专 门 的 编 辑 器 例 如, 你 可 能 想 使 用 提 供 了 一 个 下 拉 计 算 器 的 C1NumericInput 控 件 来 输 入 数 字, 或 使 用 一 个 编 辑 器 来 从 多 列 的 列 表 中 进 行 选 择, 或 你 可 以 用 自 己 写 的 一 个 专 门 的 控 件 来 编 辑 你 的 业 务 对 象 从 基 本 的 控 件 类 型 派 生 出 的 任 何 控 件 都 可 以 作 为 一 个 基 本 的 表 格 编 辑 器 使 用 实 现 了 IC1EmbeddedEditor 接 口 ( 在 C1.Common.dll 的 定 义 ) 的 控 件 可 以 用 表 格 提 供 更 好 的 整 合 和 更 先 进 的 功 能 有 关 IC1EmbeddedEditor 接 口 的 更 多 详 细 信 息, 请 参 阅 编 辑 属 性 要 将 一 个 控 件 作 为 自 定 义 编 辑 器 来 使 用, 所 有 你 必 须 要 做 的 就 是 使 用 其 编 辑 属 性 将 控 件 的 一 个 实 例 与 一 个 表 格 列 或 一 个 样 式 关 联 到 一 起 你 可 以 在 设 计 器 ( 使 用 列 编 辑 器 ) 或 在 代 码 中 实 现 这 步 操 作 在 此 之 后, 表 格 将 自 动 使 用 该 控 件 要 在 设 计 时 定 义 自 定 义 编 辑 器, 先 要 将 编 辑 器 控 件 的 一 个 实 例 添 加 到 窗 体, 然 后 从 C1FlexGrid 任 务 菜 单 上 选 择 设 计 器 来 打 开 C1FlexGrid 列 编 辑 器 选 择 应 使 用 自 定 义 编 辑 器 的 列, 并 将 其 编 辑 器 的 属 性 设 置 为 新 的 编 辑 器 控 件 的 名 称 例 如, 要 将 NumericUpDown 控 件 作 为 一 个 表 格 编 辑 器 使 用, 请 按 照 下 列 步 骤 操 作 : 1. 添 加 一 个 C1FlexGrid 控 件 到 窗 体 2. 将 NumericUpDown 控 件 添 加 到 窗 体, 并 将 其 边 框 样 式 属 性 设 置 为 无 3. 从 C1FlexGrid 任 务 菜 单 上 选 择 设 计 器 有 关 访 问 C1FlexGrid 列 编 辑 器 的 更 多 详 细 信 息, 请 参 阅 访 问 C1FlexGrid 的 列 编 辑 器 ( 第 143 页 ) 4. 在 C1FlexGrid 列 编 辑 器 上, 选 择 第 一 个 滚 动 的 表 格 列, 并 将 它 的 编 辑 器 属 性 设 置 到 NumericUpDown1 运 行 该 项 目 并 编 辑 第 一 列 中 的 一 些 值 请 注 意 表 格 如 何 定 位 和 初 始 化 NumericUpDown 控 件, 以 便 你 可 以 编 辑 单 元 格 的 值 当 你 完 成 对 一 个 单 元 格 的 编 辑, 单 击 不 同 的 单 元 格 或 按 TAB 键 来 移 动 到 下 一 个 请 注 意 新 的 值 是 如 何 应 用 到 单 元 格 的 你 也 可 以 使 用 代 码 来 给 表 格 指 定 自 定 义 编 辑 器 : 产 品 网 站 : 咨 询 热 线 : of 269

57 Visual Basic Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 创 建 自 定 义 编 辑 器 Dim editor as New NumericUpDown() editor.borderstyle = BorderStyle.None ' 将 自 定 义 编 辑 器 分 配 到 表 格 _flex.cols(1).editor = editor End Sub C# 创 建 自 定 义 编 辑 器 从 Control 基 类 派 生 出 的 任 何 控 件 都 可 以 用 来 作 为 一 个 表 格 编 辑 器 使 用 这 是 完 全 有 可 能 的, 因 为 在 访 问 诸 如 文 本 和 界 限 之 类 的 属 性, 或 诸 如 请 假 和 文 本 变 更 之 类 的 事 件 时, 表 格 对 基 类 控 件 有 足 够 的 了 解 在 很 多 情 况 下, 这 种 程 度 的 支 持 就 足 够 了 然 而, 在 某 些 情 况 下, 你 可 能 想 使 用 一 些 不 那 么 密 切 地 遵 守 基 类 的 控 件 例 如, 日 期 时 间 提 取 器 控 件 有 一 个 值 属 性, 它 应 该 用 来 检 索 编 辑 过 的 值, 而 不 是 文 本 的 值 在 这 些 情 况 下, 你 可 以 在 IC1EmbeddedEditor 接 口 上 实 现 一 个 或 多 个 方 法 来 覆 盖 默 认 的 行 为 例 如, 在 C1Input 库 中 所 有 控 件 都 支 持 IC1EmbeddedEditor, 因 此, 它 与 C1FlexGrid( 还 有 C1TrueDBGrid) 整 合 密 切 IC1EmbeddedEditor 接 口 相 当 简 单, 并 且 由 于 表 格 是 使 用 后 期 绑 定 与 之 相 结 合 的, 你 甚 至 不 需 要 实 现 其 所 有 成 员 只 需 要 落 实 那 个 对 你 的 编 辑 器 控 件 有 意 义 的 即 可 private void Form1_Load(object sender, System.EventArgs e) // 创 建 自 定 义 编 辑 器 NumericUpDown editor = new NumericUpDown(); editor.borderstyle = BorderStyle.None; // 将 自 定 义 编 辑 器 分 配 到 表 格 _flex.cols[1].editor = editor; 接 口 确 实 提 供 了 足 够 的 灵 活 性 来 使 几 乎 所 有 的 控 件 都 能 作 为 一 个 表 格 编 辑 器 使 用 你 甚 至 可 以 使 用 UITypeEditor 这 些 类 型 来 作 为 表 格 编 辑 器 要 做 到 这 一 点, 你 需 要 一 个 包 装 类 : 1. 派 生 于 Control(UITypeEditor 不 可 以 ) 产 品 网 站 : 咨 询 热 线 : of 269

58 2. 实 现 IC1EmbeddedEditor 接 口 3. 封 装 相 应 的 UITypeEditor 我 们 在 CustomEditors 样 品 中 为 这 个 包 装 类 提 供 的 源 代 码 使 用 UITypeEditor 包 装 类, 你 可 以 与 C1FlexGrid 一 起 使 用 任 何 UITypeEditors.NET 可 以 为 编 辑 颜 色, 字 体, 文 件 名 等 提 供 几 个 UITypeEditors 你 也 可 以 自 己 写 UITypeEditors, 在 某 些 情 况 下, 这 比 写 控 件 容 易 可 用 的 示 例 项 目 例 如 与 C1FlexGrid 一 起 使 用 内 置 的 自 定 义 的 和 UITypeEditor 编 辑 器, 请 在 ComponentOne 帮 助 中 心 上 参 阅 自 定 义 编 辑 器 样 本 产 品 网 站 : 咨 询 热 线 : of 269

59 3.6.8 编 辑 模 式 你 可 以 通 过 阅 读 编 辑 属 性 值 来 确 定 表 格 是 否 处 于 编 辑 模 式 如 果 这 个 属 性 恢 复 为 无 效, 则 表 格 不 是 在 编 辑 模 式 不 然, 属 性 恢 复 一 个 引 用 值 到 正 在 用 于 编 辑 该 单 元 格 的 控 件 ( 该 控 件 可 能 是 一 个 文 本 框, 一 个 组 合 框, 或 其 他 类 型 的 控 件 ), 表 格 就 是 处 于 编 辑 模 式 你 可 以 开 始 编 辑 的 方 法 将 表 格 程 式 化 地 设 定 在 编 辑 模 式 下, 并 使 用 完 成 编 辑 的 方 法 来 完 成 编 辑 你 可 以 通 过 处 理 表 格 触 发 的 编 辑 事 件 来 进 一 步 地 控 制 整 个 编 辑 过 程 在 编 辑 一 个 单 元 格 的 过 程 中, 表 格 会 触 发 以 下 一 系 列 事 件 : 事 件 描 述 编 辑 前 开 始 编 辑 安 装 编 辑 器 一 个 可 编 辑 的 单 元 格 被 选 中 时 会 触 发 该 事 件 你 可 以 通 过 将 事 件 的 取 消 参 数 设 置 为 真 来 防 止 单 元 格 被 编 辑 你 还 可 以 修 改 组 合 列 表 的 属 性, 以 便 使 适 当 的 下 拉 按 钮 被 画 在 单 元 格 中 请 注 意, 用 户 可 能 不 会 在 这 之 后 真 正 开 始 编 辑, 他 可 以 简 单 地 将 选 择 移 动 到 一 个 不 同 的 单 元 格 或 控 件 除 了 用 户 已 经 在 单 元 格 中 敲 下 了 一 个 键 或 点 击 了 下 拉 按 钮 并 真 正 开 始 编 辑 以 外, 该 事 件 与 编 辑 前 事 件 类 似 你 仍 然 可 以 在 这 一 点 上 取 消 编 辑 请 注 意, 在 这 一 点 上 编 辑 器 属 性 仍 然 是 空, 因 为 该 控 件 目 前 还 没 有 确 定 应 该 使 用 的 编 辑 器 的 类 型 您 可 以 在 这 一 点 上 指 定 自 定 义 编 辑 器 到 编 辑 器 属 性 该 事 件 触 发 的 时 间 是 编 辑 器 控 件 已 经 创 建 并 且 配 置 好 去 编 辑 该 单 元 格 之 后, 但 在 它 被 显 示 之 前 产 品 网 站 : 咨 询 热 线 : of 269

60 验 证 编 辑 编 辑 后 在 这 一 点 上, 你 可 以 改 变 编 辑 器 的 属 性 ( 例 如, 在 文 本 框 编 辑 器 中 设 置 最 大 长 度 或 密 码 字 符 ) 你 还 可 以 将 自 己 的 事 件 处 理 程 序 添 加 到 编 辑 器 该 事 件 触 发 的 时 间 是 当 用 户 完 成 编 辑 且 编 辑 器 的 值 被 复 制 回 表 格 之 前 你 可 以 通 过 从 表 格 中 检 索 它 来 检 查 原 始 值 ( 该 事 件 可 以 提 供 单 元 格 的 坐 标 ) 你 可 以 通 过 编 辑 器 属 性 ( 例 如,Editor.Text) 来 检 查 被 分 配 到 表 格 的 新 值 如 果 新 的 值 对 单 元 格 无 效, 请 将 取 消 参 数 设 置 为 真, 则 表 格 将 保 持 在 编 辑 模 式 相 反, 如 果 不 想 将 单 元 格 保 持 在 编 辑 模 式 下, 你 最 好 还 是 恢 复 原 来 的 值 并 离 开 编 辑 模 式, 设 置 取 消 为 真, 然 后 使 用 完 成 编 辑 方 法 该 事 件 触 发 的 时 间 是 新 的 值 已 经 被 应 用 到 单 元 格 且 编 辑 器 已 停 用 之 后 你 可 以 使 用 该 事 件 来 更 新 任 何 依 赖 于 单 元 格 值 的 东 西 ( 例 如, 分 类 汇 总 或 排 序 ) 3.7 合 并 单 元 格 C1FlexGrid 控 件 允 许 你 合 并 单 元 格, 使 他 们 跨 越 多 个 行 或 列 这 个 功 能 可 以 用 来 增 强 在 表 格 上 显 示 的 数 据 的 外 观 和 清 晰 度 这 些 设 置 的 作 用 与 HTML<ROWSPAN> 和 <COLSPAN> 标 签 类 似 若 要 使 单 元 格 能 够 合 并, 以 下 两 件 事 你 必 须 要 做 : 1. 将 表 格 允 许 合 并 属 性 设 置 为 无 以 外 的 任 何 值 ( 每 个 设 置 的 效 果 都 会 在 参 考 部 分 得 到 解 释 ) 产 品 网 站 : 咨 询 热 线 : of 269

61 2. 如 果 你 想 要 合 并 列, 必 须 将 你 想 合 并 的 每 一 列 的 允 许 合 并 属 性 设 置 为 真 如 果 你 想 要 合 并 行, 必 须 将 你 想 合 并 的 每 一 行 的 允 许 合 并 属 性 设 置 为 真 如 果 相 邻 的 单 元 格 中 含 有 相 同 的 非 空 字 符 串, 合 并 就 会 发 生 没 有 一 种 方 法 能 迫 使 一 对 单 元 格 合 并 到 一 起 合 并 会 在 单 元 格 内 容 的 基 础 上 自 动 完 成 当 相 邻 行 中 的 值 呈 现 重 复 数 据 的 时 候, 这 可 以 很 容 易 地 提 供 排 序 数 据 的 合 并 后 的 视 图 单 元 格 合 并 有 几 种 可 能 的 用 途 例 如, 当 文 本 溢 出 到 相 邻 列 时, 你 可 以 用 它 来 创 建 合 并 的 表 头, 合 并 后 的 数 据 视 图, 或 表 格 合 并 表 头 要 创 建 合 并 表 头, 你 必 须 通 过 将 表 格 的 允 许 合 并 属 性 设 置 到 FixedOnly 来 启 动 然 后, 通 过 设 置 行 和 列 的 允 许 合 并 属 性 来 指 定 要 合 并 的 行 和 列 最 后, 将 文 本 分 配 到 标 题 单 元 格, 以 便 你 要 合 并 的 单 元 格 具 有 相 同 的 内 容 下 面 的 代 码 显 示 了 一 个 例 子 : 产 品 网 站 : 咨 询 热 线 : of 269

62 Visual Basic Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i% ' 初 始 化 该 控 件 _flex.styles.normal.wordwrap = True _flex.cols.count = 9 _flex.rows.fixed = 2 _flex.allowmerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly ' 创 建 行 标 题 _flex.rows(0).allowmerging = True ' 合 并 含 有 相 同 内 容 的 四 个 单 元 格 Dim rng As C1.Win.C1FlexGrid.CellRange = _flex.getcellrange(0, 1, 0, 4) rng.data = "North" ' 合 并 含 有 相 同 内 容 的 四 个 单 元 格 rng = _flex.getcellrange(0, 5, 0, 8) rng.data = "South" For i = 1 To 4 _flex(1, i) = "Qtr " & i _flex(1, i + 4) = "Qtr " & i Next ' 创 建 列 标 题 _flex.cols(0).allowmerging = True ' 合 并 含 有 相 同 的 内 容 的 两 个 单 元 格 rng = _flex.getcellrange(0, 0, 1, 0) rng.data = "Sales by Product" ' 对 齐 单 元 格 和 自 动 调 整 单 元 格 大 小 _flex.styles.fixed.textalign = C1.Win.C1FlexGrid.TextAlignEnum.CenterCenter _flex.autosizecols(1, _flex.cols.count - 1, 10) 产 品 网 站 : 咨 询 热 线 : of 269

63 C# private void Form1_Load(System.object sender, System.EventArgs e) int i; // 初 始 化 该 控 件 _flex.styles.normal.wordwrap = true; _flex.cols.count = 9; _flex.rows.fixed = 2; _flex.allowmerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly; // 创 建 行 标 题 _flex.rows[0].allowmerging = true; // 合 并 含 有 相 同 内 容 的 四 个 单 元 格 C1.Win.C1FlexGrid.CellRange rng = _flex.getcellrange(0, 1, 0, 4); rng.data = "North"; // 合 并 含 有 相 同 内 容 的 四 个 单 元 格 rng = _flex.getcellrange(0, 5, 0, 8); rng.data = "South"; for ( i = 1 ; i <= 4; i++) _flex[1, i] = "Qtr " + i; _flex[1, i + 4] = "Qtr " + i; // 创 建 列 标 题 _flex.cols[0].allowmerging = true; // 合 并 含 有 相 同 的 内 容 的 两 个 单 元 格 rng = _flex.getcellrange(0, 0, 1, 0); rng.data = "Sales by Product"; // 对 齐 单 元 格 和 自 动 调 整 单 元 格 大 小 _flex.styles.fixed.textalign = C1.Win.C1FlexGrid.TextAlignEnum.CenterCenter; _flex.autosizecols(1, _flex.cols.count - 1, 10); 以 下 是 结 果 : 产 品 网 站 : 咨 询 热 线 : of 269

64 3.7.2 合 并 后 的 数 据 视 图 当 表 格 被 绑 定 到 一 个 数 据 源 时, 单 元 格 合 并 会 以 同 样 的 方 式 进 行 下 面 的 代 码 显 示 了 一 个 在 设 计 时 表 格 绑 定 到 数 据 源 的 例 子 有 关 绑 定 到 一 个 数 据 源 的 更 多 详 细 信 息, 请 参 阅 绑 定 到 一 个 数 据 源 ( 第 95 页 ) Visual Basic Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i% ' 设 置 单 元 格 合 并 _flex.allowmerging = C1.Win.C1FlexGrid.AllowMergingEnum.RestrictCols For i = _flex.cols.fixed To _flex.cols.count - 1 _flex.cols(i).allowmerging = True Next End Sub C# private void Form1_Load( System.object sender, System.EventArgs e) int i; // 设 置 单 元 格 合 并 _flex.allowmerging = C1.Win.C1FlexGrid.AllowMergingEnum.RestrictCols; for (int i = _flex.cols.fixed; i <= _flex.cols.count - 1; i++) _flex.cols(i).allowmerging = true; 以 下 是 结 果 : 产 品 网 站 : 咨 询 热 线 : of 269

65 请 注 意 合 并 单 元 格 是 如 何 在 分 组 数 据 和 使 表 格 中 的 信 息 更 容 易 理 解 上 具 有 视 觉 效 果 的 可 用 的 示 例 项 目 有 关 合 并 后 数 据 视 图 用 C1FlexGrid 显 示 的 一 个 示 例, 请 参 阅 ComponentOne 帮 助 中 心 中 的 单 元 格 合 并 样 本 产 品 网 站 : 咨 询 热 线 : of 269

66 3.7.3 溢 出 文 本 允 许 合 并 属 性 有 两 个 设 置, 它 们 不 同 于 其 他 的 操 作, 也 不 需 要 你 在 特 定 的 行 和 列 来 设 置 允 许 合 并 属 性 溢 出 设 置 溢 出 设 置 会 导 致 太 长 而 不 适 合 于 一 个 单 元 格 的 文 本 蔓 延 到 相 邻 的 空 单 元 格 中 这 种 结 果 式 的 行 为 与 Microsoft Excel 中 的 类 似 如 果 你 在 一 个 单 元 格 中 键 入 一 个 长 项 而 相 邻 的 单 元 格 是 空 的, 则 该 项 可 能 会 溢 出 所 在 单 元 格 来 占 据 所 需 要 的 尽 可 能 多 的 空 间 例 如, 下 面 的 图 片 显 示 了 当 允 许 合 并 属 性 设 置 为 溢 出 且 用 户 输 入 了 不 同 长 度 的 条 目 时, 一 个 表 格 看 起 来 是 什 么 样 子 的 : 节 点 设 置 节 点 设 置 是 与 溢 出 类 似, 但 只 适 用 于 勾 勒 节 点 当 数 据 被 组 合 成 组, 且 在 节 点 行 中 所 包 含 的 格 式 中 的 信 息 与 数 据 行 不 同 时, 此 设 置 是 非 常 有 用 的 例 如, 下 面 的 图 片 显 示 了, 当 数 据 被 用 C1FlexGridBase.Subtotal 方 法 分 组 和 总 结, 随 后 节 点 被 设 置 为 允 许 合 并 时, 一 个 表 格 看 起 来 是 什 么 样 子 的 : 此 图 片 与 在 创 建 汇 总 ( 第 67 页 ) 主 题 中 的 那 个 类 似 所 不 同 的 是, 现 产 品 网 站 : 咨 询 热 线 : of 269

67 在 小 计 行 ( 节 点 ) 溢 出 到 相 邻 的 空 单 元 格, 改 善 了 表 格 的 外 观 产 品 网 站 : 咨 询 热 线 : of 269

68 3.7.4 自 定 义 合 并 你 可 以 通 过 两 种 途 径 自 定 义 默 认 的 合 并 行 为 : 将 一 个 自 定 义 的 IComparer 类 分 配 到 CustomComparer 属 性 o 默 认 情 况 下, 表 格 会 将 包 含 相 同 的 非 空 值 的 相 邻 的 单 元 格 合 并 到 一 起 字 符 串 比 较 是 区 分 大 小 写 的, 且 包 括 空 白 o 如 果 你 想 让 表 格 用 大 小 不 敏 感 的 比 较 和 修 剪 空 白 来 合 并 单 元 格, 你 可 以 写 一 个 自 定 义 的 类, 用 它 来 实 现 Icomparer, 并 且 将 它 分 配 到 CustomComparer 属 性 写 一 个 从 C1FlexGrid 派 生 出 的 新 类 别, 并 通 过 提 供 自 己 的 自 定 义 合 并 逻 辑 来 覆 盖 GetMergedRange 虚 拟 方 法 可 用 的 示 例 项 目 有 关 可 以 显 示 如 何 实 现 自 定 义 的 合 并 逻 辑 的 样 本, 请 参 阅 如 下 样 本, ComponentOne 帮 助 中 心 的 自 定 义 合 并, 自 定 义 合 并 2, 自 定 义 合 并 3, 自 定 义 合 并 概 述 和 汇 总 数 据 C1FlexGrid 控 件 具 有 可 以 让 你 汇 总 数 据 并 以 分 层 方 式 显 示 的 方 法 和 属 性 若 要 汇 总 数 据 并 添 加 聚 合 值, 请 使 用 C1FlexGrid.Subtotal 方 法 若 要 显 示 数 据 的 分 层 视 图, 请 使 用 树 型 属 性 创 建 分 类 汇 总 C1FlexGrid.Subtotal 方 法 可 以 增 加 包 含 普 通 ( 非 小 计 ) 行 的 汇 总 数 据 的 分 类 汇 总 行 分 类 汇 总 支 持 分 层 聚 合 例 如, 如 果 你 的 表 格 包 含 销 售 数 据, 你 可 能 会 通 过 产 品 地 区 和 推 销 员 来 小 计 一 下 以 得 出 总 的 销 售 数 字 下 面 的 代 码 说 明 了 这 一 点 : 产 品 网 站 : 咨 询 热 线 : of 269

69 Visual Basic Private Sub ShowTotals() ' 在 第 零 列 显 示 大 纲 栏 _flex.tree.column = 0 _flex.tree.style = TreeStyleFlags.Simple ' 清 除 现 有 的 分 类 汇 总 _flex.subtotal(aggregateenum.clear) ' 获 得 总 计 ( 使 用 -1, 而 不 是 列 索 引 ) _flex.subtotal(aggregateenum.sum, -1, -1, 3, "Grand Total") ' 每 个 产 品 的 总 计 ( 第 零 列 ) _flex.subtotal(aggregateenum.sum, 0, 0, 3, "Total 0") ' 每 个 区 域 的 总 计 ( 第 一 列 ) _flex.subtotal(aggregateenum.sum, 1, 1, 3, "Total 0") ' 基 于 内 容 来 调 整 列 宽 _flex.autosizecols() End Sub C# private void ShowTotals() // 在 第 零 列 显 示 大 纲 栏 _flex.tree.column = 0; _flex.tree.style = TreeStyleFlags.Simple; // 清 除 现 有 的 分 类 汇 总 _flex.subtotal(aggregateenum.clear); // 获 得 总 计 ( 使 用 -1, 而 不 是 列 索 引 ) _flex.subtotal(aggregateenum.sum, -1, -1, 3, "Grand Total"); // 每 个 产 品 的 总 计 ( 第 零 列 ) _flex.subtotal(aggregateenum.sum, 0, 0, 3, "Total 0"); // 每 个 区 域 的 总 计 ( 第 一 列 ) _flex.subtotal(aggregateenum.sum, 1, 1, 3, "Total 0"); // 基 于 内 容 来 调 整 列 宽 _flex.autosizecols(); 当 C1FlexGrid.Subtotal 方 法 添 加 了 汇 总 信 息 行, 它 会 自 动 分 配 汇 总 样 式 到 新 的 行 ( 有 五 个 层 级 的 分 类 汇 总 内 置 样 式 ) 你 可 以 使 用 样 式 编 辑 器 或 代 码 在 设 计 器 中 改 变 大 纲 样 式 的 属 性, 以 此 来 自 定 义 分 类 汇 总 行 的 外 观 例 如 : Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

70 ' 设 置 分 类 汇 总 的 样 式 Dim cs As C1.Win.C1FlexGrid.CellStyle cs = _flex.styles(c1.win.c1flexgrid.cellstyleenum.grandtotal) cs.backcolor = Color.Black cs.forecolor = Color.White cs.font = New Font(Font, FontStyle.Bold) cs = _flex.styles(c1.win.c1flexgrid.cellstyleenum.subtotal0) cs.backcolor = Color.DarkRed cs.forecolor = Color.White cs.font = New Font(Font, FontStyle.Bold) cs = _flex.styles(c1.win.c1flexgrid.cellstyleenum.subtotal1) cs.backcolor = Color.DarkBlue cs.forecolor = Color.White C# // 设 置 分 类 汇 总 的 样 式 CellStyle cs; cs = _flex.styles[cellstyleenum.grandtotal]; cs.backcolor = Color.Black; cs.forecolor = Color.White; cs.font = new Font(Font, FontStyle.Bold); cs = _flex.styles[cellstyleenum.subtotal0]; cs.backcolor = Color.DarkRed; cs.forecolor = Color.White; cs.font = new Font(Font, FontStyle.Bold); cs = _flex.styles[cellstyleenum.subtotal1]; cs.backcolor = Color.DarkBlue; cs.forecolor = Color.White; 执 行 此 代 码 后, 表 格 看 起 来 是 这 样 的 : 产 品 网 站 : 咨 询 热 线 : of 269

71 总 计 行 中 包 含 的 所 有 产 品, 地 区 和 销 售 人 员 的 销 售 总 额 它 是 使 用 groupon 参 数 -1 在 调 用 C1FlexGrid.Subtotal 方 法 时 被 创 建 的 其 他 分 类 汇 总 显 示 产 品 和 地 区 的 销 售 总 额 他 们 是 用 Groupon 的 参 数 值 0 和 1 创 造 的 除 了 总 量 之 外, 你 也 可 以 计 算 其 他 分 类 汇 总 ( 例 如, 平 均 值 或 百 分 比 ), 并 计 算 每 一 行 的 几 个 汇 总 ( 例 如, 毛 销 售 额 及 净 销 售 额 ) 由 分 类 汇 总 的 方 法 创 建 的 小 计 行 不 同 于 其 他 普 通 行, 主 要 体 现 在 三 个 方 面 : 1. 以 flexstclear 参 数 来 调 用 分 类 汇 总 的 方 法, 小 计 行 可 以 被 自 动 删 除 在 用 户 可 以 移 动 列 并 对 数 据 进 行 重 新 排 序 的 地 方, 重 新 计 算 分 类 汇 总 很 有 必 要, 而 这 在 提 供 数 据 的 动 态 视 图 方 面 非 常 有 用 2. 小 计 行 可 作 为 一 个 大 纲 中 的 节 点 使 用, 它 可 以 让 你 折 叠 和 展 开 行 组 来 展 现 数 据 的 概 述 或 透 露 其 细 节 要 看 到 大 纲 的 树 型 图, 你 需 要 设 置 列 和 树 型 样 式 的 属 性 来 确 定 大 纲 树 型 图 的 位 置 和 外 观 3. 小 计 行 可 以 被 视 为 树 型 结 构 上 的 的 节 点 通 过 节 点 属 性, 你 可 以 为 任 何 小 计 行 获 得 一 个 节 点 对 象 4. 当 表 格 被 绑 定 到 一 个 数 据 源, 小 计 行 并 不 符 合 实 际 的 数 据 如 果 你 在 数 据 源 中 移 动 光 标, 则 小 计 行 将 在 表 格 中 被 跳 过 大 纲 树 型 图 可 以 允 许 用 户 通 过 点 击 节 点 来 折 叠 和 展 开 表 格 的 各 部 分 你 可 以 使 用 大 纲 树 型 图 来 显 示 许 多 类 型 的 信 息, 不 仅 仅 是 汇 总 这 一 种 下 一 主 题 将 会 指 出 如 何 创 建 一 个 自 定 义 的 大 纲 树 型 图 来 显 示 目 录 信 息 产 品 网 站 : 咨 询 热 线 : of 269

72 3.8.2 创 建 自 定 义 树 型 图 要 想 不 使 用 分 类 汇 总 法 来 创 建 大 纲 树 型 图, 你 需 要 遵 循 以 下 步 骤 : 1. 将 行 添 加 到 表 格 中 2. 通 过 将 他 们 的 是 节 点 属 性 设 置 为 真, 将 一 些 行 转 变 成 大 纲 的 节 点 3. 获 得 每 个 节 点 行 的 节 点 对 象, 并 设 置 其 等 级 属 性 来 确 定 树 型 层 次 结 构 中 节 点 的 位 置 值 越 高 意 味 着 该 节 点 在 大 纲 树 型 图 中 越 深 入 ( 缩 进 得 多 ) 例 如, 下 面 的 代 码 可 以 创 建 一 个 目 录 树 : 产 品 网 站 : 咨 询 热 线 : of 269

73 Visual Basic ' 在 窗 体 的 顶 部 添 加 这 些 输 入 声 明 Imports System.IO Imports C1.Win.C1FlexGrid Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 初 始 化 表 格 布 局 _flex.cols.fixed = 0 _flex.cols.count = 1 _flex.rows.count = 1 _flex.extendlastcol = True _flex.styles.normal.textalign = TextAlignEnum.LeftCenter _flex.styles.normal.border.style = BorderStyleEnum.None ' 显 示 大 纲 树 型 图 _flex.tree.column = 0 _flex.tree.style = TreeStyleFlags.SimpleLeaf _flex.tree.linecolor = Color.DarkBlue ' 填 充 表 格 AddDirectory("c:\", 0) End Sub C# 产 品 网 站 : 咨 询 热 线 : of 269

74 // 在 窗 体 的 顶 部 添 加 这 些 输 入 声 明 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using C1.Win.C1FlexGrid; private void Form1_Load(object sender, EventArgs e) // 初 始 化 表 格 布 局 _flex.cols.fixed = 0; _flex.cols.count = 1; _flex.rows.count = 1; _flex.extendlastcol = true; _flex.styles.normal.textalign = TextAlignEnum.LeftCenter; _flex.styles.normal.border.style = BorderStyleEnum.None; // 显 示 大 纲 树 型 图 _flex.tree.column = 0; _flex.tree.style = TreeStyleFlags.SimpleLeaf; _flex.tree.linecolor = Color.DarkBlue; // 填 充 表 格 AddDirectory(@"c:\\", 0); 产 品 网 站 : 咨 询 热 线 : of 269

75 以 上 的 代 码 初 始 化 了 表 格 布 局, 并 且 调 用 了 添 加 目 录 程 序, 这 意 味 着 做 了 填 充 网 格 和 建 立 的 树 型 结 构 的 工 作 : Visual Basic Private Sub AddDirectory(ByVal dir As String, ByVal level As Integer) ' 添 加 该 目 录 Dim thisdir As String thisdir = Path.GetFileName(dir) If thisdir.length = 0 Then thisdir = dir _flex.additem(thisdir) ' 使 这 个 新 行 成 为 一 个 节 点 Dim row As Row row = _flex.rows(_flex.rows.count - 1) row.isnode = True ' 设 置 该 节 点 的 层 级 Dim nd As Node nd = row.node nd.level = level ' 在 此 目 录 中 添 加 文 件 Dim file As String, cnt As Integer, r As Row cnt = 0 For Each file In Directory.GetFiles(dir) _flex.additem(path.getfilename(file).tolower()) r = _flex.rows(_flex.rows.count 1) r.isnode = True r.node.level = level + 1 cnt = cnt + 1 If cnt > 10 Then Exit For Next ' 添 加 子 目 录 ( 到 4 级 ) If level <= 4 Then Dim subdir As String cnt = 0 For Each subdir In Directory.GetDirectories(dir) AddDirectory(subdir, level + 1) cnt = cnt + 1 If cnt > 10 Then Exit For Next C# 添 加 目 录 是 一 个 递 归 程 序, 它 横 跨 当 前 目 录 及 其 所 有 子 目 录 在 这 个 产 品 网 站 : 咨 询 热 线 : of 269

76 private void AddDirectory(string dir, int level) // 添 加 该 目 录 string thisdir = Path.GetFileName(dir); if (thisdir.length == 0) thisdir = dir; _flex.additem(thisdir); // 使 这 个 新 行 成 为 一 个 节 点 Row row = _flex.rows[_flex.rows.count - 1]; row.isnode = true; // 设 置 该 节 点 的 层 级 Node nd = row.node; nd.level = level; // 在 此 目 录 中 添 加 文 件 int cnt = 0; Row r; foreach (string file in Directory.GetFiles(dir)) _flex.additem(path.getfilename(file).tolower()); // 将 没 有 子 行 的 行 标 记 为 节 点 r = _flex.rows[_flex.rows.count - 1]; r.isnode = true; r.node.level = level + 1; cnt = cnt + 1; if (cnt > 10) break; // 添 加 子 目 录 ( 到 4 级 ) if (level <= 4) cnt = 0; foreach (string subdir in Directory.GetDirectories(dir)) AddDirectory(subdir, level + 1); cnt = cnt + 1; if (cnt > 10) break; 例 子 中, 为 了 节 省 时 间, 树 的 大 小 局 限 在 四 个 目 录 层 次 在 实 际 应 用 中, 当 它 们 被 扩 大 时 该 程 序 应 改 为 仅 填 充 树 型 分 支 ( 请 参 阅 式 FlexGrid for WinForms 教 产 品 网 站 : 咨 询 热 线 : of 269

77 程 ( 第 107 页 )) 此 代 码 可 以 创 建 一 个 表 格, 看 起 来 如 下 图 : 用 C1FlexGrid 控 件 来 创 建 大 纲 和 树 型 图 C1FlexGrid 控 件 独 特 的 和 流 行 的 特 点 之 一 是 能 够 添 加 层 次 分 组 到 常 规 的 非 结 构 化 数 据 为 了 实 现 这 一 目 标,C1FlexGrid 介 绍 了 节 点 行 的 概 念 节 点 行 不 包 含 常 规 的 数 据 相 反, 他 们 作 为 表 头 在 类 似 数 据 的 分 组 下 面 运 作, 酷 似 一 个 常 规 TreeView 控 件 中 的 节 点 就 像 一 个 TreeView 控 件 中 的 节 点, 节 点 行 可 以 折 叠 和 扩 展, 隐 藏 或 显 示 它 们 所 包 含 的 数 据 像 一 个 TreeView 控 件 中 的 节 点 的 另 一 方 面 是, 节 点 行 有 一 个 能 定 义 节 点 层 次 的 层 级 属 性 较 低 级 别 的 节 点 包 含 较 高 级 别 的 节 点 例 如, 假 设 你 有 一 个 可 以 显 示 客 户 名 称, 国 家, 城 市, 销 售 额 的 表 格 这 种 典 型 的 表 格 通 常 看 起 来 是 这 样 的 k 产 品 网 站 : 咨 询 热 线 : of 269

78 所 有 的 信 息 都 是 存 在 的, 但 很 难 看 到 每 一 个 国 家 或 客 户 的 总 销 售 额 你 可 以 使 用 C1FlexGrid 的 概 述 功 能 按 国 家 (0 级 ) 对 数 据 进 行 分 组, 然 后 按 每 个 国 家 的 城 市 (1 级 ), 然 后 按 每 个 城 市 的 顾 客 (2 级 ) 下 面 是 加 入 大 纲 之 后 的 相 同 表 格 : 该 表 格 会 像 前 一 个 ( 被 绑 定 到 同 一 数 据 源 的 ) 一 样 显 示 相 同 的 信 息, 但 它 增 加 了 一 个 树 型 图, 那 里 的 每 个 节 点 都 包 含 了 它 下 面 的 数 据 摘 要 节 点 可 以 折 叠 起 来 只 显 示 摘 要, 或 展 开 以 显 示 细 节 请 注 意, 每 个 节 点 一 行 都 可 以 显 示 多 个 列 的 摘 要 ( 在 这 种 情 况 下, 合 计 单 位 销 售 量 并 合 计 总 金 额 ) 在 这 篇 文 章 中, 我 们 将 引 导 你 熟 悉 将 一 个 普 通 的 表 格 转 变 成 一 个 更 丰 富 的 大 纲 型 表 格 的 过 程 加 载 数 据 将 数 据 加 载 到 一 个 大 纲 型 表 格 与 将 其 加 载 到 一 个 普 通 的 表 格 是 完 全 相 同 的 如 果 你 的 数 据 源 在 设 计 时 是 可 用 的, 你 可 以 使 用 Visual Studio 属 性 窗 口 来 设 置 表 格 的 数 据 源 属 性, 并 且 无 需 编 写 任 何 代 码 就 可 以 将 表 格 绑 定 到 数 据 如 果 数 据 源 在 设 计 时 是 不 可 用 的, 你 可 以 在 代 码 中 设 置 表 格 的 数 据 源 属 性 数 据 绑 定 代 码 看 起 来 通 常 是 这 样 的 : 代 码 使 用 一 个 OleDbDataAdapter 来 用 数 据 填 充 一 个 数 据 表, 然 后, 将 数 据 表 分 配 给 表 格 的 数 据 源 属 性 运 行 此 代 码 后, 你 会 看 到 在 第 一 张 图 片 中 显 示 了 一 个 普 通 的 表 格 要 使 这 个 普 通 的 表 格 变 成 第 二 张 图 片 中 显 示 的 那 种 大 纲 型 表 格, 我 们 需 要 插 入 节 点 行 来 整 理 这 个 大 纲 创 建 节 点 行 节 点 行 几 乎 都 是 同 样 的 普 通 行, 但 以 下 情 况 除 外 : 产 品 网 站 : 咨 询 热 线 : of 269

79 public Form1() InitializeComponent(); // 获 取 数 据 var fields Country, City, SalesPerson, Quantity, ExtendedPrice"; var sql = string.format("select 0 FROM Invoices ORDER BY 0", fields); var da = new OleDbDataAdapter(sql, GetConnectionString()); da.fill(_dt); // 将 表 格 绑 定 到 数 据 this._flex.datasource = _dt; // 为 总 价 列 设 置 格 式 _flex.cols["extendedprice"].format = "n2"; 节 点 行 不 是 数 据 绑 定 当 表 格 被 绑 定 到 一 个 数 据 源 时, 每 个 普 通 的 行 会 对 应 数 据 源 中 的 一 个 项 目 而 节 点 行 则 不 然 相 反, 它 们 的 存 在 是 为 了 给 包 含 类 似 数 据 的 普 通 行 分 组 节 点 行 可 以 折 叠 或 展 开 当 一 个 节 点 行 折 叠 起 来 时, 它 的 所 有 数 据 和 子 节 点 都 隐 藏 起 来 了 如 果 大 纲 树 型 图 可 见, 用 户 可 以 用 鼠 标 或 键 盘 来 折 叠 和 展 开 节 点 如 果 大 纲 树 型 图 不 可 见, 则 只 能 用 代 码 来 扩 展 或 折 叠 节 点 你 可 以 使 用 是 节 点 属 性 来 确 定 一 个 行 是 否 是 节 点 行 : 节 点 行 可 以 用 以 下 三 种 方 法 来 创 建 : 1. 使 用 Rows.InsertNode 方 法 这 将 在 指 定 的 索 引 中 插 入 一 个 新 的 节 点 行 一 旦 该 节 点 行 被 创 建 成 功, 你 可 以 像 使 用 任 何 其 他 行 一 样 使 用 它 ( 设 置 每 列 的 数 据 应 用 样 式 等 ) 2. 使 用 C1FlexGrid.Subtotal 方 法 这 种 方 法 会 在 表 格 中 数 据 发 生 变 化 的 地 方 用 可 选 的 分 类 汇 总 来 扫 描 整 个 表 格 并 自 动 插 入 节 点 行 这 是 插 入 汇 总 和 构 建 大 纲 的 高 层 次 方 式 它 只 需 要 非 常 少 的 代 码, 但 对 表 格 中 的 数 据 是 如 何 排 列 的 和 大 纲 看 起 来 应 该 像 什 么 样 子 做 了 一 些 相 关 的 假 设 产 品 网 站 : 咨 询 热 线 : of 269

80 var row = _flex.rows[rowindex]; if (row.isnode) // 该 行 是 一 个 节 点 var node = row.node; DoSomethingWithTheNode(node); else // 该 行 不 是 一 个 节 点 3. 如 果 表 格 是 未 绑 定 的, 那 么 你 可 以 通 过 将 是 节 点 属 性 设 置 为 真 来 将 一 些 普 通 行 变 成 节 点 行 请 注 意, 这 仅 限 于 当 表 格 处 于 未 绑 定 的 状 态 下 试 图 将 一 个 普 通 的 数 据 绑 定 行 变 成 一 个 节 点, 可 能 会 造 成 表 格 抛 出 一 个 异 常 以 下 的 代 码 演 示 了 你 应 该 如 何 来 执 行 一 个 分 组 依 据 程 序, 插 入 节 点 行 并 对 一 个 给 定 列 的 近 似 值 进 行 分 组 产 品 网 站 : 咨 询 热 线 : of 269

81 // 在 给 定 列 上 将 插 入 的 同 一 个 给 定 级 别 的 节 点 分 组 void GroupBy(string columnname, int level) object current = null; for (int r = _flex.rows.fixed; r < _flex.rows.count; r++) if (!_flex.rows[r].isnode) var value = _flex[r, columnname]; if (!object.equals(value, current)) // 值 的 变 化 : 插 入 节 点 _flex.rows.insertnode(r, level); // 在 第 一 个 滚 动 列 显 示 分 组 的 名 称 _flex[r, _flex.cols.fixed] = value; // 更 新 当 前 值 current = value; 产 品 网 站 : 咨 询 热 线 : of 269

82 代 码 可 以 跳 过 现 有 的 节 点 行 ( 因 此 它 可 以 被 称 为 添 加 几 个 层 次 的 节 点 ) 来 扫 描 所 有 列, 并 记 录 分 组 列 的 当 前 值 的 轨 迹 当 当 前 值 发 生 变 化 时, 在 第 一 滚 动 列 会 插 入 一 个 节 点 行, 新 组 的 名 称 会 在 此 显 示 回 到 我 们 的 例 子, 你 可 以 使 用 此 方 法 通 过 调 用 来 创 建 两 个 级 别 的 大 纲 : void _btngroupcountrycity_click(object sender, EventArgs e) GroupBy("Country", 0); GroupBy("City", 1); 产 品 网 站 : 咨 询 热 线 : of 269

83 这 很 简 单, 但 也 有 一 些 需 要 注 意 的 事 项 首 先, 该 方 法 假 定 数 据 是 按 照 大 纲 结 构 进 行 排 序 的 在 这 个 例 子 中, 如 果 数 据 是 按 照 销 售 人 员, 而 不 是 按 照 国 别 排 序 的, 那 么 该 大 纲 中 每 个 国 家 都 会 对 应 好 几 个 零 级 节 点, 这 可 能 并 不 是 你 想 要 的 此 外, 分 组 依 据 程 序 可 以 插 入 许 多 行, 这 可 能 导 致 表 格 闪 烁 不 定 为 了 避 免 这 种 情 况, 通 常 你 应 该 先 将 重 绘 属 性 设 置 为 假, 然 后 再 作 出 更 新, 并 且 当 完 成 后 再 将 其 设 置 回 真 为 了 解 决 这 些 问 题, 用 来 创 建 大 纲 的 代 码 应 该 重 新 编 写 如 下 : void _btngroupcountrycity_click(object sender, EventArgs e) // 暂 停 重 绘, 同 时 更 新 using (new DeferRefresh(_flex)) // 恢 复 原 来 的 排 序 ( 按 照 国 家 城 市 等 ) ResetBinding(); // 按 照 国 家 城 市 来 分 组 GroupBy("Country", 0); GroupBy("City", 1); 产 品 网 站 : 咨 询 热 线 : of 269

84 延 迟 刷 新 类 是 一 种 简 单 的 功 能, 它 可 以 将 表 格 的 重 绘 属 性 设 置 为 假, 并 且 当 它 被 破 坏 时 可 以 恢 复 其 原 有 的 值 这 将 确 保 重 绘 属 性 被 完 全 地 恢 复, 即 便 是 在 更 新 时 发 生 例 外 的 情 况 下 以 下 是 延 迟 刷 新 类 的 执 行 情 况 : 绑 定 表 格 的 方 法 可 以 确 保 表 格 会 按 照 我 们 的 大 纲 结 构 所 需 的 顺 序 排 序 在 我 们 的 例 子 中, 排 序 的 顺 序 是 按 照 国 家 城 市 和 销 售 人 员 代 码 看 起 来 则 是 像 这 个 样 子 的 : 如 果 你 现 在 运 行 此 代 码, 你 会 发 现 该 节 点 行 如 预 期 一 样 创 建, 但 大 纲 树 型 图 是 不 可 见 的, 所 以 你 不 能 展 开 和 折 叠 节 点 下 一 节 会 对 大 纲 树 型 图 进 行 描 述 /// 实 用 工 具 类, 用 于 封 装 在 重 绘 版 块 的 表 格 冗 长 的 操 作 /// 这 样 就 避 免 了 闪 烁, 并 且 可 以 确 保 在 发 生 万 一 的 情 况 下 重 绘 属 性 能 够 妥 善 地 复 位 /// 在 操 作 过 程 中 抛 出 一 个 异 常 class DeferRefresh : IDisposable C1FlexGrid _grid; bool _redraw; public DeferRefresh(C1FlexGrid grid) _grid = grid; _redraw = grid.redraw; grid.redraw = false; public void Dispose() _grid.redraw = _redraw; 产 品 网 站 : 咨 询 热 线 : of 269

85 // unbind and re-bind grid in order to reset everything void ResetBinding() // 解 除 绑 定 表 格 _flex.datasource = null; // 重 置 任 何 自 定 义 排 序 _dt.defaultview.sort = string.empty; // 重 新 绑 定 表 格 _flex.datasource = _dt; // 设 置 总 价 列 的 格 式 _flex.cols["extendedprice"].format = "n2"; // 自 动 调 整 列 宽 以 适 配 其 内 容 flex.autosizecols(); 产 品 网 站 : 咨 询 热 线 : of 269

86 3.8.4 大 纲 树 型 图 大 纲 树 型 图 与 你 在 一 个 普 通 的 树 型 视 图 控 件 中 看 到 的 非 常 相 似 它 显 示 了 一 个 在 每 个 节 点 行 旁 边 有 折 叠 或 扩 展 的 图 标 的 缩 进 结 构, 以 便 用 户 可 以 展 开 和 折 叠 大 纲 以 看 到 理 想 层 级 的 细 节 大 纲 树 型 图 可 以 在 任 何 列 中 显 示, 这 取 决 于 由 Tree.Column 属 性 在 默 认 情 况 下, 这 个 属 性 被 设 置 为 -1, 这 能 导 致 大 纲 树 型 图 根 本 不 会 被 显 示 在 上 面 给 出 的 例 子 中, 为 了 显 示 大 纲 树 型 图, 你 可 以 使 用 这 样 的 代 码 : void _btntreecountrycity_click(object sender, EventArgs e) using (new DeferRefresh(_flex)) // 像 以 前 一 样 按 照 国 家 和 城 市 分 组 _btngroupcountrycity_click(this, EventArgs.Empty); // 显 示 大 纲 树 型 图 _flex.tree.column = 0; // 自 动 调 整 尺 寸 以 容 纳 树 _flex.autosizecol(_flex.tree.column); // 折 叠 细 节 节 点 _flex.tree.show(1); 代 码 调 用 先 前 的 方 法 来 建 立 大 纲, 然 后 再 将 Tree.Column 属 性 设 置 为 零, 以 便 在 第 一 列 显 示 大 纲 树 型 图 它 还 调 用 C1FlexGrid.AutoSizeCol 的 方 法, 以 确 保 该 列 足 够 宽, 能 够 容 纳 大 纲 树 型 图 最 后, 它 调 用 Tree.Show 的 方 法 来 显 示 所 有 零 级 节 点 ( 在 这 种 情 况 下, 就 是 城 市 那 一 层 ) 并 隐 藏 所 有 的 细 节 树 的 属 性 使 一 个 引 用 返 回 到 公 开 了 可 以 用 于 定 制 大 纲 树 型 图 的 几 种 方 法 和 属 性 的 GridTree 对 象, 其 中 主 要 的 一 些 列 举 如 下 : 列 : 获 取 或 设 置 包 含 了 大 纲 树 型 图 的 列 的 索 引 将 此 属 性 设 置 为 -1 可 以 导 致 用 户 看 不 到 大 纲 树 型 图 缩 进 : 以 像 素 为 单 位, 在 相 邻 的 节 点 层 级 之 间, 获 取 或 设 置 缩 进 更 高 的 缩 进 层 级 会 导 致 树 变 得 越 来 越 宽 样 式 : 获 取 或 设 置 即 将 显 示 的 大 纲 树 型 图 的 样 式 用 这 个 属 性 来 判 断 该 树 型 图 是 否 应 包 括 顶 部 的 一 个 按 钮 栏, 来 允 许 用 户 折 叠 / 展 开 整 个 树 型 产 品 网 站 : 咨 询 热 线 : of 269

87 图, 来 判 断 线 条 和 ( 或 ) 符 号 是 否 应 被 显 示, 来 判 断 线 条 是 否 应 被 显 示 既 连 接 到 了 数 据 行 又 连 接 到 了 节 点 行 线 条 颜 色 : 获 取 或 设 置 树 型 图 连 接 线 的 颜 色 线 条 样 式 : 获 取 或 设 置 树 型 图 连 接 线 的 样 式 例 如, 通 过 改 变 上 面 的 代 码 来 包 含 这 两 个 线 条 : // 显 示 大 纲 树 型 图 _flex.tree.column = 0; _flex.tree.style = TreeStyleFlags.CompleteLeaf; _flex.tree.linecolor = Color.White; _flex.tree.indent = 30; 大 纲 树 型 图 会 改 变 如 下 : 请 注 意 标 有 1, 2 和 * 的 在 左 上 角 单 元 格 上 的 按 钮 点 击 这 些 按 钮, 会 导 致 整 个 树 型 图 折 叠 或 展 开 到 相 应 的 级 别 还 请 注 意, 更 宽 的 缩 进 和 线 条 将 树 型 图 既 连 接 到 普 通 行 ( Anne Dodsworth ) 又 连 接 到 节 点 行 产 品 网 站 : 咨 询 热 线 : of 269

88 3.8.5 添 加 分 类 汇 总 到 目 前 为 止, 我 们 已 经 介 绍 了 节 点 行 和 大 纲 树 型 图 的 创 建 然 而, 为 了 使 大 纲 真 正 有 用, 节 点 行 应 该 包 括 它 们 所 包 含 的 数 据 的 汇 总 信 息 如 果 你 使 用 C1FlexGrid.Subtotal 方 法 来 创 建 一 个 大 纲 树 型 图, 然 后 分 类 汇 总 将 会 被 自 动 添 加 这 将 在 后 面 的 章 节 中 描 述 如 果 你 像 上 面 所 描 述 的 使 用 Rows.InsertNode 方 法 来 创 建 大 纲 树 型 图, 那 么 你 应 该 使 用 C1FlexGrid 总 结 用 来 计 算 每 个 行 的 分 组 中 的 分 类 汇 总 方 法, 并 且 将 结 果 直 接 插 入 节 点 行 下 面 列 举 出 来 的 C1FlexGrid.Subtotal 方 法 演 示 了 如 何 做 到 这 一 点 : // 在 一 个 给 定 层 级 的 每 个 节 点 添 加 分 类 汇 总 void AddSubtotals(int level, string colname) // 获 取 我 们 将 要 进 行 汇 总 的 列 int colindex = _flex.cols.indexof(colname); // 为 找 到 合 适 层 级 的 节 点 对 行 进 行 扫 描 for (int r = _flex.rows.fixed; r < _flex.rows.count; r++) if (_flex.rows[r].isnode) var node = _flex.rows[r].node; if (node.level == level) // 找 到 一 个 节 点, 计 算 总 价 的 总 和 var range = node.getcellrange(); var sum = _flex.aggregate(aggregateenum.sum, range.r1, colindex, range.r2, colindex, AggregateFlags.ExcludeNodes); // 在 表 格 上 显 示 总 和 // ( 将 自 动 使 用 列 格 式 ) _flex[r, colindex] = sum; 添 加 分 类 汇 总 方 法 可 以 扫 描 所 有 表 格 中 的 行 来 寻 找 节 点 行 当 一 个 理 想 层 级 的 节 点 行 被 发 现 时, 该 方 法 可 以 使 用 获 取 单 元 格 区 域 的 方 法 来 检 索 节 点 的 子 行 然 后 它 使 用 C1FlexGrid.Aggregate 方 法 来 计 算 整 个 范 围 内 目 标 列 中 产 品 网 站 : 咨 询 热 线 : of 269

89 值 的 总 和 聚 合 的 调 用 包 括 一 个 可 以 避 免 重 复 计 算 的 现 有 节 点 的 排 除 节 点 的 标 志 一 旦 小 计 已 经 被 计 算, 它 就 会 与 通 常 的 _flex[ 行, 彩 色 ] 索 引 一 起 被 分 配 到 节 点 行 的 单 元 格 请 注 意, 这 并 不 会 以 任 何 方 式 影 响 到 数 据 源, 因 为 节 点 行 并 没 有 绑 定 到 数 据 还 要 注 意, 该 方 法 可 以 被 用 来 将 多 个 汇 总 添 加 到 每 个 节 点 行 在 这 个 例 子 中, 我 们 将 增 加 数 量 和 总 价 列 的 汇 总 除 了 总 金 额, 你 还 可 以 添 加 其 他 的 集 合 值, 比 如 平 均 值, 最 高 值, 最 低 值 等 等 现 在 我 们 可 以 用 这 种 方 法 来 创 建 一 个 包 括 节 点 行 大 纲 树 型 图 以 及 分 类 汇 总 的 完 整 的 大 纲 : void _btntreecountrycity_click(object sender, EventArgs e) using (new DeferRefresh(_flex)) // 恢 复 原 来 的 排 序 ( 按 照 国 家 城 市 销 售 人 员 ) ResetBinding(); // 按 照 国 家 城 市 分 组 GroupBy("Country", 0); // 按 country (level 0) 分 组 GroupBy("City", 1); // 按 city (level 1) 分 组 // 添 加 每 个 国 家 城 市 的 总 数 AddSubtotals(0, "ExtendedPrice"); //extended price per country (level 0) AddSubtotals(0, "Quantity"); // quantity per country (level 0) AddSubtotals(1, "ExtendedPrice"); // extended price per city (level 1) AddSubtotals(1, "Quantity"); // quantity per city (level 1) // 显 示 大 纲 树 型 图 _flex.tree.column = 0; _flex.autosizecol(_flex.tree.column); _flex.tree.show(1); 如 果 你 现 在 运 行 该 项 目, 你 会 看 到 一 个 由 节 点 行 组 成 的 树 型 图, 其 中 显 示 了 每 个 国 家 和 城 市 的 销 售 总 数 量 和 金 额 虽 然 这 非 常 好, 但 还 是 有 一 个 小 问 题 如 果 你 展 开 任 何 节 点 行, 你 会 看 到 大 量 的 重 复 值 一 个 给 定 的 城 市 节 点 下 的 所 有 行 都 有 相 同 的 国 家 和 城 市 : 产 品 网 站 : 咨 询 热 线 : of 269

90 这 是 正 确 的, 但 它 同 时 也 是 一 种 屏 幕 实 际 使 用 面 积 的 浪 费 消 除 这 些 重 复 的 值 是 很 容 易 的 ; 所 有 你 所 需 要 做 的 只 是 将 正 在 被 分 组 的 列 的 宽 度 设 置 为 零 然 而, 当 你 这 样 做 时, 你 应 该 记 得 将 表 格 的 允 许 合 并 属 性 设 置 为 节 点, 以 便 使 分 配 给 节 点 行 的 文 本 可 以 溢 出 到 可 见 列 ( 另 一 种 选 择 是 将 节 点 的 文 本 指 定 到 第 一 个 可 见 列, 但 合 并 通 常 是 一 个 更 好 的 解 决 方 案, 因 为 它 可 以 让 你 在 节 点 行 使 用 更 长 的 文 本 ) 产 品 网 站 : 咨 询 热 线 : of 269

91 下 面 是 修 改 后 的 代 码 和 最 终 结 果 : void _btntreecountrycity_click(object sender, EventArgs e) using (new DeferRefresh(_flex)) // 恢 复 原 来 的 排 序 ( 按 照 国 家 城 市 销 售 人 员 ) ResetBinding(); // 按 照 国 家 城 市 来 分 组 GroupBy("Country", 0); // group by country (level 0) GroupBy("City", 1); // group by city (level 1) // 隐 藏 我 们 分 过 组 的 那 些 列 // ( 他 们 只 有 在 树 型 图 节 点 上 已 经 出 现 过 的 那 些 重 复 的 值 ) // ( 但 不 要 使 它 们 不 可 见, 这 可 能 会 隐 藏 节 点 的 文 本 ) _flex.cols["country"].width = 0; _flex.cols["city"].width = 0; // 允 许 节 点 的 内 容 溢 出 到 下 一 个 单 元 格 _flex.allowmerging = AllowMergingEnum.Nodes; // 添 加 每 个 国 家 和 城 市 的 总 数 AddTotals(0, "ExtendedPrice"); // extended price per country (level 0) AddTotals(0, "Quantity"); // quantity per country (level 0) AddTotals(1, "ExtendedPrice"); // extended price per city (level 1) AddTotals(1, "Quantity"); // quantity per city (level 1) // 显 示 大 纲 树 型 图 _flex.tree.column = 0; _flex.autosizecol(_flex.tree.column); _flex.tree.show(1); 产 品 网 站 : 咨 询 热 线 : of 269

92 国 家 和 城 市 列 现 在 是 不 可 见 的, 但 它 们 的 值 仍 然 出 现 在 节 点 行 折 叠 起 来 的 的 树 型 图 可 以 显 示 每 个 国 家 和 城 市 的 总 数 产 品 网 站 : 咨 询 热 线 : of 269

93 3.8.6 使 用 分 类 汇 总 方 法 在 前 面 我 们 曾 经 提 到, 你 也 可 以 使 用 C1FlexGrid 的 C1FlexGrid. 分 类 汇 总 方 法 来 创 建 树 型 图 除 了 可 以 在 一 个 单 一 的 步 骤 里 同 时 做 两 件 事 以 外, 这 种 分 类 汇 总 的 方 法 也 可 以 像 以 上 所 描 述 的 分 组 依 据 和 添 加 分 类 汇 总 一 样 来 执 行 相 同 的 任 务, 因 此 它 比 其 他 的 更 高 效 一 些 下 面 的 代 码 显 示 了 你 应 该 如 何 使 用 分 类 汇 总 的 方 法 来 完 成 我 们 之 前 做 过 的 同 样 的 事 情, 只 是 要 比 之 前 更 快 一 点 而 且 不 需 要 使 用 任 何 辅 助 方 法 : void _btntreecountrycity_click(object sender, EventArgs e) using (new DeferRefresh(_flex)) // 恢 复 原 来 的 排 序 ( 按 照 国 家 城 市 销 售 人 员 ) ResetBinding(); // group and total by country and city _flex.subtotal(aggregateenum.sum, 0, "Country", "ExtendedPrice"); _flex.subtotal(aggregateenum.sum, 0, "Country", "Quantity"); _flex.subtotal(aggregateenum.sum, 1, "City", "ExtendedPrice"); _flex.subtotal(aggregateenum.sum, 1, "City", "Quantity"); // 隐 藏 我 们 分 过 组 的 那 些 列 // ( 他 们 只 有 在 树 型 图 节 点 上 已 经 出 现 过 的 那 些 重 复 的 值 ) // ( 但 不 要 使 它 们 不 可 见, 这 可 能 会 隐 藏 节 点 的 文 本 ) _flex.cols["country"].width = 0; _flex.cols["city"].width = 0; _flex.allowmerging = AllowMergingEnum.Nodes; // 显 示 大 纲 树 型 图 _flex.tree.column = 0; _flex.autosizecol(_flex.tree.column); _flex.tree.show(1); 分 类 汇 总 的 方 法 非 常 方 便 和 灵 活 它 包 含 多 个 重 载, 能 够 使 你 明 确 应 该 对 哪 些 列 进 行 分 组 并 按 照 索 引 或 名 称 来 合 计 总 数, 是 否 包 括 它 插 入 节 点 行 的 标 题, 以 及 如 何 进 行 分 组 等 等 下 面 的 摘 要 介 绍 了 可 用 的 重 载 : 1. Subtotal(AggregateEnum aggtype) 该 方 法 的 这 个 版 本 只 有 一 个 聚 合 类 型 作 为 一 个 参 数 只 有 消 除 现 有 的 分 类 汇 总, 然 后 再 插 入 新 的, 它 才 是 有 用 的 在 这 种 情 况 下, aggtype 参 数 要 设 置 产 品 网 站 : 咨 询 热 线 : of 269

94 到 AggregateEnum.Clear 2. Subtotal(AggregateEnum aggtype, int groupby, int totalon) Subtotal(AggregateEnum aggtype, string groupby, string totalon) 这 都 是 最 常 用 的 重 载 参 数 都 是 聚 合 类 型 的, 可 以 用 来 插 入 和 分 组 和 计 算 总 数 的 列 列 是 可 以 通 过 索 引 或 名 称 来 引 用 的 而 后 者 则 是 我 们 在 上 面 的 例 子 中 使 用 过 的 3. Subtotal(AggregateEnum aggtype, int groupby, int totalon, string caption) Subtotal(AggregateEnum aggtype, string groupby, string totalon, string caption) 这 些 重 载 添 加 了 一 个 额 外 的 标 题 参 数 标 题 参 数 明 确 了 被 添 加 到 新 的 节 点 行 的 文 本, 以 确 定 要 进 行 分 组 的 值 默 认 情 况 下, 要 分 组 的 值 会 显 示 出 来, 所 以 如 果 你 是 按 国 家 分 组 的, 节 点 行 会 显 示 阿 根 廷, 巴 西, 等 等 如 果 你 设 置 的 标 题 参 数 为 字 符 串, 如 国 家 :0, 那 么 该 节 点 的 行 会 相 应 地 显 示 国 家 : 阿 根 廷 来 代 替 4. Subtotal(AggregateEnum aggtype, int groupfrom, int groupto, int totalon, string caption) Subtotal(AggregateEnum aggtype, string groupfrom, string groupto, string totalon, string caption) 这 些 重 载 将 groupby 函 数 参 数 分 成 了 两 个 :groupfrom 和 groupto 在 默 认 情 况 下, 无 论 什 么 时 候 GroupBy 的 值 或 以 往 的 任 何 列 发 生 了 变 化, 分 类 汇 总 的 方 法 都 可 以 插 入 一 个 节 点 行 例 如, 即 使 GroupBy 列 的 值 是 相 同 的, 如 果 某 一 行 在 城 市 这 一 列 有 与 前 行 中 相 同 的 值, 但 在 国 家 一 栏 有 不 同 的 值, 那 么 分 类 汇 总 的 方 法 也 会 认 为 行 应 该 在 不 同 的 分 组 里 面 并 且 插 入 一 个 新 的 节 点 行 这 些 聚 合 使 你 撤 销 该 行 为, 并 且 指 定 在 确 定 一 组 时 应 该 考 虑 的 列 的 范 围 大 纲 维 护 到 目 前 为 止, 我 们 已 经 讨 论 了 如 何 使 用 高 级 别 的 C1FlexGrid. Subtotal 方 法 以 及 较 低 级 别 的 Rows.InsertNode 和 Aggregate 方 法 来 创 建 总 计 包 含 树 型 图 和 总 计 的 大 纲 在 这 一 点 上, 重 要 的 是 要 记 住, 大 纲 树 型 图 是 基 于 数 据 而 创 建 的, 但 是 它 不 被 任 何 方 式 约 束, 并 且 当 表 格 或 数 据 有 变 化 时 它 不 能 自 动 维 持 现 状 例 如, 如 果 用 户 在 总 价 这 一 列 修 改 了 一 个 值, 则 分 类 汇 总 不 会 进 行 自 动 更 新 如 果 用 户 将 表 格 进 行 排 序, 那 么 数 据 将 会 被 刷 新, 且 分 类 汇 总 会 消 失 有 两 种 常 见 的 方 式 可 以 用 来 维 持 大 纲 : 防 止 用 户 做 任 何 将 会 使 大 纲 无 效 的 更 改 这 是 最 简 单 的 选 择 你 可 以 设 置 表 格 的 允 许 编 辑 允 许 拖 动 和 允 许 排 序 属 性 为 假, 并 且 阻 止 任 何 会 影 响 到 大 纲 的 更 改 当 数 据 或 表 格 有 变 化 时 更 新 大 纲 时 你 会 附 加 表 格 的 数 据 刷 新 后 排 序 后 产 品 网 站 : 咨 询 热 线 : of 269

95 和 编 辑 后 事 件 的 处 理 程 序, 并 重 新 生 成 合 适 的 大 纲 选 项 二 通 常 是 更 有 趣 的, 因 为 它 提 供 了 一 个 快 捷 而 且 简 单 的 动 态 数 据 分 析 工 具 这 种 方 法 是 C1FlexGrid 提 供 的 分 析 示 例 来 说 明 的 该 示 例 创 建 了 一 个 初 始 大 纲, 并 允 许 用 户 对 列 进 行 重 新 排 序 当 列 的 顺 序 发 生 变 化 时, 该 示 例 自 动 对 数 据 进 行 重 新 排 序, 并 重 新 创 建 大 纲 用 户 可 以 方 便 地 创 建 简 单 的 报 告, 来 按 国 家 按 产 品 按 销 售 人 员 等 显 示 销 售 产 品 网 站 : 咨 询 热 线 : of 269

96 3.8.8 使 用 节 点 类 节 点 类 提 供 了 许 多 可 以 用 来 创 建 和 管 理 大 纲 树 型 图 的 方 法 和 属 性 这 些 方 法 和 属 性 中 的 许 多 都 是 基 于 标 准 的 TreeView 对 象 模 型, 因 此 他 们 应 该 熟 悉 大 多 数 的 开 发 者 为 了 获 得 一 个 节 点 对 象, 你 可 以 : 使 用 Rows.InsertNode 方 法 的 返 回 值 : Var node = _flex.rows.insertnode(index, level); 或 者, 你 可 以 用 行 的 节 点 属 性 来 在 现 有 的 一 行 检 索 节 点 : 无 论 哪 种 方 式, 一 旦 你 有 了 一 个 节 点 对 象, 你 就 可 以 使 用 以 下 属 性 和 方 法 来 操 作 它 : Var node = _flex.rows[index].isnode _flex.rows[index].node null; 等 级 : 在 大 纲 树 型 图 中 获 取 或 设 置 节 点 级 别 数 据 : 在 单 元 格 中 获 取 或 设 置 由 Node.Row 和 Tree.Column 定 义 的 值 图 片 : 在 单 元 格 中 获 取 或 设 置 由 Node.Row 和 Tree.Column 定 义 的 图 像 选 中 : 获 取 或 设 置 由 Node.Row 和 Tree.Column 定 义 的 单 元 格 的 选 中 状 态 折 叠 / 扩 展 : 获 取 或 设 置 节 点 的 折 叠 / 展 开 状 态 你 还 可 以 使 用 下 列 方 法 来 探 讨 的 大 纲 结 构 : 获 取 单 元 格 区 域 : 获 取 单 元 格 区 域 的 对 象, 它 描 述 了 属 于 这 个 节 点 的 行 的 范 围 子 节 点 : 获 取 此 节 点 下 的 子 节 点 的 数 目 节 点 : 获 取 一 个 节 点 的 包 含 此 节 点 的 子 节 点 数 组 获 取 节 点 : 获 取 与 这 个 节 点 有 一 个 给 定 关 系 的 节 点 ( 父 母, 第 一 个 孩 子, 下 一 个 兄 弟, 等 等 ) 上 面 的 讨 论 集 中 在 绑 定 的 情 况 下, 即 表 格 连 接 到 提 供 数 据 的 数 据 源 的 地 方 你 还 可 以 创 建 绑 定 场 景 中 的 树 型 图 和 大 纲 在 这 种 情 况 下, 事 情 其 实 比 较 简 单, 因 为 你 可 以 通 过 将 是 节 点 属 性 设 置 为 真 来 将 任 何 一 个 节 点 变 成 一 个 节 点 行 如 果 表 格 是 未 绑 定 的, 它 拥 有 所 有 显 示 的 数 据, 并 且 当 一 个 数 据 源 拥 有 这 些 数 据 时, 你 做 的 是 不 可 能 的 事 情 例 如, 你 可 以 像 C1FlexGrid 提 供 的 树 型 图 节 点 样 品 所 显 示 的 那 样, 使 用 Move 方 法 来 移 动 树 型 图 周 围 的 节 点 使 用 一 个 未 绑 定 的 表 格 中 的 节 点 与 使 用 常 规 的 树 型 视 图 控 件 的 节 点 是 非 常 相 似 的 产 品 网 站 : 咨 询 热 线 : of 269

97 3.9 保 存 加 载 和 打 印 C1FlexGrid 控 件 具 有 让 你 保 存 加 载 并 打 印 表 格 的 方 法 保 存 和 载 入 表 格 到 文 本 文 件 保 存 表 格 方 法 可 以 将 表 格 内 容 保 存 到 一 个 文 本 文 件 该 方 法 具 有 可 以 控 制 使 用 的 分 隔 符 类 型 的 参 数 ( 例 如, 逗 号 制 表 符 自 定 义 分 隔 符 ), 可 以 确 定 是 否 要 保 存 固 定 的 单 元 格 还 是 只 保 存 滚 动 的 单 元 格, 和 要 使 用 的 编 码 类 型 ( 例 如,ASCII 或 Unicode) 生 成 的 文 本 文 件 随 后 可 以 被 装 入 控 件, 或 装 入 到 其 他 支 持 逗 号 或 制 表 符 分 隔 的 文 件 的 应 用 程 序 ( 例 如,Microsoft Excel) 加 载 表 格 方 法 可 以 从 文 本 文 件 中 加 载 数 据 你 可 以 加 载 用 保 存 表 格 方 法 或 与 其 他 应 用 程 序 创 建 的 文 本 文 件 文 本 文 件 的 格 式 是 相 当 简 单 的 单 元 格 的 内 容 可 以 保 存 为 格 式 化 字 符 串 ( 完 全 是 因 为 他 们 在 屏 幕 上 显 示 ) 如 果 单 元 格 的 文 本 包 含 引 号 字 符 或 单 元 格 分 隔 符, 那 么 单 元 格 会 被 引 号 引 起 来 单 元 格 的 文 本 中 包 含 的 任 何 引 用 字 符 都 增 加 了 一 倍 这 也 是 在 Microsoft Excel 文 本 文 件 中 所 使 用 的 惯 例 文 本 文 件 不 包 含 图 片 或 格 式 信 息 保 存 表 格 方 法 有 一 个 标 志 参 数, 它 可 以 使 你 指 定 是 否 要 保 存 整 个 表 格 或 只 保 存 其 中 的 某 些 部 分 ( 滚 动 的 可 见 的 或 选 中 的 ) 保 存 和 加 载 Microsoft Excel 文 件 从 版 本 2.5 开 始, 你 可 以 使 用 保 存 表 格 和 加 载 表 格 方 法 来 保 存 和 加 载 Microsoft Excel 文 件 (.XLS) 以 及 文 本 文 件 这 可 以 使 你 除 了 保 存 数 据 之 外, 还 可 以 保 存 格 式 信 息 要 使 用 保 存 表 格 和 加 载 表 格 方 法 来 保 存 和 加 载 Excel 文 件, 只 需 简 单 地 设 置 格 式 参 数 到 FileFormatEnum.Excel, 并 且 像 往 常 一 样 调 用 方 法 你 不 需 要 在 你 的 计 算 机 上 安 装 Microsoft Excel Excel 文 件 中 包 含 由 工 作 表 组 成 的 工 作 簿 保 存 表 格 和 加 载 表 格 方 法 总 是 用 一 个 单 一 的 工 作 表 来 保 存 工 作 簿, 并 从 现 有 工 作 簿 来 载 入 第 一 页 工 作 表 如 果 你 想 额 外 的 控 制 工 作 来 加 载 或 保 存, 请 使 用 SaveExcel, LoadExcel,LoadExcelSheetNames 方 法 来 代 替 Excel 文 件 保 存 和 加 载 的 过 程 将 转 换 大 多 数 的 数 据 类 型 和 格 式 信 息, 包 括 行 和 列 的 尺 寸 字 体 颜 色 格 式 单 元 格 对 齐 方 式 然 而, 并 不 是 所 有 的 格 式 元 素 可 以 转 换 例 如, 表 格 将 加 载 Excel 单 元 格 的 值, 但 它 不 会 加 载 其 隐 含 的 公 式 其 他 特 征, 如 固 定 和 合 并 单 元 格, 图 片, 数 据 映 射, 单 元 格 边 框 等, 也 没 有 被 翻 译 产 品 网 站 : 咨 询 热 线 : of 269

98 3.9.3 从 数 据 库 中 载 入 表 格 你 也 可 以 从 数 据 库 中 加 载 表 格 数 据 这 不 同 于 数 据 绑 定, 它 可 以 保 持 一 个 或 多 个 控 件 和 基 础 数 据 源 之 间 的 实 时 连 接 为 了 从 数 据 库 加 载 数 据, 你 可 以 使 用 DataReader 对 象, 如 下 所 示 : Visual Basic Private Sub _btndata_click(byval sender As Object, ByVal e As System.EventArgs) Handles _btndata.click ' 准 备 好 DataReader Dim strconn As String = "data source=mymachine;initial catalog=northwind;" Dim myconn As New SqlClient.SqlConnection(strConn) Dim mycmd As New SqlClient.SqlCommand("SELECT * FROM Employees", myconn) myconn.open() Dim myreader As SqlClient.SqlDataReader = mycmd.executereader() ' 从 DB 模 式 来 建 立 表 格 结 构 Dim dt As DataTable = myreader.getschematable() _flex.cols.count = 1 Dim dr As DataRow For Each dr In dt.rows Dim c As C1.Win.C1FlexGrid.Column = _flex.cols.add() c.caption =(c.name <= CStr(dr("ColumnName"))) c.datatype = CType(dr("DataType"), Type) Next dr ' 填 充 表 格 _flex.rows.count = 1 Dim row As Integer = 1 Dim cols As Integer = dt.columns.count Dim v As Object() = CType(Array.CreateInstance(GetType(Object), cols), Object()) While myreader.read() myreader.getvalues(v) _flex.additem(v, row + 1, 1) End While ' 清 理 _flex.autosizecols() myreader.close() myconn.close() 产 品 网 站 : 咨 询 热 线 : of 269

99 C# 打 印 表 格 private void _btndata_click(object sender, System.EventArgs e) // 准 备 好 DataReader string strconn = "data source=mymachine;initial catalog=northwind;"; System.Data.SqlClient.SqlConnection myconn = new System.Data.SqlClient.SqlConnection(strConn); System.Data.SqlClient.SqlCommand mycmd = new System.Data.SqlClient.SqlCommand("SELECT * FROM Employees", myconn); myconn.open(); System.Data.SqlClient.SqlDataReader myreader = mycmd.executereader(); // 从 DB 模 式 来 建 立 表 格 结 构 DataTable dt = myreader.getschematable(); _flex.cols.count = 1; foreach (DataRow dr in dt.rows) Column c = _flex.cols.add(); c.caption = c.name = (string)dr["columnname"]; c.datatype = (Type)dr["DataType"]; // 填 充 表 格 _flex.rows.count = 1; int row = 1; int cols = dt.columns.count; object[] v = (object[])array.createinstance(typeof(object), cols); while (myreader.read()) myreader.getvalues(v); _flex.additem(v, row++, 1); // 清 理 _flex.autosizecols(); myreader.close(); myconn.close(); 使 用 打 印 表 格 方 法 来 打 印 表 格 的 内 容 该 方 法 具 有 可 以 让 你 选 择 缩 放 模 式, 是 否 显 示 打 印 / 预 览 对 话 框, 设 置 页 眉 和 页 脚, 等 等 的 参 数 打 印 参 数 属 性 可 以 公 开 额 外 的 打 印 性 能, 如 字 体, 使 用 页 眉 和 页 脚, 产 品 网 站 : 咨 询 热 线 : of 269

100 而 一 个.NET Framework 打 印 文 档 对 象 可 以 用 来 选 择 打 印 机, 纸 张 大 小 和 方 向, 页 边 距 等 下 面 的 代 码 使 用 了 打 印 参 数 属 性 来 设 置 页 面 方 向 页 边 距 页 眉 和 页 脚 的 字 体 然 后 它 调 用 打 印 表 格 方 法 来 显 示 打 印 预 览 对 话 框 窗 口 : + Visual Basic ' 获 取 表 格 的 打 印 文 档 对 象 Dim pd As Printing.PrintDocument pd = _flex.printparameters.printdocument() ' 设 置 页 面 ( 横 向 打 印, 左 边 页 边 距 1.5") With pd.defaultpagesettings.landscape = True.Margins.Left = 150 End With ' 设 置 页 眉 和 页 脚 的 字 体 _flex.printparameters.headerfont = New Font("Arial Black", 14, FontStyle.Bold) _flex.printparameters.footerfont = New Font("Arial Narrow", 8, FontStyle.Italic) ' 预 览 表 格 _flex.printgrid("c1flexgrid", C1.Win.C1FlexGrid.PrintGridFlags.FitToPageWidth + C1.Win.C1FlexGrid.PrintGridFlags.ShowPreviewDialog, "C1FlexGrid" + Chr(9) C# 产 品 网 站 : 咨 询 热 线 : of 269

101 // 获 取 表 格 的 打 印 文 档 对 象 System.Drawing.Printing.PrintDocument pd = _flex.printparameters.printdocument; // 设 置 页 面 ( 横 向 打 印, 左 边 页 边 距 1.5") pd.defaultpagesettings.landscape = true; pd.defaultpagesettings.margins.left = 150; // 设 置 页 眉 和 页 脚 的 字 体 _flex.printparameters.headerfont = new Font("Arial Black", 14, FontStyle.Bold); _flex.printparameters.footerfont = new Font("Arial Narrow", 8, FontStyle.Italic); // 预 览 表 格 _flex.printgrid("c1flexgrid", PrintGridFlags.FitToPageWidth PrintGridFlags.ShowPreviewDialog, "C1FlexGrid\t\t" + Microsoft.VisualBasic.Strings.Format(DateTime.Now, "d"), "\t\tpage 0 of 1"); 产 品 网 站 : 咨 询 热 线 : of 269

102 3.10 C1FlexGrid 过 滤 表 格 中 的 数 据 过 滤 通 常 有 两 种 形 式 : 基 于 表 头 : 过 滤 器 的 图 标 出 现 在 有 一 个 过 滤 器 适 用 于 它 的 每 一 列 用 户 可 以 通 过 点 击 过 滤 器 的 图 标 来 查 看 和 编 辑 过 滤 器 这 是 Windows 7 或 Vista 或 C1FlexGrid 控 件 使 用 的 机 制 这 种 类 型 的 过 滤 器 的 主 要 优 点 是 :(1) 用 户 可 以 看 到 哪 些 列 被 过 滤 了,(2) 过 滤 不 需 要 屏 幕 上 的 额 外 的 不 动 产,( 3) 这 种 类 型 的 过 滤 器 可 以 更 好 地 过 滤 编 辑 器 并 更 容 易 定 制 过 滤 器 行 : 过 滤 器 行 保 持 始 终 可 见, 使 用 户 可 以 直 接 到 该 行 中 键 入 值 或 表 达 式 这 种 类 型 的 过 滤 器 的 主 要 优 点 是, 用 户 随 时 都 可 以 看 到 哪 些 列 正 在 被 过 滤 和 当 前 过 滤 器 的 标 准 是 什 么 主 要 缺 点 是 过 滤 器 占 用 一 些 不 动 产, 且 可 能 会 干 扰 常 规 的 表 格 运 行 虽 然 过 滤 器 行 没 有 建 立 在 C1FlexGrid 控 件 上, 但 他 们 实 施 起 来 还 是 相 对 容 易 我 们 提 供 了 一 个 过 滤 器 行 示 例 来 显 示 如 何 做 到 这 一 点 下 面 介 绍 的 代 码 样 本, 主 要 取 自 包 括 产 品 的 两 个 新 样 本 : 列 过 滤 器 和 自 定 义 过 滤 器 请 参 阅 表 明 行 动 的 特 点 的 完 整 的 项 目 样 本 允 许 过 滤 属 性 要 使 用 以 表 头 为 基 础 的 过 滤 器,C1FlexGrid 控 件 遵 循 了 与 用 来 实 现 列 的 移 动 和 按 大 小 排 序 的 相 同 的 模 式 表 格 有 一 个 新 的 允 许 过 滤 属 性, 可 用 于 控 制 在 控 件 级 别 过 滤, 并 且 表 格 的 列 对 象 也 有 一 个 允 许 过 滤 属 性, 可 用 于 控 制 在 列 级 别 过 滤 要 启 用 简 单 的 过 滤 方 案, 用 户 只 需 设 置 表 格 的 允 许 过 滤 属 性 为 真 然 后, 他 们 可 以 通 过 改 变 列 的 允 许 过 滤 属 性 的 值 来 禁 用 或 自 定 义 过 滤 特 定 列 的 行 为 列 的 允 许 过 滤 属 性 可 以 设 置 为 下 列 值 之 一 : 默 认 : 表 格 会 自 动 创 建 一 个 列 过 滤 类 型 的 过 滤 器 该 过 滤 器 将 值 过 滤 和 条 件 过 滤 结 合 了 起 来, 两 者 都 在 下 文 中 有 所 描 述 根 据 值 : 表 格 会 自 动 创 建 一 个 值 过 滤 类 型 的 过 滤 器 该 过 滤 器 包 含 一 个 应 显 示 的 值 的 列 表 任 何 列 表 上 不 存 在 的 值, 最 终 用 户 都 是 看 不 到 的 根 据 条 件 : 表 格 会 自 动 创 建 一 个 条 件 过 滤 类 型 的 过 滤 器 该 过 滤 器 会 指 定 两 个 条 件, 如 大 于 或 包 含 这 些 条 件 可 以 与 AND 或 OR 运 算 符 号 结 合 起 来 自 定 义 : 表 格 不 会 自 动 创 建 一 个 过 滤 器 开 发 人 员 预 计 实 例 化 一 个 过 滤 器, 并 明 确 将 其 指 定 道 列 的 过 滤 器 属 性 无 : 该 列 不 能 进 行 过 滤 默 认 情 况 下,C1FlexGrid 控 件 会 为 使 用 指 定 的 语 言 通 过 CurrentUICulture 设 置 来 将 列 过 滤 编 辑 器 本 地 化 但 是, 你 可 以 使 用 语 言 属 性 来 推 翻 默 认 并 指 定 当 表 格 显 示 列 过 滤 编 辑 器 时 应 该 使 用 的 语 言 值 过 滤 器 产 品 网 站 : 咨 询 热 线 : of 269

103 值 过 滤 器 概 念 上 非 常 简 单 它 包 含 一 个 值 的 列 表, 并 且 只 有 该 表 中 列 出 的 值 才 会 显 示 在 表 格 上 如 果 列 表 设 置 为 无 效 的, 那 么 该 过 滤 为 没 有 活 性 的, 且 所 有 的 值 会 被 显 示 这 种 类 型 的 过 滤 器 在 过 滤 包 含 离 散 值, 如 名 称 或 枚 举, 的 列 方 面 是 被 推 荐 的 值 过 滤 编 辑 器 包 括 一 个 有 复 选 框 的 值 的 列 表 用 户 可 以 一 次 选 中 或 取 消 选 中 所 有 值 采 用 先 进 的 内 置 键 盘 导 航 来 浏 览 长 的 列 表 是 很 容 易 的 编 辑 器 中 实 现 一 个 灵 活 的 搜 索 缓 冲 区, 可 以 使 用 户 通 过 输 入 值 的 任 何 部 分 来 找 到 值 例 如, 输 入 希 尔 顿, 将 选 择 下 一 个 其 中 包 含 希 尔 顿 的 值, 包 括 纽 约 希 尔 顿, 王 子 爱 德 华 希 尔 顿, 或 巴 黎 希 尔 顿 此 外, 敲 Ctrl+ 向 上 键 或 Ctrl + 向 下 键 将 会 导 航 到 下 一 个 或 前 一 个 检 查 项 目 使 用 目 前 分 配 给 列 的 格 式, 值 就 会 显 示 在 列 表 上 这 个 图 像 显 示 了 值 过 滤 编 辑 器 条 件 过 滤 器 条 件 过 滤 器 比 其 他 的 更 加 灵 活 它 不 是 选 择 特 定 的 值, 而 是 允 许 用 户 用 运 算 符 号 来 指 定 两 个 条 件, 如 大 于 开 始 或 包 含 这 种 类 型 的 过 滤 器 在 过 滤 包 含 连 续 的 值 的 列, 如 数 字, 或 日 期 / 时 间 值, 在 这 方 面 是 被 推 荐 的 这 个 图 像 显 示 了 条 件 过 滤 编 辑 器 产 品 网 站 : 咨 询 热 线 : of 269

104 有 过 滤 器 适 用 于 列 来 显 示 他 们 的 标 题 过 滤 器 的 图 标, 甚 至 当 鼠 标 不 在 他 们 上 面 的 时 候 在 这 个 图 像 中 你 可 以 看 到 有 产 品 名 称 和 数 量 列 标 题 的 地 方 显 示 过 滤 器 的 图 标 内 置 的 过 滤 器 支 持 自 动 定 位 在 以 下 语 言 : 英 语, 西 班 牙 语, 法 语, 意 大 利 语, 葡 萄 牙 语, 德 国, 荷 兰, 俄 罗 斯, 日 本, 希 腊, 丹 麦, 芬 兰, 挪 威, 瑞 典 文, 阿 拉 伯 文, 波 兰, 中 国, 土 耳 其, 波 斯 语, 朝 鲜 语, 希 伯 来 语 该 本 地 化 资 源 是 内 置 的, 并 不 需 要 提 供 额 外 的 DLL 自 定 义 过 滤 器 可 以 创 建 自 定 义 过 滤 器 来 处 理 专 门 的 值 例 如, 自 定 义 过 滤 器 在 过 滤 颜 色 地 理 或 自 定 义 数 据 类 型 方 面 值 得 推 荐 要 创 建 一 个 自 定 义 的 过 滤 器, 开 发 人 员 必 须 创 建 两 个 类 : 过 滤 器 : 这 个 类 必 须 实 现 IC1ColumnFilter 接 口, 它 可 以 指 定 过 滤 器 应 用 到 一 个 特 定 的 值, 对 过 滤 器 进 行 复 位, 并 返 回 一 个 用 于 查 看 和 编 辑 过 滤 器 的 参 数 的 编 辑 器 过 滤 编 辑 器 : 这 个 类 必 须 继 承 自 Control, 必 须 实 现 IC1ColumnFilterEditor 的 接 口, 该 接 口 可 以 指 定 用 于 初 始 化 编 辑 器 和 更 改 应 用 到 过 滤 器 的 方 法 自 定 义 过 滤 器 的 样 本 包 含 三 个 自 定 义 过 滤 器, 用 于 过 滤 类 型 的 颜 色, 日 期 / 时 间 和 字 符 串 的 值 程 序 化 地 管 理 过 滤 器 正 如 我 们 前 面 提 到 的 这 个 文 件, 设 置 表 格 的 允 许 过 滤 属 性 为 真, 这 足 以 让 所 有 的 列 进 行 列 过 滤 然 而, 在 许 多 情 况 下, 你 可 能 需 要 更 精 细 的 过 产 品 网 站 : 咨 询 热 线 : of 269

105 滤 控 制 这 可 以 通 过 修 改 个 别 列 的 允 许 过 滤 和 过 滤 属 性 来 实 现 例 如, 下 面 的 代 码 使 能 够 启 用 过 滤, 但 对 过 滤 字 符 串 类 型 的 列 进 行 了 限 制 : // 绑 定 和 配 置 表 格 flex.datasource = dtproducts; _flex.cols["unitprice"].format = "#,###.00"; // 启 用 过 滤 _flex.allowfiltering = true; // 限 制 过 滤 字 符 串 类 型 的 列 foreach (Column c in _flex.cols) c.allowfiltering = c.datatype == typeof(string)? AllowFiltering.Default : AllowFiltering.None; 你 可 以 通 过 创 建 过 滤 器 并 将 他 们 分 配 到 列, 或 通 过 检 索 现 有 的 过 滤 器 并 修 改 其 属 性, 来 进 一 步 自 定 义 过 滤 过 程 例 如, 下 面 的 代 码 创 建 了 一 个 条 件 过 滤 器, 配 置 它 来 选 择 所 有 以 字 母 C 开 头 的 项 目, 然 后 分 配 这 个 新 的 过 滤 器 给 产 品 名 称 一 列 : // 创 建 一 个 新 的 条 件 过 滤 器 var filter = new ConditionFilter(); // 配 置 过 滤 器 来 选 择 以 C 开 始 的 项 目 filter.condition1.operator = ConditionOperator.BeginsWith; filter.condition1.parameter = "C"; // 分 配 新 的 过 滤 器 到 产 品 名 称 列 _flexcustom.cols["productname"].filter = filter; 程 序 化 地 应 用 过 滤 器 当 用 户 编 辑 他 们 或 当 他 们 适 用 于 一 列 时, 过 滤 器 是 适 用 的 当 数 据 发 生 变 化 时, 它 们 不 会 自 动 应 用 要 将 过 滤 器 应 用 到 从 表 格 加 载 的 当 前 的 数 据, 请 调 用 表 格 的 应 用 过 滤 器 方 法 例 如, 当 用 户 编 辑 表 格 上 的 数 据 时, 下 面 的 代 码 启 用 了 一 个 应 用 过 滤 器 按 钮 点 击 这 个 应 用 过 滤 器 按 钮 即 可 应 用 该 过 滤 器, 并 可 以 直 到 下 一 次 的 变 化 前 禁 用 该 按 钮 产 品 网 站 : 咨 询 热 线 : of 269

106 public Form1() InitializeComponent(); // 获 取 一 些 数 据 var da = new OleDbDataAdapter("select * from products", GetConnectionString()); var dtproducts = new DataTable(); da.fill(dtproducts); // 将 表 格 绑 定 到 数 据 _ flex.datasource = dtproducts; // 启 用 过 滤 _flex.allowfiltering = true; // 监 测 变 化 以 便 启 用 应 用 过 滤 器 按 钮 _flex.afteredit += _flex_afteredit; 上 面 的 代 码 可 以 将 一 个 表 格 绑 定 到 数 据 源, 可 以 通 过 将 允 许 过 滤 属 性 设 置 为 真 来 启 用 过 滤 器, 并 可 以 连 接 一 个 事 件 处 理 程 序 到 编 辑 后 事 件 事 件 处 理 程 序 的 执 行 情 况 如 下 : void _flex_afteredit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) foreach (C1.Win.C1FlexGrid.Column c in _flex.cols) if (c.activefilter!= null) _btnapplyfilters.enabled = true; break; 此 代 码 可 以 扫 描 所 有 列, 以 确 定 一 个 过 滤 器 是 否 为 任 何 列 所 定 义 如 果 检 测 到 有 一 个 正 在 起 作 用 的 过 滤 器, 该 代 码 可 以 启 用 将 过 滤 器 应 用 于 目 前 的 数 据 的 按 钮 当 单 击 该 按 钮 时, 下 面 的 事 件 处 理 程 序 会 执 行 如 下 : 产 品 网 站 : 咨 询 热 线 : of 269

107 private void _btnapplyfilters_click(object sender, EventArgs e) _flex.applyfilters(); _btnapplyfilters.enabled = false; 产 品 网 站 : 咨 询 热 线 : of 269

108 该 代 码 简 单 适 用 于 所 有 活 跃 着 的 过 滤 器, 并 且 直 到 下 一 次 的 变 化 前 才 禁 用 按 钮 相 反, 如 果 你 不 需 要 一 个 按 钮, 而 只 是 简 单 地 想 在 每 次 编 辑 后 应 用 该 过 滤 器, 你 可 以 从 编 辑 后 事 件 处 理 器 那 里 直 接 调 用 应 用 过 滤 器, 如 下 所 示 : void _flex_afteredit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) _flex.applyfilters(); 自 定 义 过 滤 器 的 行 为 当 过 滤 器 被 应 用 后, 表 格 会 通 过 将 可 见 属 性 设 置 为 假 来 隐 藏 一 些 行 但 表 格 也 能 够 激 发 可 以 允 许 你 自 定 义 过 滤 行 为 的 过 滤 前 和 过 滤 后 事 件 例 如, 假 设, 你 不 是 要 显 示 和 隐 藏 行, 而 是 要 应 用 不 同 的 风 格 来 表 明 这 些 行 是 否 能 通 过 过 滤 器 这 可 以 使 用 此 代 码 来 轻 松 地 实 现 : public Form1() InitializeComponent(); // 配 置 表 格 _ flex.allowfiltering = true; _flex.datasource = dtinvoices; // 为 过 滤 器 排 除 的 行 创 建 样 式 var cs = _flexstyles.styles.add("filteredout"); cs.backcolor = Color.LightSalmon; cs.forecolor = Color.DarkOrange; // 连 接 过 滤 前 和 过 滤 后 事 件 的 处 理 程 序 _flex.beforefilter += _flex_beforefilter; _flex.afterfilter += _flex_afterfilter; 该 代 码 可 以 创 建 一 个 将 被 用 于 显 示 未 通 过 过 滤 器 的 行 ( 而 不 是 使 他 们 不 可 见 ) 的 自 定 义 样 式 其 次, 该 代 码 可 以 将 处 理 程 序 与 过 滤 前 和 过 滤 后 事 件 联 系 起 来 事 件 处 理 程 序 列 举 如 下 : 在 我 们 完 成 将 自 定 义 样 式 应 用 于 被 过 滤 掉 的 行 之 前, 过 滤 前 事 件 处 理 程 序 可 以 调 用 开 始 更 新 方 法 来 防 止 表 格 自 己 进 行 重 新 绘 制 开 始 更 新 和 结 束 更 新 方 法 可 以 代 替 已 被 弃 用 的 重 绘 属 性 过 滤 后 事 件 处 理 程 序 可 以 通 过 检 索 我 们 创 建 的 样 式 来 开 始 显 示 已 筛 选 产 品 网 站 : 咨 询 热 线 : of 269

109 // 在 应 用 过 滤 器 之 前 暂 停 绘 制 void _flex_beforefilter(object sender, CancelEventArgs e) _flexstyles.beginupdate(); // 在 应 用 过 滤 器 之 后 应 用 样 式 void _flexstyles_afterfilter(object sender, EventArgs e) // 获 取 用 于 显 示 筛 选 出 的 行 的 样 式 var cs = _flex.styles["filteredout"]; // 将 样 式 应 用 于 所 有 行 for (int r = _flexstyles.rows.fixed; r < _flexstyles.rows.count; r++) var row = _flexstyles.rows[r]; if (row.visible) // normal row, reset style row.style = null; else // 过 滤 行, 使 其 可 见 并 应 用 样 式 row.visible = true; row.style = cs; // 恢 复 更 新 _ flexstyles.endupdate(); 出 的 行 然 后 它 可 以 对 表 格 中 的 行 进 行 扫 描, 并 且 将 新 的 样 式 应 用 于 可 见 属 性 设 置 为 假 的 所 有 行 这 些 是 被 过 滤 器 隐 藏 起 来 的 行 一 旦 做 到 这 一 点, 代 码 可 以 调 用 结 束 更 新 来 恢 复 表 格 的 更 新 自 定 义 UI 过 滤 我 们 相 信, 默 认 的 过 滤 行 为 和 UI 可 以 解 决 牵 涉 到 列 过 滤 中 的 绝 大 多 数 情 况 但 是, 你 可 以 独 立 地 使 用 这 些 列 过 滤 器 列 类, 来 实 现 自 己 的 自 定 义 用 户 界 面 产 品 网 站 : 咨 询 热 线 : of 269

110 例 如, 下 面 的 代 码 显 示 了 你 可 以 如 何 使 用 条 件 过 滤 器 的 类 来 实 现 C1FlexGrid itunes 风 格 的 搜 索 框 这 种 类 型 的 搜 索, 可 以 允 许 用 户 键 入 一 个 值, 并 自 动 过 滤 表 格 的 行 来 显 示 任 何 列 中 包 含 搜 索 字 符 串 的 行 为 落 实 itunes 风 格 的 搜 索, 我 们 以 一 个 包 含 将 作 为 一 个 过 滤 器 参 数 的 文 本 的 文 本 框 开 始 我 们 还 定 义 了 一 个 定 时 器, 它 将 在 用 户 停 止 往 文 本 框 中 输 入 的 几 毫 秒 后 适 用 于 过 滤 器 : public Form1() InitializeComponent(); // 在 用 户 停 止 在 搜 索 框 中 键 入 的 1/2 秒 后 配 置 定 时 器 来 适 用 于 过 滤 器 _timer.interval = 500; _timer.tick += t_tick; // 监 测 搜 索 框 的 变 化 _txtsearch.textchanged += _txtsearch_textchanged; // 当 搜 索 框 中 的 文 字 发 生 变 化 时 重 新 启 动 定 时 器 void _txtsearch_textchanged(object sender, EventArgs e) _timer.stop(); _timer.start(); 既 然 定 时 器 已 经 被 配 置 好 了, 所 有 我 们 需 要 做 的 就 是 在 计 时 器 滴 答 计 时 时 来 创 建 和 应 用 过 滤 器 : 产 品 网 站 : 咨 询 热 线 : of 269

111 // 在 计 时 器 滴 答 计 时 时 应 用 过 滤 器 void t_tick(object sender, EventArgs e) // done for now... _timer.stop(); // 配 置 过 滤 器 var filter = new C1.Win.C1FlexGrid.ConditionFilter(); filter.condition1.operator = C1.Win.C1FlexGrid.ConditionOperator.Contains; filter.condition1.parameter = _txtsearch.text; // 应 用 过 滤 器 _flex.beginupdate(); for (int r = _flex.rows.fixed; r < _flex.rows.count; r++) bool visible = false; for (int c = _flex.cols.fixed; c < _flex.cols.count; c++) if (filter.apply(_flex[r, c])) visible = true; break; _flex.rows[r].visible = visible; _flex.endupdate(); 产 品 网 站 : 咨 询 热 线 : of 269

112 3.11 C1FlexGrid 的 属 性 组 C1FlexGrid 控 件 拥 有 一 套 非 常 丰 富 的 属 性, 方 法 和 事 件 但 你 却 无 需 为 了 有 效 地 使 用 该 控 件, 而 知 道 所 有 的 这 些 下 面 的 参 考 资 料 显 示 了 其 中 最 为 重 要 的 属 性, 方 法, 以 及 按 使 用 类 型 来 分 组 的 事 件 而 且 其 中 某 些 元 素 不 只 出 现 在 一 个 分 组 中 想 知 道 有 关 于 此 的 更 多 详 细 信 息, 请 选 择 下 面 的 特 定 元 素 表 格 布 局 Rows, Cols, AutoSizeCols, ScrollBars 光 标 和 选 择 SelectionMode, Select, ShowCell, Row, Col, RowSel, ColSel, MouseRow, MouseCol, BeforeRowColChange, AfterRowColChange, BeforeSelChange, AfterSelChange, KeyActionTab, KeyActionEnter 编 辑 AllowEditing, ComboList, EditMask, BeforeEdit, StartEdit, ValidateEdit, AfterEdit, StartEditing, FinishEditing, Editor, CellButtonClick, KeyDownEdit, KeyPressEdit, KeyUpEdit, ChangeEdit 获 取 和 设 置 值 Item (indexer), GetData, GetDataDisplay, SetData, GetCellRange, GetCellImage, SetCellImage, Clip, FindRow, Aggregate, CellChanged 用 户 界 面 AllowEditing, AllowMerging, AllowResizing, AllowDragging, AllowSorting, BeforeSort, AfterSort, AutoSearch, AutoSearchDelay, BeforeDragColumn, AfterDragColumn, BeforeDragRow, AfterDragRow, BeforeResizeColumn, AfterResizeColumn, BeforeResizeRow, AfterResizeRow, ShowScrollTip 概 述 和 总 结 Subtotal, Tree, IsNode, Level, Collapsed, BeforeCollapse, AfterCollapse 合 并 单 元 格 AllowMerging 数 据 绑 定 DataSource, DataMember, AfterDataRefresh, AutoResize, GridError 保 存 加 载 和 打 印 表 格 LoadGrid, SaveGrid, LoadExcel, SaveExcel, ClipSeparators, PrintGrid OLE 拖 放 DragMode, DropMode, BeforeMouseDown 产 品 网 站 : 咨 询 热 线 : of 269

113 4. 数 据 绑 定 数 据 绑 定 可 以 使 一 个 或 多 个 数 据 消 费 者 以 一 种 同 步 的 方 式 被 连 接 到 一 个 数 据 提 供 商 如 果 你 在 一 个 数 据 绑 定 的 表 格 上 移 动 光 标, 那 么 连 接 到 同 一 数 据 源 的 其 他 控 件 将 会 发 生 改 变, 以 反 映 当 前 的 新 纪 录 如 果 你 在 一 个 数 据 绑 定 的 表 格 上 编 辑 一 个 值, 那 么 其 他 连 接 到 同 一 数 据 源 的 控 件 将 会 发 生 改 变, 以 反 映 新 的 值 C1FlexGrid 控 件 支 持 将 数 据 绑 定 到 ADO.NET 数 据 源 对 象, 例 如, 数 据 表 DataTable 数 据 视 图 DataView 数 据 集 DataSet 和 数 据 视 图 管 理 器 DataViewManager C1FlexGrid 也 支 持 将 数 据 绑 定 到 ComponentOne DataObjects for WinForms 组 件, 例 如,C1Express 表 C1Express 视 图 C1Express 连 接 C1 数 据 视 图 C1DataView C1 数 据 表 源 C1DataTableSource 和 C1 数 据 集 C1DataSet 要 将 表 格 绑 定 到 一 个 数 据 源, 必 须 将 数 据 源 对 象 分 配 到 表 格 的 数 据 源 DataSource 属 性 如 果 数 据 源 对 象 包 含 多 于 一 个 的 表, 你 还 必 须 将 数 据 成 员 DataMember 属 性 设 置 为 一 个 能 指 定 应 该 使 用 哪 个 表 地 字 符 串 另 外, 你 也 可 以 用 一 个 单 一 的 设 置 数 据 绑 定 SetDataBinding 方 法 的 调 用 来 同 时 指 定 两 个 属 性 当 你 将 一 个 新 的 数 据 源 分 配 到 表 格, 它 将 会 将 自 己 的 列 自 动 刷 新 来 绑 定 数 据 源 中 可 用 的 列 然 后, 你 可 以 通 过 移 动 隐 藏 或 删 除 它 们 来 自 定 义 这 些 列 你 还 可 以 设 置 列 的 属 性, 如 它 们 的 宽 度 编 辑 掩 码 和 格 式 可 用 的 示 例 项 目 有 关 一 个 在 绑 定 到 数 据 源 后 将 表 格 列 重 新 排 序 的 例 子 的 详 细 信 息, 请 在 ComponentOne 帮 助 中 心 参 阅 列 顺 序 示 例 有 关 如 何 创 建 ADO.NET 数 据 源 对 象 的 更 多 相 关 详 细 信 息, 请 参 阅.NET Framework 文 档 有 关 如 何 在 WinForms 中 使 用 ComponentOne 数 据 对 象 的 更 多 相 关 详 细 信 息, 请 参 阅 包 含 在 ComponentOne Studio Enterprise 和 ComponentOne Studio for WinForms 中 的 ComponentOne DataObjects for WinForms 文 档 4.1 绑 定 到 数 据 源 无 需 编 写 一 行 代 码, 你 可 以 通 过 在 Visual Studio 中 使 用 数 据 源 配 置 向 导, 很 容 易 地 将 C1FlexGrid 绑 定 到 一 个 数 据 源 要 访 问 该 向 导 有 以 下 两 种 途 径, 可 以 通 过 在 属 性 窗 口 中 选 择 数 据 源 属 性, 或 通 过 C1FlexGrid 任 务 菜 单 中 的 选 择 数 据 源 对 话 框 有 关 C1FlexGrid 任 务 菜 单 的 更 多 详 细 信 息, 请 参 阅 产 品 网 站 : 咨 询 热 线 : of 269

114 C1FlexGrid 任 务 菜 单 ( 第 34 页 ) 点 击 属 性 窗 口 中 的 数 据 源 属 性 旁 边 的 下 拉 箭 头, 或 C1FlexGrid 任 务 菜 单 上 的 选 择 数 据 源 对 话 框, 可 以 允 许 你 从 一 个 可 用 数 据 源 列 表 中 选 择, 或 者 添 加 一 个 数 据 源 到 你 的 项 目 要 想 添 加 一 个 数 据 源 到 你 的 项 目, 请 单 击 添 加 项 目 数 据 源 来 打 开 数 据 源 配 置 向 导 数 据 源 配 置 向 导 可 以 引 导 你 一 步 步 地 添 加 数 据 源 选 择 数 据 源 类 型 页 可 以 使 你 选 择 你 所 想 要 用 来 收 集 信 息 的 应 用 程 序 的 类 型 默 认 的 选 择 是 数 据 库 在 选 择 你 的 数 据 连 接 页 上, 你 可 以 指 定 数 据 库 的 位 置 如 果 你 尚 未 连 接 到 数 据 库 的 话, 你 可 以 通 过 点 击 新 建 连 接 按 钮 来 指 定 一 个 新 的 连 接 点 击 新 建 连 接 按 钮, 打 开 添 加 连 接 对 话 框, 在 这 里 你 可 以 浏 览 到 你 的 数 据 库 的 位 置, 并 测 试 连 接 移 动 设 备 用 户 请 点 击 这 里 以 获 得 更 多 信 息 如 果 你 正 在 使 用 WinForms 的 ComponentOne FlexGrid 的 移 动 版, 请 在 添 加 连 接 对 话 框 中, 将 数 据 源 更 改 为 一 个 由 Compact Framework 支 持 的, 如 SQL Server 移 动 版 的.NET Framework 数 据 提 供 者 (.NET Framework Data Provider for SQL Server Mobile Edition) 产 品 网 站 : 咨 询 热 线 : of 269

115 然 后, 你 可 以 使 用 支 持 的 数 据 库, 例 如, 一 个 SQL Server 移 动 版 数 据 库 微 软 提 供 了 一 个 Northwind.sdf, 默 认 情 况 下, 它 位 于 C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0 folder for Microsoft Visual Studio 2005 该 向 导 可 以 保 存 和 命 名 你 在 保 存 连 接 字 符 串 到 应 用 程 序 配 置 文 件 页 面 上 的 连 接 在 此 页 面 上, 你 可 以 指 定 一 个 名 称 或 使 用 该 向 导 提 供 的 默 认 在 选 择 数 据 库 对 象 页 面 上, 你 可 以 指 定 你 要 在 数 据 集 中 包 括 的 表 和 字 段 你 也 可 以 为 你 的 数 据 集 提 供 一 个 名 称 或 使 用 向 导 提 供 的 默 认 产 品 网 站 : 咨 询 热 线 : of 269

116 该 向 导 可 以 创 建 数 据 集 绑 定 源 和 表 适 配 器, 并 且 将 它 们 添 加 到 你 的 项 目 请 再 次 单 击 数 据 源 属 性 旁 边 的 下 拉 箭 头 或 C1FlexGrid 任 务 菜 单 上 的 选 择 数 据 源 对 话 框, 然 后 选 择 数 据 源 如 果 你 双 击 这 个 窗 体, 你 还 会 发 现, 窗 体 _ 加 载 Form_Load 事 件 自 动 生 成 了 用 来 填 充 数 据 库 的 代 码 4.2 存 储 和 检 索 数 据 C1FlexGrid 控 件, 可 用 于 绑 定 模 式 或 未 绑 定 模 式 在 绑 定 模 式 下, 该 表 格 连 接 到 一 个 数 据 源, 并 且, 来 源 于 数 据 源 的 所 有 数 据 会 显 示 在 表 格 中 在 这 种 模 式 下, 改 变 表 格 上 的 数 据 就 可 以 在 基 础 数 据 源 改 变 它 在 未 绑 定 模 式 下, 表 格 自 己 管 理 自 己 的 数 据 源 不 论 是 在 绑 定 模 式 下 或 未 绑 定 模 式 下, 要 访 问 C1FlexGrid 中 的 数 据, 最 简 单 的 方 法 是 使 用 行 和 列 的 索 引 该 索 引 允 许 你 在 从 中 可 以 获 取 或 设 置 存 储 在 那 里 的 数 据 的 行 或 列 中 指 定 一 个 单 元 格 例 如, 下 面 的 代 码 可 以 选 择 一 行 的 第 二 个 单 元 格 中 的 数 据 : Visual Basic Row(2).Selected = True C# Row[2].Selected = true; 项 目 Item 属 性 是 另 一 种 简 单 的 方 法 来 访 问 C1FlexGrid 中 的 数 据 项 目 Item 属 性 是 一 个 索 引, 它 可 以 为 行 和 列 编 纂 一 个 索 引, 并 获 取 或 设 置 单 元 格 中 所 存 储 的 数 据 ( 你 还 可 以 使 用 列 名 称 作 索 引 ) 例 如, 下 面 的 代 码 可 以 将 行 数 字 存 储 在 第 一 个 表 格 列 : Visual Basic Dim r As Integer For r = _flex.rows.fixed To _flex.rows.count - 1 _flex(r, 0) = r Next C# 产 品 网 站 : 咨 询 热 线 : of 269

117 for (int r = _flex.rows.fixed; r <= _flex.rows.count - 1; r++) _flex[r, 0] = r; 产 品 网 站 : 咨 询 热 线 : of 269

118 当 你 指 定 一 个 值 到 一 个 单 元 格, 该 表 格 会 试 图 将 这 个 值 转 换 成 列 的 指 定 的 数 据 类 型 如 果 该 转 换 失 败 的 话, 表 格 会 触 发 表 格 错 误 GridError 事 件, 但 并 不 会 改 变 单 元 格 你 可 以 通 过 使 用 设 置 数 据 SetData 方 法 来 重 写 此 行 为, 并 且 将 强 制 coerce 参 数 设 置 为 假 当 你 使 用 索 引 检 索 数 据 的 时 候, 表 格 可 以 使 单 元 格 中 存 储 的 实 际 数 据 返 回 要 想 检 索 一 个 包 含 数 据 格 式 化 版 本 的 字 符 串 ( 表 格 向 用 户 显 示 的 内 容 ), 请 使 用 获 取 数 据 显 示 GetDataDisplay 方 法 你 还 可 以 通 过 使 用 Clip 属 性 来 设 置 和 检 索 所 选 中 的 内 容 此 属 性 在 处 理 剪 贴 板 和 拖 放 操 作 方 面 是 特 别 有 用 的 在 默 认 情 况 下,Clip 属 性 可 以 使 一 个 包 含 制 表 符 (CHR(9)) 的 字 符 串 返 回 到 单 元 格 与 单 元 格 之 间, 并 且 使 含 有 回 车 符 (CHR(13)) 返 回 到 行 与 行 之 间 要 想 使 用 不 同 的 分 隔 符, 请 改 变 片 段 分 离 ClipSeparators 属 性 最 后, 你 可 以 通 过 使 用 单 元 格 区 域 对 象 ( 第 45 页 ) 来 设 置 和 检 索 任 意 单 元 格 区 域 内 的 内 容 产 品 网 站 : 咨 询 热 线 : of 269

119 5. FlexGrid for WinForms 示 例 请 注 意,ComponentOne 软 件 工 具 伴 随 着 各 种 示 例 项 目 和 / 或 演 示, 这 可 能 会 使 用 到 包 括 ComponentOne Studios 的 其 他 开 发 工 具 可 通 过 ComponentOne Sample Explorer 来 访 问 示 例 要 查 看 示 例 的 话, 请 在 桌 面 上 单 击 开 始 按 钮, 然 后 单 击 所 有 程 序 All Programs Studio for WinForms Samples 示 例 FlexGrid Visual Basic 示 例 示 例 描 述 自 动 调 整 尺 寸 编 辑 AutoSizeEdit 条 形 图 表 BarChart 信 号 灯 绑 定 模 式 下 删 除 BoundDelete 绑 定 模 式 下 完 成 编 辑 BoundFinishEdit 绑 定 模 式 下 的 图 像 C1FlexGrid 可 打 印 C1FlexGridPrintable 单 元 格 边 框 CellBorders 该 示 例 演 示 了 应 该 如 何 在 用 户 输 入 的 时 候 调 整 编 辑 器 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 使 用 了 OwnerDrawn 单 元 格 来 建 立 起 基 于 表 格 数 据 的 图 表 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 CellStyles 单 元 格 样 式 来 使 单 元 格 闪 烁 该 示 例 可 以 创 建 一 Blinker 这 将 导 致 所 有 的 单 元 格 具 有 这 种 闪 烁 的 样 式 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 可 以 从 绑 定 的 FlexGrid 删 除 行 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 编 辑 后 向 数 据 行 DataRow 提 交 更 改 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 将 表 格 绑 定 到 作 为 OLE 对 象 存 储 的 图 像 领 域 该 示 例 使 用 了 BoundImageC1FlexGrid 控 件 该 示 例 提 供 了 一 个 可 打 印 的 ( 通 过 C1Preview)C1FlexGrid 控 件 该 示 例 使 用 了 C1FlexGrid 控 件, 并 调 用 了 C1.C1Preview 命 名 空 间 该 示 例 使 用 了 所 有 者 绘 制 OwnerDraw 来 提 供 自 定 义 的 单 元 格 边 框 该 示 例 使 用 了 C1FlexGrid 控 件 产 品 网 站 : 咨 询 热 线 : of 269

120 单 元 格 数 据 样 式 CellDataType 单 元 格 合 并 CellMerging 单 元 格 注 释 CellNotes 列 编 辑 器 ColumnEditor 自 定 义 数 据 映 射 CustomDataMap 自 定 义 编 辑 器 CustomEditor 自 定 义 合 并 CustomMerge 自 定 义 合 并 2 CustomMerge2 自 定 义 合 并 3 CustomMerge3 自 定 义 合 并 4 CustomMerge4 自 定 义 打 印 CustomPrint 该 示 例 在 每 一 个 单 元 格 的 基 础 上 分 配 单 元 格 类 型 ( 和 编 辑 器 ) 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 在 C1FlexGrid 控 件 中 显 示 了 不 同 类 型 的 单 元 格 合 并 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 可 以 将 注 释 附 加 到 C1FlexGrid 的 单 元 格 上, 并 且 可 以 通 过 以 下 两 大 类 : 单 元 格 注 释 CellNote 和 单 元 格 注 释 管 理 器 CellNoteManager 来 实 现 Excel 样 式 的 单 元 格 注 释 该 示 例 可 以 在 你 的 控 件 中 显 示 C1FlexGrid 设 计 时 列 编 辑 器 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 使 用 数 据 映 射 DataMaps 时 自 定 义 下 拉 列 表 选 项 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 你 应 该 如 何 配 置 自 己 的 单 元 格 编 辑 器 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 你 应 该 如 何 实 现 用 自 己 的 合 并 逻 辑 来 创 造 一 个 电 视 指 南 显 示 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 该 示 例 演 示 了 应 该 如 何 实 现 自 己 的 合 并 逻 辑 并 由 此 将 合 并 模 式 混 合 到 一 起 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 该 示 例 演 示 了 应 该 如 何 通 过 重 写 获 取 数 据 GetData 方 法 来 自 定 义 分 组 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 该 示 例 演 示 了 应 该 如 何 通 过 重 写 获 取 数 据 GetData 方 法 来 自 定 义 分 组 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 该 示 例 可 以 使 用 创 建 图 像 createimage 方 法 来 打 印 包 含 任 意 行 和 列 碎 片 的 表 格 该 示 产 品 网 站 : 咨 询 热 线 : of 269

121 例 使 用 了 C1FlexGrid 控 件 自 定 义 树 型 图 CustomTree 数 据 索 引 DataIndex 数 据 映 射 DataMap 数 据 读 取 器 DataReader 数 据 表 DataTable 数 据 树 型 图 DataTree 数 据 库 动 态 样 式 DBDynamicStyles 数 据 库 图 像 区 域 DBImageField 数 据 库 架 构 更 改 DBSchemaChange 数 据 库 树 型 图 DBTree 该 示 例 可 以 使 用 C1FlexGrid 控 件 来 创 建 一 个 树 型 图 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 可 以 使 用 Row.DataIndex 属 性 来 获 取 基 础 数 据 行 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 可 以 在 绑 定 到 数 据 源 时 使 用 数 据 映 射 列 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 可 以 从 一 个 数 据 读 取 器 DataReader 中 填 充 表 格 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 创 建 填 充 并 绑 定 一 个 数 据 表 DataTable 对 象 到 表 格 ( 包 括 添 加 或 移 除 行 ) 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 可 以 将 表 格 绑 定 到 一 个 分 层 的 数 据 源, 并 且 在 子 表 格 中 显 示 详 情 该 示 例 可 以 根 据 其 内 容 来 指 定 样 式 到 表 格 的 单 元 格 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 可 以 显 示 数 据 表 DataTable 中 存 储 的 图 像 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 测 试 表 格 对 数 据 源 对 象 发 生 变 化 的 响 应 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 说 明 了 应 该 如 何 在 一 个 分 层 树 型 视 图 中 显 示 绑 定 的 数 据 该 示 例 使 用 了 C1FlexGrid 控 件 拖 放 该 示 例 演 示 了 应 该 如 何 自 定 义 自 动 拖 放 DragDrop 手 动 拖 放 DragDropManual 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 控 件 之 间 与 表 格 内 部 实 现 手 动 的 OLE 拖 放 OleDragDrop 产 品 网 站 : 咨 询 热 线 : of 269

122 拖 动 行 DragRow 动 态 样 式 DynamicStyles 编 辑 Editing 含 总 计 的 过 滤 行 FilterRow_With_Totals 该 示 例 演 示 了 应 该 如 何 在 表 格 之 间 拖 动 行 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 指 定 样 式 到 一 个 以 另 一 个 单 元 格 的 内 容 为 基 础 的 单 元 格 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 文 本 框 列 表 掩 码 和 复 选 框 来 对 单 元 格 进 行 编 辑 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 显 示 了 应 该 如 何 添 加 总 计 到 一 个 含 有 过 滤 行 FilterRow 的 绑 定 表 格 FlexByRow 该 示 例 设 置 了 一 个 换 位 格 式 的 表 格 在 该 示 例 中, 通 常 被 分 配 到 表 格 列 的 数 据 类 型 编 辑 掩 码 格 式 和 其 他 属 性 被 分 配 到 了 表 格 行 该 示 例 使 用 了 C1FlexGrid 控 件 FlexGroup 该 示 例 演 示 了 你 应 该 如 何 通 过 使 用 C1FlexGrid 来 实 现 Outlook 风 格 的 分 组 和 过 滤 该 示 例 使 用 了 C1FlexGrid 控 件 固 定 底 部 该 示 例 演 示 了 应 该 如 何 在 表 格 的 底 部 显 示 FreezeBottom 固 定 的 行 该 示 例 使 用 了 C1FlexGrid 控 件 GridChart HierData 超 链 接 Hyperlink 加 载 速 度 LoadSpeed 映 射 和 分 组 该 示 例 演 示 了 你 可 以 如 何 将 一 个 FlexGrid 附 加 到 一 个 C1Chart 控 件 该 示 例 使 用 了 C1FlexGrid 和 C1Chart 控 件 该 示 例 演 示 了 你 应 该 如 何 绑 定 到 分 层 数 据 源 ( 主 从 风 格 ) 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 你 应 该 如 何 添 加 超 链 接 到 一 个 C1FlexGrid 中 的 单 元 格 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 显 示 了 加 载 数 据 到 C1FlexGrid 的 三 种 技 术 该 示 例 显 示 了 在 使 用 数 据 映 射 列 时 的 分 组 和 排 序 行 为 该 示 例 使 用 了 C1FlexGrid 控 件 产 品 网 站 : 咨 询 热 线 : of 269

123 合 并 样 式 该 示 例 合 并 了 分 配 到 行 列 和 单 元 格 的 单 元 格 样 式 CellStyles 该 示 例 使 用 了 C1FlexGrid MergeStyles 控 件 多 列 词 典 该 示 例 使 用 了 多 列 词 典 MultiColumnDictionary 类 来 实 现 多 列 下 拉 菜 MultiColumnDictionary 单 大 纲 Outline 该 示 例 演 示 了 应 该 如 何 隐 藏 大 纲 中 的 重 复 数 据 该 示 例 使 用 了 C1FlexGrid 控 件 PdfExportVB 产 品 结 构 树 ProductTree RTF 表 格 RTFGrid 滚 动 位 置 ScrollPosition 选 择 模 式 SelectionMode 排 序 Sorting 拆 分 Splits 开 始 编 辑 StartEditing 样 式 Styles 该 示 例 使 用 了 C1Pdf 方 法 来 将 C1FlexGrids 导 出 为 PDF 文 件 该 示 例 演 示 了 应 该 如 何 建 立 一 个 关 于 产 品 信 息 的 自 定 义 结 构 树 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 表 格 的 单 元 格 中 显 示 RTF 文 本 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 滚 动 位 置 ScrollPosition 属 性 是 如 何 运 作 的 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 显 示 了 选 择 模 式 SelectionMode 属 性 的 效 果 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 显 示 了 一 些 排 序 技 术 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 将 一 个 C1FlexGrid 拆 分 成 多 个 视 图 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 实 现 了 一 个 停 留 在 单 元 格 编 辑 模 式 的 表 格 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 样 式 来 自 定 义 C1FlexGrid 的 外 观 该 示 例 使 用 了 C1FlexGrid 控 件 产 品 网 站 : 咨 询 热 线 : of 269

124 分 类 汇 总 Subtotals 移 调 Transpose TreeCheck 树 型 图 节 点 TreeNode 验 证 Validate 变 焦 单 元 格 ZoomCell 该 示 例 可 以 创 建 多 个 列 的 分 类 汇 总 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 一 个 表 格 中 移 调 数 据 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 添 加 复 选 框 到 一 个 表 格 的 树 型 图 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 C1FlexGrid 的 Node 对 象 来 管 理 大 纲 树 型 图 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 与 C1FlexGrid 控 件 一 起 使 用 错 误 提 供 商 ErrorProvider 控 件 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 放 大 选 定 的 单 元 格 C# 示 例 示 例 加 速 器 说 明 AcceleratorCaption 分 析 Analyze 动 画 GIF AnimagedGif 自 动 完 成 AutoComplete 自 动 调 整 尺 寸 编 辑 AutoSizeEdit 条 形 图 表 BarChart 描 述 该 示 例 演 示 了 应 该 如 何 将 快 捷 键 添 加 到 表 格 的 标 题 该 示 例 演 示 了 应 该 如 何 提 供 动 态 数 据 的 排 序 和 分 组 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 说 明 了 应 该 如 何 在 表 格 的 单 元 格 中 显 示 GIF 动 画 该 示 例 演 示 了 应 该 如 何 在 用 户 输 入 时 完 成 登 录 该 示 例 演 示 了 应 该 如 何 在 用 户 输 入 时 调 整 编 辑 器 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 表 格 中 的 单 元 格 来 绘 制 条 形 图 表 该 示 例 使 用 了 C1FlexGrid 控 件 产 品 网 站 : 咨 询 热 线 : of 269

125 信 号 灯 Blinker 绑 定 模 式 下 删 除 BoundDelete 绑 定 模 式 下 完 成 编 辑 BoundFinishEdit 绑 定 模 式 下 的 图 像 映 射 BoundImageMap C1FlexGrid 可 打 印 C1FlexGridPrintable 单 元 格 边 框 CellBorders 单 元 格 的 数 据 类 型 CellDataType 单 元 格 标 签 延 迟 CellLabelDelay 单 元 格 注 释 CellNotes 经 典 Classic (C1FlexGridClassic) 该 示 例 演 示 了 应 该 如 何 使 用 单 元 格 样 式 CellStyles 来 使 单 元 格 闪 烁 该 示 例 演 示 了 应 该 如 何 从 一 个 绑 定 的 FlexGrid 中 删 除 行 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 编 辑 后 提 交 更 改 到 一 个 数 据 行 DataRow 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 通 过 一 个 数 据 绑 定 的 表 格 来 使 用 图 像 映 射 ImageMap 属 性 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 提 供 了 一 个 可 打 印 的 ( 通 过 C1Preview)C1FlexGrid 控 件 该 示 例 使 用 了 C1FlexGrid 控 件, 并 且 调 用 了 C1.C1Preview 命 名 空 间 该 示 例 演 示 了 应 该 如 何 使 用 所 有 者 绘 制 OwnerDraw 来 提 供 自 定 义 的 单 元 格 边 框 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 每 个 单 元 格 的 基 础 上 分 配 单 元 格 样 式 ( 和 编 辑 器 ) 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 指 定 的 时 间 间 隔 后 显 示 显 示 单 元 格 标 签 该 示 例 可 以 将 注 释 附 加 到 C1FlexGrid 的 单 元 格 上, 并 且 可 以 通 过 以 下 两 大 类 : 单 元 格 注 释 CellNote 和 单 元 格 注 释 管 理 器 CellNoteManager 来 实 现 Excel 样 式 的 单 元 格 注 释 该 示 例 演 示 了 应 该 如 何 使 用 C1FlexGrid 2010 的 过 滤 功 能 该 示 例 演 示 了 你 应 该 如 何 通 过 使 用 允 许 过 滤 AllowFiltering 属 性 和 过 滤 后 AfterFilter 事 件 来 控 制 和 自 定 义 表 格 的 内 置 过 滤 器 产 品 网 站 : 咨 询 热 线 : of 269

126 列 顺 序 ColumnOrder 列 宽 提 示 ColumnWidthTip 交 叉 表 CrossTabs 自 定 义 数 据 CustomData 自 定 义 数 据 映 射 CustomDataMap 自 定 义 编 辑 器 CustomEditor 自 定 义 编 辑 器 CustomEditors 该 示 例 演 示 了 应 该 如 何 动 态 地 定 位 列 的 位 置 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 用 户 调 整 列 宽 时 显 示 一 个 工 具 提 示 ToolTip 该 示 例 演 示 了 应 该 如 何 使 用 数 据 透 视 表 来 总 结 和 交 叉 引 用 数 据 该 示 例 演 示 了 应 该 如 何 实 现 一 个 自 定 义 的 数 据 源 对 象 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 使 用 数 据 映 射 DataMaps 时 自 定 义 下 拉 列 表 中 的 选 项 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 实 现 自 己 的 单 元 格 编 辑 器 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 内 置.NET 和 用 C1FlexGrid 来 自 定 义 编 辑 控 件 自 定 义 过 滤 器 该 示 例 演 示 了 应 该 如 何 实 现 C1FlexGrid 的 CustomFilters 自 定 义 过 滤 器 自 定 义 合 并 该 示 例 演 示 了 应 该 如 何 通 过 自 己 的 合 并 逻 CustomMerge 辑 来 创 造 一 个 电 视 指 南 显 示 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 自 定 义 合 并 2 该 示 例 演 示 了 应 该 如 何 通 过 自 己 的 合 并 逻 CustomMerge2 辑 来 将 合 并 模 式 混 合 到 一 起 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 自 定 义 合 并 3 该 示 例 演 示 了 应 该 如 何 通 过 重 写 获 取 数 CustomMerge3 据 GetData 方 法 来 自 定 义 分 组 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 自 定 义 合 并 4 该 示 例 演 示 了 应 该 如 何 通 过 重 写 获 取 数 CustomMerge4 据 GetData 方 法 来 自 定 义 分 组 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 自 定 义 打 印 CustomPrint 该 示 例 演 示 了 应 该 如 何 使 用 创 建 图 像 createimage 方 法 来 打 印 含 有 任 意 行 和 列 的 间 隔 的 表 格 该 示 例 使 用 了 C1FlexGrid 控 件 产 品 网 站 : 咨 询 热 线 : of 269

127 自 定 义 打 印 多 个 表 格 该 示 例 演 示 了 应 该 如 何 使 用 创 建 图 像 CustomPrintMultiGrid createimage 方 法 来 在 一 个 单 一 的 文 件 中 打 印 多 个 表 格 自 定 义 选 择 该 示 例 使 用 了 所 有 者 绘 制 OwnerDraw CustomSelection 来 实 现 自 定 义 ( 非 矩 形 ) 的 选 择 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 自 定 义 排 序 该 示 例 演 示 了 应 该 如 何 通 过 一 个 自 定 义 的 CustomSort IComparer 对 象 来 实 现 与 自 己 的 排 序 逻 辑 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 索 引 该 示 例 演 示 了 应 该 如 何 使 用 行 数 据 索 DataIndex 引 Row.DataIndex 属 性 来 获 取 该 行 的 基 础 数 据 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 表 该 示 例 演 示 了 应 该 如 何 绑 定 到 一 个 数 据 DataTable 表 DataTable, 应 该 如 何 添 加 和 删 除 行 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 树 型 图 该 示 例 演 示 了 应 该 如 何 将 表 格 绑 定 到 分 层 DataTree 数 据 源 上, 并 且 将 细 节 显 示 在 子 表 格 上 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 数 据 库 动 态 样 式 该 示 例 可 以 根 据 其 内 容 来 指 定 样 式 到 表 格 DBDynamicStyles 的 单 元 格 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 库 图 像 区 域 该 示 例 演 示 了 应 该 如 何 显 示 数 据 表 DBImageField DataTable 中 存 储 的 图 像 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 库 图 像 该 示 例 演 示 了 应 该 如 何 将 一 个 表 格 通 过 存 DBImages 储 为 OLE 对 象 的 图 像 区 域 来 绑 定 到 一 个 数 据 库 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 库 架 构 更 改 该 示 例 演 示 了 应 该 如 何 测 试 表 格 对 数 据 源 DBSchemaChange 对 象 发 生 变 化 的 响 应 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 库 树 型 图 该 示 例 说 明 了 应 该 如 何 在 一 个 分 层 树 型 视 DBTree 图 中 显 示 绑 定 的 数 据 该 示 例 使 用 了 C1FlexGrid 控 件 数 据 库 更 新 该 示 例 演 示 了 应 该 如 何 将 更 改 保 存 到 底 层 产 品 网 站 : 咨 询 热 线 : of 269

128 DBUpdate 数 据 库 该 示 例 使 用 了 C1FlexGrid 控 件 拖 放 该 示 例 演 示 了 应 该 如 何 自 定 义 自 动 拖 放 DragDrop 该 示 例 使 用 了 C1FlexGrid 控 件 拖 动 图 像 DragImages 拖 动 合 并 DragMerged 拖 动 行 DragRow 动 态 样 式 DynamicStyles 错 误 信 息 ErrorInfo Excel 该 示 例 演 示 了 应 该 如 何 通 过 自 定 义 OLE 拖 放 来 使 用 单 元 格 图 像 该 示 例 演 示 了 应 该 如 何 拖 动 合 并 列 的 分 组 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 表 格 之 间 拖 动 行 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 以 另 一 个 单 元 格 的 内 容 为 基 础 来 指 定 样 式 到 一 个 单 元 格 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 表 格 上 显 示 错 误 信 息 该 示 例 演 示 了 应 该 如 何 加 载 和 保 存 Microsoft Excel 文 件 (.XLS) Excel 样 式 过 滤 器 该 示 例 添 加 了 一 个 上 下 文 菜 单, 它 可 以 允 ExcelStyleFilter 许 排 序 和 过 滤 数 据 过 滤 行 该 示 例 演 示 了 应 该 如 何 在 一 个 FlexGrid 控 FilterRow 件 上 实 现 一 个 过 滤 行 FilterRow 该 示 例 使 用 了 C1FlexGrid 控 件 查 找 行 该 示 例 演 示 了 应 该 如 何 如 何 查 找 到 一 个 在 FindRow 底 层 数 据 源 的 行 该 示 例 使 用 了 C1FlexGrid 控 件 FlexByRow 该 示 例 演 示 了 应 该 如 何 建 立 一 个 换 位 格 式 的 表 格 该 示 例 使 用 了 C1FlexGrid 控 件 FlexGroup 该 示 例 演 示 了 应 该 如 何 通 过 使 用 C1FlexGrid 控 件 来 实 现 Outlook 风 格 的 分 组 该 示 例 使 用 了 C1FlexGrid 控 件 固 定 底 部 该 示 例 演 示 了 应 该 如 何 在 表 格 的 底 部 显 示 FreezeBottom 固 定 的 行 该 示 例 使 用 了 C1FlexGrid 控 件 GridChart 该 示 例 演 示 了 应 该 如 何 将 一 个 FlexGrid 附 产 品 网 站 : 咨 询 热 线 : of 269

129 HierData HierData2 加 到 一 个 C1Chart 控 件 该 示 例 使 用 了 C1FlexGrid 控 件 和 C1Chart 控 件 该 示 例 演 示 了 应 该 如 何 绑 定 到 分 层 数 据 源 ( 主 从 风 格 ) 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 绑 定 到 分 层 数 据 源 ( 主 从 风 格 ) 宿 主 控 件 该 示 例 演 示 了 应 该 如 何 在 表 格 单 元 格 中 承 HostControls 载 控 件 该 示 例 使 用 了 C1FlexGrid 控 件 超 链 接 该 示 例 演 示 了 应 该 如 何 将 超 链 接 添 加 到 Hyperlink FlexGrid 中 的 单 元 格 该 示 例 使 用 了 C1FlexGrid 控 件 遗 产 日 期 该 示 例 演 示 了 应 该 如 何 使 用 一 个 绑 定 的 列 LegacyDates 来 将 存 储 为 字 符 串 的 日 期 转 换 成 真 正 的 日 期 锁 定 的 列 该 示 例 显 示 了 应 该 如 何 防 止 用 户 选 择 某 些 LockedColumns 列 主 从 该 示 例 演 示 了 应 该 如 何 在 代 码 中 创 建 和 绑 MasterDetail 定 主 从 风 格 的 数 据 集 DataSet 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 合 并 样 式 该 示 例 演 示 了 应 该 如 何 将 分 配 到 行 列 和 MergeStyles 单 元 格 的 单 元 格 样 式 CellStyles 合 并 该 示 例 使 用 了 C1FlexGrid 控 件 多 列 词 典 该 示 例 演 示 了 应 该 如 何 使 用 多 列 词 典 MultiColumnDictionary MultiColumnDictionary 类 来 实 现 多 列 下 拉 菜 单 多 个 家 长 该 示 例 演 示 了 应 该 如 何 创 建 一 个 复 杂 的 主 MultiParent 从 显 示 多 个 选 择 MultiSelection 该 示 例 演 示 了 应 该 如 何 实 现 多 范 围 的 选 择 新 功 能 NewFeatures20091 新 的 行 模 板 能 该 示 例 显 示 了 为 V1/2009 版 本 添 加 的 新 功 该 示 例 演 示 了 应 该 如 何 将 一 个 新 行 模 板 放 产 品 网 站 : 咨 询 热 线 : of 269

130 NewRowTemplate 置 到 表 格 上 大 纲 Outline 该 示 例 演 示 了 应 该 如 何 隐 藏 大 纲 中 的 重 复 数 据 该 示 例 使 用 了 C1FlexGrid 控 件 自 绘 该 示 例 演 示 了 应 该 如 何 自 动 调 整 自 绘 单 元 OwnerDraw 格 的 大 小 自 绘 阿 尔 法 该 示 例 演 示 了 应 该 如 何 使 用 有 幻 灯 演 示 OwnerDrawAlpha transparency 的 自 绘 OwnerDraw 来 取 得 MediaPlayer 一 般 的 效 果 密 码 字 符 该 示 例 显 示 了 应 该 如 何 使 用 C1FlexGrid 来 PasswordChar 输 入 和 编 辑 密 码 该 示 例 使 用 了 C1FlexGrid 控 件 Pdf 输 出 该 示 例 演 示 了 应 该 如 何 使 用 C1Pdf 方 法 来 PdfExport 将 C1FlexGrids 导 出 为 PDF 文 件 行 状 态 显 示 该 示 例 演 示 了 应 该 如 何 使 用 不 同 的 风 格 来 RowStateDisplay 显 示 不 同 状 态 的 数 据 行 DataRow 该 示 例 使 用 了 C1FlexGrid 控 件 RTF 表 格 该 示 例 演 示 了 应 如 何 显 示 表 格 单 元 格 中 的 RTFGrid RTF 文 本 该 示 例 使 用 了 C1FlexGrid 控 件 滚 动 位 置 该 示 例 演 示 了 ScrollPosition 属 性 是 如 何 工 ScrollPosition 作 的 该 示 例 使 用 了 C1FlexGrid 控 件 选 择 模 式 该 示 例 演 示 了 应 该 如 何 显 示 选 择 模 式 SelectionMode SelectionMode 属 性 的 效 果 该 示 例 使 用 了 C1FlexGrid 控 件 设 置 编 辑 器 该 示 例 演 示 了 应 该 如 何 使 用 设 置 编 辑 SetupEditor 器 SetupEditor 事 件 来 自 定 义 表 格 编 辑 器 该 示 例 使 用 了 C1FlexGrid 控 件 简 单 计 算 器 该 示 例 可 以 使 用 数 据 表 计 算 DataTable.Compute 方 法 来 评 估 表 格 单 元 格 中 的 SimpleCalc 表 达, 并 使 用 自 绘 OwnerDraw 来 显 示 结 果 排 序 Sorting 该 示 例 演 示 了 应 该 如 何 显 示 一 些 排 序 技 术 该 示 例 使 用 了 C1FlexGrid 控 件 产 品 网 站 : 咨 询 热 线 : of 269

131 排 序 空 值 SortNulls 拆 分 Splits SQL 生 成 器 SqlBuilder 开 始 编 辑 StartEditing 分 类 汇 总 Subtotals 主 题 Themes 线 性 更 新 ThreadedUpdate 树 型 图 检 查 TreeCheck 树 型 图 节 点 TreeNode 三 态 绑 定 TriStateBound 未 绑 定 的 列 UnboundColumns 变 焦 单 元 格 ZoomCell 该 示 例 演 示 了 应 该 如 何 使 用 自 定 义 排 序 来 排 列 在 表 格 底 部 的 空 值 该 示 例 演 示 了 应 该 如 何 将 一 个 C1FlexGrid 拆 分 成 多 个 视 图 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 一 个 以 表 格 为 基 础 的 图 形 界 面 来 创 建 SQL 语 句 该 示 例 演 示 了 应 该 如 何 实 现 一 个 停 留 在 单 元 格 编 辑 模 式 的 表 格 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 创 建 多 个 列 的 分 类 汇 总 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 通 过 更 改 表 格 的 外 观 来 实 现 几 个 预 定 义 的 展 示 该 示 例 显 示 了 应 该 如 何 从 不 同 的 线 程 来 更 新 表 格 该 示 例 演 示 了 应 该 如 何 添 加 复 选 框 到 一 个 表 格 树 型 图 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 FlexGrid 节 点 对 象 来 管 理 大 纲 树 型 图 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 布 尔 列 中 提 供 三 态 (grayable) 的 值 该 示 例 调 用 了 C1.Win.C1FlexGrid 命 名 空 间 该 示 例 演 示 了 应 该 如 何 额 外 支 持 未 绑 定 的 列 该 示 例 演 示 了 应 该 如 何 放 大 选 定 的 单 元 格 ComponentOne FlexGrid for Mobile Devices Visual Basic 示 例 示 例 分 析 描 述 该 示 例 演 示 了 应 该 如 何 提 供 动 态 数 据 排 序 产 品 网 站 : 咨 询 热 线 : of 269

132 Analyze 和 分 组 该 示 例 使 用 了 C1FlexGrid 控 件 条 形 图 表 该 示 例 演 示 了 应 该 如 何 使 用 表 格 单 元 格 来 BarChart 绘 制 条 形 图 表 该 示 例 使 用 了 C1FlexGrid 控 件 编 辑 数 据 该 示 例 演 示 了 应 该 如 何 显 示 内 置 编 辑 器 的 EditData 不 同 样 式 和 动 态 格 式 该 示 例 使 用 了 C1FlexGrid 控 件 线 性 更 新 ThreadedUpdate 该 示 例 显 示 了 应 该 如 何 从 不 同 的 线 程 来 更 新 表 格 ComponentOne FlexGrid for Mobile Devices C# 示 例 示 例 分 析 Analyze 条 形 图 表 BarChart 上 下 文 菜 单 ContextMenu 数 据 树 型 图 DataTree 编 辑 数 据 EditData 主 从 MasterDetail 透 明 图 像 TransparentImages 描 述 该 示 例 演 示 了 应 该 如 何 提 供 动 态 数 据 排 序 和 分 组 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 使 用 表 格 单 元 格 来 绘 制 条 形 图 表 该 示 例 使 用 了 C1FlexGrid 控 件 该 示 例 演 示 了 应 该 如 何 在 选 定 表 格 上 的 一 个 项 目 后 显 示 一 个 上 下 文 菜 单 ContextMenu 该 示 例 演 示 了 应 该 如 何 在 一 个 向 下 钻 取 的 表 格 上 显 示 分 层 数 据 该 示 例 演 示 了 应 该 如 何 显 示 内 置 编 辑 器 的 不 同 样 式 和 动 态 格 式 该 示 例 演 示 了 应 该 如 何 使 用 两 个 表 格 来 显 示 等 级 的 数 据 该 示 例 演 示 了 应 该 如 何 使 用 透 明 度 来 诠 释 图 像 产 品 网 站 : 咨 询 热 线 : of 269

133 6. FlexGrid for WinForms 教 程 下 面 章 节 的 教 程 中, 包 含 了 一 些 例 子 用 来 说 明 C1FlexGrid 控 件 中 的 一 些 主 要 特 点 教 程 通 过 一 步 步 创 建 几 个 简 单 的 项 目, 详 细 描 述 了 每 个 步 骤 配 套 的 光 盘 CD 中 包 含 了 一 些 可 作 为 参 考 的 更 复 杂 的 例 子 这 些 教 程 是 : 教 程 描 述 编 辑 教 程 大 纲 教 程 数 据 分 析 教 程 从 一 个 基 本 的 数 据 输 入 表 格 开 始, 本 教 程 演 示 如 何 实 现 数 据 格 式 化 复 选 框 下 拉 列 表 输 入 掩 码 数 据 验 证 剪 贴 板 支 持 演 示 如 何 使 用 C1FlexGrid 的 大 纲 功 能 来 展 示 结 构 性 ( 或 分 层 ) 数 据 从 一 个 包 含 不 同 产 品 的 各 地 区 的 销 售 人 员 的 销 售 数 据 表 格, 来 展 示 如 何 实 现 动 态 布 局 ( 列 顺 序 ) 自 动 排 序 合 并 单 元 格 自 动 分 类 汇 总 和 大 纲 视 图 6.1 编 辑 教 程 本 教 程 由 一 个 基 本 的 数 据 录 入 表 格 开 始, 然 后 增 加 了 以 下 功 能 : 1. 格 式 化 2. 复 选 框 3. 下 拉 列 表 4. 复 杂 的 数 据 验 证 5. 剪 贴 板 支 持 6. 自 定 义 编 辑 器 最 终 的 应 用 程 序 将 类 似 于 下 面 : 产 品 网 站 : 咨 询 热 线 : of 269

134 在 ComponentOne 主 页 的 Videos 中 有 一 个 本 教 程 的 视 频 步 骤 1/6: 为 这 个 编 辑 教 程 创 建 一 个 C1FlexGrid 控 件 启 动 一 个 新 项 目 并 点 击 工 具 箱 中 的 C1FlexGrid 图 标 向 窗 体 中 添 加 C1FlexGrid 控 件 然 后 在 窗 体 中 点 击 或 者 拖 动 控 件 到 一 个 合 适 的 大 小 如 果 你 没 有 在 工 具 箱 中 找 到 C1FlexGrid 控 件, 那 么 请 在 工 具 箱 中 右 键 单 击 然 后 选 择 选 择 项 然 后 在.Net 组 件 列 表 中 查 找 C1FlexGrid 控 件 并 确 保 勾 选 上 如 果 你 在 控 件 列 表 中 无 法 找 到 控 件, 你 也 许 需 要 重 新 安 装 控 件 包 码 : 1. 在 属 性 窗 口 中 为 C1FlexGrid 控 件 设 置 以 下 属 性 : 属 性 设 置 Dock Fill Cols.Count 5 Cols.Fixed 0 2. 双 击 窗 体 的 标 题 区 域 来 打 开 代 码 窗 口 在 文 件 的 顶 端 添 加 如 下 声 明 代 Visual Basic Imports C1.Win.C1FlexGrid 产 品 网 站 : 咨 询 热 线 : of 269

135 C# using C1.Win.C1FlexGrid; 的 代 码 这 使 得 C1FlexGrid 中 定 义 的 对 象 在 整 个 项 目 都 可 见, 并 节 省 了 很 多 需 要 敲 3. 可 以 通 过 列 任 务 菜 单 C1FlexGrid 列 编 辑 器 或 者 代 码 中 来 设 计 这 些 列 在 设 计 器 中 : 选 中 表 格 中 的 第 一 列 这 将 会 打 开 这 一 列 的 列 任 务 菜 单 在 列 标 题 和 数 据 字 段 框 中, 输 入 Product 设 置 列 标 题 和 数 据 字 段, 其 余 列 如 下 : Column 1 Column Caption Region Data Field Column 2 Column Caption Data Field Column 3 Column Caption Data Field Region Salesperson Salesperson Sales Sales Column 4 Column Caption Data Field Bonus Bonus 另 外, 还 可 以 通 过 C1FlexGrid 列 编 辑 器 来 设 置 这 些 列 : 通 过 在 C1FlexGrid 列 任 务 菜 单 中 点 击 设 计 器 打 开 C1FlexGrid 列 编 辑 器 关 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 更 多 细 节 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 在 右 侧 的 窗 格 中 选 中 Column 0 在 左 侧 窗 格 中, 设 置 Name 和 Caption 属 性 为 Product 设 置 Name 和 Caption 属 性, 其 余 列 如 下 : Column 1 Name Caption Column 2 Region Region 产 品 网 站 : 咨 询 热 线 : of 269

136 Name Caption Column 3 Name Caption Column 4 Name Caption 完 成 后 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : Salesperson Salesperson Sales Sales Bonus Bonus 在 Form_Load 事 件 中 添 加 如 下 代 码 : Visual Basic ' 创 建 列. Dim cols As String = "Product Region Salesperson Sales Bonus" Dim colnames As String() = cols.split(" ") Dim i% For i = 0 To C1FlexGrid1.Cols.Count - 1 C1FlexGrid1(0, i) = colnames(i) C1FlexGrid1.Cols(i).Name = colnames(i) Next C# // 创 建 列. string cols = "Product Region Salesperson Sales Bonus"; string[] colnames = cols.split(new char[] ' ' ); for (int i = 0; i <= this.c1flexgrid1.cols.count - 1; i++) c1flexgrid1[0, i] = colnames[i]; c1flexgrid1.cols[i].name = colnames[i]; 产 品 网 站 : 咨 询 热 线 : of 269

137 运 行 程 序 并 遵 守 以 下 规 定 : 就 是 这 样! 按 下 F5 运 行 该 项 目, 这 样 你 就 可 以 开 始 向 控 件 中 输 入 一 些 数 据 按 F2 或 者 空 格 键 来 编 辑 现 有 条 目, 或 者 只 是 在 现 有 的 条 目 上 键 入 新 数 据 步 骤 2/6: 设 置 列 的 类 型 和 格 式 当 显 示 数 字 或 者 日 期 值 时, 您 通 常 会 希 望 采 用 一 致 的 格 式 来 显 示 这 些 值 C1FlexGrid 控 件 允 许 你 为 每 一 列 定 制 数 据 类 型 和 格 式 这 些 属 性 在 设 计 器 或 者 代 码 中 都 可 以 设 置 在 设 计 器 中 1. 在 表 格 中 选 中 Sales 列 这 将 会 打 开 Sales 列 的 列 任 务 菜 单 2. 设 置 Data Type ( 数 据 类 型 ) 为 Decimal 3. 在 Format String( 格 式 字 符 串 ) 框 中 点 击 省 略 号 按 钮 打 开 对 话 框 4. 在 格 式 类 型 中 选 择 Currency( 货 币 ) 5. 点 击 OK 关 闭 格 式 字 符 串 对 话 框 6. 在 表 格 中 选 中 Bonus 列 这 将 会 打 开 Bonus 列 的 列 任 务 菜 单 7. 设 置 数 据 类 型 为 Boolean 另 外, 还 可 以 通 过 C1FlexGrid 的 列 编 辑 器 来 设 置 数 据 类 型 和 格 式 属 性 : 1. 通 过 C1FlexGrid 任 务 菜 单 选 择 设 计 器 来 打 开 C1FlexGrid 列 编 辑 器 对 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 更 多 细 节, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 ( 第 143 页 ) 章 节 2. 在 右 边 的 窗 格 中 选 择 Sales 列 3. 设 置 DataType 属 性 为 Decimal 4. 点 击 Format 属 性 旁 边 的 省 略 号 按 钮 这 将 会 打 开 Format String ( 格 式 产 品 网 站 : 咨 询 热 线 : of 269

138 化 字 符 串 ) 对 话 框 5. 在 格 式 化 类 型 中 选 择 货 币 6. 点 击 OK 来 关 闭 Format String 对 话 框 7. 在 右 边 的 窗 格 中 选 择 Bonus 列 8. 设 置 DataType 属 性 为 Boolean 9. 点 击 OK 来 关 闭 编 辑 器 窗 口 代 码 中 要 指 定 列 的 数 据 类 型 和 格 式, 先 添 加 步 骤 1/6: 为 这 个 编 辑 教 程 创 建 一 个 C1FlexGrid 控 件 ( 第 108 页 ) 的 代 码 后 再 添 加 下 面 的 代 码 : Visual Basic ' 设 置 列 的 数 据 类 型 和 格 式 Dim c As Column = C1FlexGrid1.Cols("Sales") c.datatype = GetType(Decimal) ' 货 币 类 型. c.format = "c2" c = C1FlexGrid1.Cols("Bonus") c.datatype = GetType(Boolean) c.imagealign = ImageAlignEnum.CenterCenter 值 C# 输 入 运 行 程 序, 并 遵 守 以 下 规 定 : Sales 列 新 的 代 码 格 式, 用 来 存 储 和 显 示 货 币 值, Bonus 列 用 来 处 理 布 尔 如 果 你 在 Sales 列 输 入 一 些 数 字 和 非 数 字 值, 你 会 发 现 表 格 将 无 法 接 受 这 些 Bonus 列 显 示 成 复 选 框 的 样 子, 可 以 用 鼠 标 键 盘 来 切 换, 这 是 布 尔 值 列 的 默 认 行 为 // 设 置 列 的 数 据 类 型 和 格 式 Column c = c1flexgrid1.cols["sales"]; c.datatype = typeof(decimal); // 货 币 类 型. c.format = "c2"; c = c1flexgrid1.cols["bonus"]; c.datatype = typeof(bool); c.imagealign = ImageAlignEnum.CenterCenter; 产 品 网 站 : 咨 询 热 线 : of 269

139 注 意 格 式 化 属 性, 它 不 以 任 何 方 式 影 响 数 据 本 身 的 值, 只 影 响 如 何 显 示 步 骤 3/6: 纳 入 下 拉 列 表 录 入 数 据 是 一 个 乏 味 和 容 易 出 错 的 过 程 下 拉 列 表 是 个 伟 大 的 发 明, 因 为 它 极 大 的 减 少 了 你 必 须 做 的 输 入 操 作, 同 时 也 就 减 少 了 出 错 的 机 会, 这 样 就 提 高 了 数 据 的 一 致 性 让 我 们 假 设 我 们 的 教 程 项 目 只 涉 及 三 种 产 品 的 销 售 (Applets Wahoos 和 Gadgets) 在 四 个 区 域 ( 东 南 西 北 ), 并 且 这 有 三 名 全 职 销 售 人 员 ( 玛 丽 莎 拉 和 宝 拉 ) 要 在 C1FlexGrid 控 件 中 将 这 个 列 表 变 为 下 拉 列 表, 所 有 你 必 须 做 的 就 是 分 别 建 立 包 含 了 每 个 项 目 的 字 符 串 ( 使 用 字 符 分 割 ), 并 将 它 们 分 配 到 每 个 列 对 应 的 ComboList 属 性 中 去 这 个 属 性 可 以 在 代 码 或 者 设 计 器 中 设 置 在 设 计 器 中 : 1. 选 中 Product 列 这 将 会 打 开 Product 列 事 件 菜 单 对 话 框 2. 在 Combo List 框 中 点 击 省 略 号 按 钮 来 打 开 Combo List 窗 口 3. 如 下 所 示, 输 入 Applets Wahoos 和 Gadgets 产 品 网 站 : 咨 询 热 线 : of 269

140 4. 点 击 OK 来 关 闭 Combo List 对 话 框 5. 选 中 Region 列 6. 在 Combo List 框 中 点 击 省 略 号 按 钮 7. 输 入 North South East 和 West 如 下 图 所 示 : 8. 点 击 OK 9. 选 中 Salesperson 列 10. 在 Combo List 框 中 点 击 省 略 号 按 钮 11. 输 入 Mary Paula 和 Sarah 如 下 图 所 示 : 产 品 网 站 : 咨 询 热 线 : of 269

141 12. 选 择 Dropdown Combo( 下 拉 组 合 框 ) 选 项 13. 点 击 OK 另 外,ComboList 属 性 同 样 可 以 在 C1FlexGrid 列 编 辑 器 中 设 置 : 1. 通 过 在 C1FlexGrid 任 务 菜 单 中 选 择 设 计 器 打 开 C1FlexGrid 列 编 辑 器 想 要 知 道 对 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 更 多 细 节, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 ( 第 143 页 ) 章 节 2. 在 右 边 的 窗 格 中 选 择 Product 列 3. 在 左 边 的 窗 格 中, 设 置 ComboList 属 性 为 Applets Wahoos Gadgets 4. 在 右 边 的 窗 格 中 选 择 Region column 5. 在 左 边 的 窗 格 中, 设 置 ComboList 属 性 为 North South East West 6. 在 右 边 的 窗 格 中 选 择 Salesperson 7. 在 左 边 的 窗 格 中, 设 置 ComboList 属 性 为 Mary Paula Sarah 8. 点 击 OK 来 关 闭 编 辑 器. 在 代 码 中 : 要 添 加 下 拉 列 表 项 目, 先 添 加 步 骤 2/6: 设 置 列 的 类 型 和 格 式 ( 第 111 页 ) 的 代 码 后 再 添 加 下 面 的 代 码 : Visual Basic ' 设 置 下 拉 列 表 C1FlexGrid1.Cols("Product").ComboList = "Applets Wahoos Gadgets" C1FlexGrid1.Cols("Region").ComboList = "North South East West" C1FlexGrid1.Cols("Salesperson").ComboList = " Mary Paula Sarah" C# 产 品 网 站 : 咨 询 热 线 : of 269

142 ' 设 置 下 拉 列 表 c1flexgrid1.cols["product"].combolist = "Applets Wahoos Gadgets"; c1flexgrid1.cols["region"].combolist = "North South East West"; c1flexgrid1.cols["salesperson"].combolist = " Mary Paula Sarah"; 运 行 程 序, 并 遵 守 以 下 规 定 : 请 注 意 最 后 一 个 下 拉 列 表 是 一 个 入 力 框 ( 文 本 入 力 光 标 ) 这 允 许 用 户 输 入 不 在 列 表 中 的 其 他 名 字 换 句 话 说, 这 些 值 将 在 下 拉 列 表 中 可 以 编 辑, 而 不 是 一 个 简 单 的 下 拉 列 表 按 F5 再 次 运 行 该 项 目, 然 后 移 动 光 标 当 您 将 光 标 移 动 到 有 下 拉 列 表 的 列 上 时, 下 拉 列 表 的 按 钮 才 为 可 见, 你 可 以 点 击 它 来 显 示 列 表, 或 者 只 需 要 简 单 输 入 某 个 条 目 的 第 一 个 字 母, 使 这 个 条 目 在 下 拉 列 表 中 变 为 高 亮 步 骤 4/6: 添 加 数 据 验 证 如 果 你 为 表 格 中 的 列 指 定 了 数 据 类 型, 表 格 就 会 确 保 只 有 这 个 类 型 的 数 据 能 够 在 这 一 列 保 存 这 有 助 于 防 止 错 误 发 生, 但 是 你 会 经 常 需 要 更 加 严 格 的 验 证, 以 确 保 输 入 的 数 据 是 正 确 的 对 于 这 一 点, 你 应 该 使 用 ValidateEdit 事 件 例 如, 想 象 一 下, 反 托 拉 斯 法 规 组 织 我 们 在 北 方 地 区 销 售 我 们 的 小 程 序 为 了 防 止 数 据 输 入 错 误 而 带 来 昂 贵 的 诉 讼, 我 们 希 望 防 止 用 户 在 这 个 下 拉 列 表 中 输 入 这 个 值 以 下 事 件 用 来 检 查 在 数 据 输 入 后 编 辑 框 中 的 数 据 是 否 合 法, 添 加 下 面 的 代 码 到 窗 体 中 : Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

143 Private Sub C1FlexGrid1_ValidateEdit(ByVal sender As Object, ByVal e As ValidateEditEventArgs) Handles C1FlexGrid1.ValidateEdit Dim rgn As String = String.Empty Dim prd As String = String.Empty ' 收 集 我 们 需 要 的 数 据 Select Case e.col prd = C1FlexGrid1.Editor.Text rgn = C1FlexGrid1(e.Row, "Region") Case 1 prd = C1FlexGrid1(e.Row, "Product") rgn = C1FlexGrid1.Editor.Text End Select ' 我 们 可 以 在 北 部 区 域 卖 小 程 序 If prd = "Applets" And rgn = "North" Then MsgBox("Warning: Regulation #12333AS/SDA-23 forbids " & _ "the sale of " & prd & " in region " & rgn & ". " & _ "Please verify input.") e.cancel = True End If End Sub C# 产 品 网 站 : 咨 询 热 线 : of 269

144 private void c1flexgrid1_validateedit( object sender, ValidateEditEventArgs e) string rgn = string.empty; string prd = string.empty; // 收 集 我 们 需 要 的 数 据. switch (e.col) case 0: prd = c1flexgrid1.editor.text; rgn = (string)c1flexgrid1[e.row, "Region"]; break; case 1: prd = (string)c1flexgrid1[e.row, "Product"]; rgn = c1flexgrid1.editor.text; break; // 我 们 可 以 在 北 部 区 域 卖 小 程 序 if ( prd == "Applets" && rgn == "North" ) MessageBox.Show("Warning: Regulation #12333AS/SDA-23 forbids " + "the sale of " + prd + " in region " + rgn + ". " + "Please verify input."); e.cancel = true; 产 品 网 站 : 咨 询 热 线 : of 269

145 运 行 程 序, 并 遵 守 以 下 规 定 : 这 个 模 块 开 始 是 收 集 需 要 验 证 的 输 入 请 注 意, 被 检 查 的 值 要 恢 复 的 话 请 使 用 Editor.Text 属 性 这 是 必 要 的, 因 为 这 次 编 辑 并 没 有 应 用 到 控 件 中 去 如 果 检 查 失 败 了, 这 个 模 块 将 会 显 示 一 个 警 告 然 后 将 Cancel 参 数 设 置 为 True, 这 样 可 以 取 消 编 辑 并 将 单 元 格 重 新 置 为 编 辑 模 式, 使 用 户 可 以 再 次 尝 试 按 F5 再 次 运 行 该 项 目, 然 后 再 尝 试 输 入 一 些 错 误 的 值 你 会 看 到 该 控 件 将 会 拒 绝 它 们 步 骤 5/6: 添 加 剪 贴 板 的 支 持 Windows 剪 贴 板 是 一 个 在 应 用 程 序 之 间 传 输 信 息 的 非 常 有 用 的 设 备 在 FlexGrid for WinForms 项 目 中 添 加 剪 贴 板 支 持 是 相 当 容 易 的 只 需 要 在 代 码 或 者 设 计 器 中 简 单 的 设 置 AutoClipboard 属 性 为 True, 然 后 表 格 就 会 自 动 的 处 理 所 有 发 送 到 剪 贴 板 的 标 准 键 盘 命 令 : 如 CTRL+X 或 者 SHIFT+DELETE 剪 切,CTRL+C 或 者 CTRL+INSERT 拷 贝,CTRL+V 或 者 SHIFT+INSERT 粘 贴 在 设 计 器 中 : 在 属 性 窗 口 中 定 位 到 AutoClipboard 属 性 并 将 它 设 置 为 True 在 代 码 中 : 在 添 加 完 步 骤 3/6: 纳 入 下 拉 列 表 ( 第 112 页 ) 之 后, 添 加 如 下 代 码 : Visual Basic C1FlexGrid1.AutoClipboard = True C# c1flexgrid1.autoclipboard = true; 另 一 个 伟 大 的 Windows 功 能, 并 与 剪 贴 板 密 切 相 关, 这 就 是 OLE 拖 放 操 作 C1FlexGrid 有 两 个 属 性, DragMode 和 DropMode 这 两 个 属 性 实 现 了 这 个 功 能 无 论 是 在 代 码 中 还 是 在 设 计 器 中, 只 需 要 将 这 个 两 个 属 性 设 置 为 自 动, 你 就 能 够 将 表 格 中 选 中 的 项 目 拖 出 程 序 并 放 置 到 其 他 应 用 程 序 中, 如 Microsoft Excel, 或 者 从 Excel 中 选 择 一 个 范 围 拖 放 到 C1FlexGrid 控 件 中 产 品 网 站 : 咨 询 热 线 : of 269

146 在 设 计 器 中 : 定 位 到 DragMode 和 DropMode 属 性 并 将 它 们 都 设 置 为 Automatic 在 代 码 中 : 在 设 置 AutoClipboard 属 性 后 添 加 如 下 代 码 : Visual Basic C1FlexGrid1.DragMode = DragModeEnum.Automatic C1FlexGrid1.DropMode = DropModeEnum.Automatic C# c1flexgrid1.dragmode = DragModeEnum.Automatic; c1flexgrid1.dropmode = DropModeEnum.Automatic; 运 行 程 序, 并 遵 守 以 下 规 定 : 按 F5 再 次 运 行 该 项 目, 然 后 试 着 拷 贝 和 粘 贴 一 些 数 据 注 意, 你 可 以 粘 贴 一 些 非 法 的 数 据, 因 为 我 们 的 粘 贴 操 作 不 触 发 任 何 的 数 据 验 证 事 件 这 是 留 给 读 者 的 练 习 步 骤 6/6: 包 含 一 个 自 定 义 编 辑 器 C1FlexGrid 拥 有 强 大 的 内 置 输 入 编 辑 器 : 输 入 文 字 文 字 掩 码 列 表 选 择 复 选 框 等 等 但 是 在 某 些 情 况 下, 你 可 能 想 使 用 一 个 自 定 义 编 辑 器 来 代 替, 也 许 是 C1Input 库 中 带 的 输 入 控 件 或 者 你 自 己 写 的 输 入 控 件 从 版 本 2.5 开 始,FlexGrid 允 许 你 轻 松 加 愉 快 的 插 入 自 定 义 编 辑 器 要 在 教 程 工 程 的 Sales 列 附 加 一 个 自 定 义 编 辑 器, 从 往 窗 体 上 添 加 一 个 NumericUpDown 控 件 开 始 在 属 性 窗 口 中, 为 NumericUpDown 控 件 设 置 如 下 属 性 : 属 性 设 置 BorderStyle None DecimalPlaces 2 Maximum ThousandsSeparator True Visible False 在 C1FlexGrid 任 务 菜 单 中 选 择 设 计 器 来 打 开 表 格 的 列 编 辑 器 产 品 网 站 : 咨 询 热 线 : of 269

147 选 中 Sales 列 ( 或 代 表 Sales 列 的 第 3 列 ), 之 后 设 置 编 辑 器 属 性 为 NumericUpDown 运 行 程 序, 并 遵 守 以 下 规 定 : 现 在 运 行 该 项 目, 并 尝 试 在 Sales 列 中 编 辑 一 些 值 请 注 意, 表 格 现 在 使 用 NumericUpDown 控 件, 而 不 是 内 置 的 编 辑 器 这 个 控 件 已 经 进 行 了 适 当 的 位 置 调 整 初 始 化 和 管 理 当 你 将 光 标 的 焦 点 移 动 到 不 同 的 单 元 格 中 时, 这 个 值 将 会 保 存 到 表 格 中 但 是 这 个 自 定 义 编 辑 器 的 行 为 与 内 置 编 辑 器 并 不 完 全 一 样 例 如 : 1. 当 你 开 始 编 辑 并 键 入 一 个 数 字, 旧 的 值 不 会 被 清 除 2. 编 辑 器 的 大 小 是 不 完 全 正 确 的 ( 他 看 起 来 有 点 太 小 ) 3. 当 你 使 用 回 车 键 完 成 编 辑 时 会 有 一 声 提 示 音 出 现 你 可 以 使 用 几 个 方 法 来 克 服 这 些 问 题 一 种 方 法 是 使 用 编 辑 器 的 事 件, 但 是 这 将 使 其 难 以 在 其 他 项 目 中 重 用 这 个 控 件 另 一 个 方 法 是 创 建 一 个 派 生 类 并 实 现 IC1EmbeddedEditor 接 口 的 一 些 方 法, 类 似 下 面 的 这 些 代 码 : 产 品 网 站 : 咨 询 热 线 : of 269

148 Visual Basic Public Class MyUpDown Inherits NumericUpDown ' 设 置 初 始 值 Public Sub C1EditorInitialize(ByVal value As Object, ByVal editorattributes As IDictionary) ' 为 初 始 值 赋 值 value = Convert.ChangeType(value, GetType(Decimal)) ' 选 择 进 入 点 MyBase.Select(0, Int32.MaxValue) End Sub ' 设 置 字 体 高 度 以 便 控 件 来 控 制 整 体 高 度 Public Sub C1EditorUpdateBounds(ByVal rc As Rectangle) MyBase.FontHeight = rc.height Bounds = rc End Sub ' 当 用 户 按 下 回 车 键, 禁 止 发 出 蜂 鸣 声 Protected Overrides Function ProcessDialogKey(ByVal keydata As Keys) As Boolean If (keydata = Keys.Enter) Then Parent.Focus() If (Parent.Focused) Then SendKeys.Send("Down") Return True End If Return MyBase.ProcessDialogKey(keyData) End Function 产 品 网 站 : 咨 询 热 线 : of 269

149 产 品 网 站 : 咨 询 热 线 : of 269

150 C# internal class MyUpDown : NumericUpDown // 设 置 初 始 值 public void C1EditorInitialize(object value, System.Collections.IDictionary editorattributes) // 为 初 始 值 赋 值 Value = (decimal)convert.changetype(value, typeof(decimal)); // 选 择 进 入 点 Select(0, int.maxvalue); // 设 置 字 体 高 度 以 便 控 件 来 控 制 整 体 高 度 public void C1EditorUpdateBounds(Rectangle rc) base.fontheight = rc.height; Bounds = rc; // 当 用 户 按 下 回 车 键, 禁 止 发 出 蜂 鸣 声 override protected bool ProcessDialogKey(Keys keydata) if (keydata == Keys.Enter) Parent.Focus(); if (Parent.Focused) SendKeys.Send("Down"); return true; return base.processdialogkey(keydata); 产 品 网 站 : 咨 询 热 线 : of 269

151 上 面 的 代 码 实 现 了 三 个 方 法 : C1EditorInitialize 被 调 用 来 初 始 化 编 辑 器 它 设 置 了 初 始 值 然 后 选 中 整 个 条 目 这 个 将 解 决 刚 才 提 到 的 第 一 个 问 题 因 为 整 个 项 目 被 选 中, 现 在 输 入 一 个 我 们 想 要 的 字 符 将 会 取 代 目 前 的 内 容 C1EditorUpdateBounds 被 调 用 来 定 位 正 在 编 辑 的 单 元 格 NumericUpDown 控 件 的 高 度 被 设 为 以 字 体 大 小 为 基 础 自 动 增 长 ( 这 就 是 为 什 么 它 相 对 单 元 格 看 起 来 太 短 ) 代 码 设 置 了 编 辑 器 的 FontHeight 属 性, 所 以 它 将 被 固 定 在 单 元 格 中 ProcessDialogKey 方 法 被 重 写 了, 用 来 阻 止 当 用 户 按 下 回 车 键 发 出 的 提 示 音 6.2 大 纲 教 程 本 教 程 演 示 如 何 使 用 C1FlexGrid 作 为 一 个 大 纲 视 图 来 显 示 结 构 ( 或 层 次 ) 数 据 当 作 为 一 个 大 纲,C1FlexGrid 控 件 的 行 为 就 像 一 个 树 形 控 件, 显 示 一 些 可 以 折 叠 展 开 的 节 点, 以 展 示 包 含 下 级 数 据 的 分 支 本 教 程 可 以 让 你 加 载 一 个 XML 文 档 到 表 格 中, 它 将 显 示 为 一 颗 树 最 终 的 应 用 程 序 看 起 来 的 效 果 如 下 : 步 骤 1/5: 创 建 控 件 新 建 一 个 项 目 并 添 加 两 个 控 件 : 在 窗 体 的 顶 部 附 近 添 加 一 个 命 令 按 钮 产 品 网 站 : 咨 询 热 线 : of 269

152 在 按 钮 下 面 的 区 域 添 加 一 个 C1FlexGrid 控 件 如 果 你 没 有 在 工 具 箱 中 找 到 C1FlexGrid 控 件, 那 么 请 在 工 具 箱 中 右 键 单 击 然 后 选 择 选 择 项 然 后 在.Net 组 件 列 表 中 查 找 C1FlexGrid 控 件 并 确 保 勾 选 上 如 果 你 在 控 件 列 表 中 无 法 找 到 控 件, 你 也 许 需 要 重 新 安 装 控 件 包 1. 在 属 性 窗 口 中 设 置 如 下 属 性 : 命 令 按 钮 属 性 设 置 Dock Top Text "Open XML File " C1FlexGrid 属 性 设 置 Dock Fill 2. 双 击 窗 体 的 标 题 区 域 来 打 开 代 码 窗 口 在 文 件 的 最 上 方 添 加 如 下 代 码 段 : Visual Basic Imports C1.Win.C1FlexGrid C# using C1.Win.C1FlexGrid; 的 代 码 这 使 得 C1FlexGrid 中 定 义 的 对 象 在 整 个 项 目 都 可 见, 并 节 省 了 很 多 需 要 敲 3. 可 以 在 设 计 器 中 使 用 属 性 窗 口 和 编 辑 器 来 设 置 表 格, 或 者 在 代 码 中 输 入 ( 或 复 制 ) 以 下 代 码 : 在 设 计 器 中 : 在 属 性 窗 口 中 为 C1FlexGrid 控 件 设 置 以 下 属 性 : 属 性 设 置 Cols.Count 2 Cols.Fixed 0 ExtendLastCol True Rows.Count 1 Tree.Column 0 Tree.Style SimpleLeaf 产 品 网 站 : 咨 询 热 线 : of 269

153 为 表 格 设 置 样 式 : 在 C1FlexGrid 任 务 菜 单 中 选 择 样 式 打 开 C1FlexGrid 样 式 编 辑 器 想 要 知 道 对 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 更 多 细 节, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 ( 第 143 页 ) 章 节 在 内 置 样 式 中 选 择 Normal 设 置 Border.Style 为 None, 设 置 TextAlign 属 性 为 LeftCenter, 设 置 WordWrap 属 性 为 False 点 击 添 加 按 钮 将 CustomStyle1 重 命 名 为 Data 设 置 BackColor 属 性 为 Control 点 击 OK 来 关 闭 编 辑 器 设 置 表 格 中 的 列 : 在 表 格 中 选 中 Column 0 这 将 打 开 第 0 列 的 列 任 务 菜 单 将 Column Caption 设 置 为 Element 取 消 勾 选 Allow Editing 复 选 框 选 择 Column 1. 将 Column Caption 设 置 为 Text 另 外, 这 些 列 也 可 以 通 过 C1FlexGrid 列 编 辑 器 来 设 置 : 通 过 在 C1FlexGrid 任 务 菜 单 中 选 择 设 计 器 来 打 开 C1FlexGrid 列 编 辑 器 想 要 知 道 对 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 细 节, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 在 右 侧 窗 格 中 选 择 Column 0 在 左 侧 窗 格 中, 将 AllowEditing 属 性 设 置 为 False, 设 置 Caption 属 性 为 Element 在 右 侧 窗 格 中 选 择 Column 1 在 左 侧 窗 格 中, 将 Caption 属 性 设 置 为 Text 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

154 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 初 始 化 表 格 C1FlexGrid1.Rows.Count = 1 C1FlexGrid1.Cols.Count = 2 C1FlexGrid1.Cols.Fixed = 0 C1FlexGrid1.ExtendLastCol = True C1FlexGrid1(0, 0) = "Element" C1FlexGrid1(0, 1) = "Text" ' 初 始 化 大 纲 的 树 结 构 C1FlexGrid1.Tree.Column = 0 C1FlexGrid1.Tree.Style = TreeStyleFlags.SimpleLeaf C1FlexGrid1.Cols(0).AllowEditing = False ' 初 始 化 样 式 C1FlexGrid1.Styles.Normal.Border.Style = BorderStyleEnum.None C1FlexGrid1.Styles.Normal.TextAlign = TextAlignEnum.LeftCenter C1FlexGrid1.Styles.Normal.WordWrap = False Dim cs As CellStyle = C1FlexGrid1.Styles.Add("Data") cs.backcolor = SystemColors.Control End Sub 产 品 网 站 : 咨 询 热 线 : of 269

155 C# private void Form1_Load( System.object sender, System.EventArgs e) // 初 始 化 表 格 c1flexgrid1.rows.count = 1; c1flexgrid1.cols.count = 2; c1flexgrid1.cols.fixed = 0; c1flexgrid1.extendlastcol = true; c1flexgrid1[0, 0] = "Element"; c1flexgrid1[0, 1] = "Text"; // 初 始 化 大 纲 的 树 结 构 c1flexgrid1.tree.column = 0; c1flexgrid1.tree.style = TreeStyleFlags.SimpleLeaf; c1flexgrid1.cols[0].allowediting = false; // 初 始 化 样 式 c1flexgrid1.styles.normal.border.style = BorderStyleEnum.None; c1flexgrid1.styles.normal.textalign = TextAlignEnum.LeftCenter; c1flexgrid1.styles.normal.wordwrap = false; CellStyle cs = c1flexgrid1.styles.add("data"); cs.backcolor = SystemColors.Control; 运 行 程 序, 并 遵 守 以 下 规 定 : 代 码 从 一 开 始 就 设 置 表 格 的 布 局 和 标 题 的 文 本 内 容 产 品 网 站 : 咨 询 热 线 : of 269

156 接 下 来, 初 始 化 大 纲 树 属 性 并 将 第 一 列 的 AllowEditing 属 性 设 为 False 以 防 止 XML 节 点 能 够 被 编 辑 请 注 意, 用 户 仍 可 以 在 包 含 每 个 XML 节 点 数 据 的 下 一 列 进 行 数 据 的 编 辑 现 在 空 间 已 经 设 置 好 了 我 们 可 以 开 始 添 加 一 些 代 码 步 骤 2/5: 读 取 数 据 并 创 建 大 纲 要 读 取 数 据, 并 建 立 大 纲, 向 Button1_Click 事 件 中 添 加 一 些 代 码 和 GetXMLData 事 物 1. 双 击 命 令 按 钮, 将 下 面 的 代 码 添 加 到 Button1_Click 事 件 中 去 : Visual Basic Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' 取 得 文 件 名 称 Dim fo As OpenFileDialog = New OpenFileDialog() fo.defaultext = "xml" fo.filter = "XML Files (*.xml) *.xml" If fo.showdialog() <> Windows.Forms.DialogResult.OK Then Exit Sub ' 读 取 XML 文 件 Dim xdoc As System.Xml.XmlDocument = New System.Xml.XmlDocument() xdoc.load(fo.filename) ' 停 止 重 绘, 以 提 高 速 度 C1FlexGrid1.Redraw = False ' 填 充 表 格 C1FlexGrid1.Rows.Count = 1 GetXMLData(xdoc.ChildNodes(1), 0) ' 自 动 调 整 树 的 大 小 C1FlexGrid1.AutoSizeCol(0) ' 显 示 层 C1FlexGrid1.Tree.Show(2) ' 开 始 重 绘 C1FlexGrid1.Redraw = True End Sub 产 品 网 站 : 咨 询 热 线 : of 269

157 C# private void button1_click(system.object sender, System.EventArgs e) // 取 得 文 件 名 称 OpenFileDialog fo = new OpenFileDialog(); fo.defaultext = "xml"; fo.filter = "XML Files (*.xml) *.xml"; if ( fo.showdialog()!= DialogResult.OK ) return; // 读 取 XML 文 件 System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument(); xdoc.load(fo.filename); // 停 止 重 绘, 以 提 高 速 度 c1flexgrid1.redraw = false; // 填 充 表 格 c1flexgrid1.rows.count = 1; GetXMLData(xdoc.ChildNodes[1], 0); // 自 动 调 整 树 的 大 小 c1flexgrid1.autosizecol(0); // 显 示 层 c1flexgrid1.tree.show(2); // 开 始 重 绘 c1flexgrid1.redraw = true; 请 遵 守 以 下 规 定 : 这 个 流 程 一 开 始 是 显 示 一 个 OpenFileDialog 用 来 让 用 户 选 择 一 个 XML 文 件 加 载 到 表 格 中 当 文 件 被 选 中, 程 序 就 开 始 加 载 文 件 到 XmlDocument 对 象, 并 将 文 件 中 的 内 容 解 析 到 内 存 中 去 这 个 流 程 之 后 开 始 设 置 表 格 的 重 绘 属 性 为 False 来 控 制 表 格 暂 停 重 绘 这 种 技 显 著 的 提 高 了 程 序 的 性 能, 你 可 以 在 向 C1FlexGrid 表 格 中 添 加 大 量 数 据 的 时 候 使 用 这 个 方 法 接 下 来, 这 个 流 程 清 除 了 为 1 的 任 何 数 据, 并 调 用 GetXMLData 方 法 来 填 充 数 据 到 XmlDocument 这 个 GetXMLData 方 法 是 这 个 指 南 中 列 出 的 条 目 中, 最 重 要 的 一 环 在 表 格 已 被 填 充 后, 例 程 使 用 AutoSizeCol 方 法 来 根 据 第 一 列 的 内 容 来 调 整 列 的 宽 度, 之 后 Show 方 法 用 来 将 需 要 显 示 的 层 级 扩 展 到 0 1 和 2 之 后 例 产 品 网 站 : 咨 询 热 线 : of 269

158 程 将 Redraw 属 性 设 置 回 True 以 便 grid 开 始 重 绘 2. 这 个 GetXMLData 例 程 是 本 教 程 中 最 有 趣 的 一 个 它 贯 穿 整 个 XMLDocument 对 象, 并 建 立 大 纲 的 树 形 结 构 将 下 面 的 代 码 添 加 到 窗 体 中 去 : Visual Basic Private Sub GetXMLData(ByVal node As System.Xml.XmlNode, ByVal level As Integer) ' 跳 过 注 释 节 点 If node.nodetype = System.Xml.XmlNodeType.Comment Then Exit Sub End If ' 为 这 一 个 节 点 添 加 一 个 新 行 Dim row As Integer = C1FlexGrid1.Rows.Count C1FlexGrid1.Rows.Add() ' 为 这 个 新 行 添 加 数 据 C1FlexGrid1(row, 0) = node.name If node.childnodes.count = 1 Then C1FlexGrid1(row, 1) = node.innertext C1FlexGrid1.SetCellStyle(row, 1, C1FlexGrid1.Styles("Data")) End If ' 如 果 这 个 节 点 有 "Name" 子 节 点 的 话, 将 它 保 存 起 来 作 为 一 个 ToolTip 提 示 使 用 If node.childnodes.count > 0 Then Dim ndname As System.Xml.XmlNode = node.selectsinglenode("name") If Not (ndname Is Nothing) Then C1FlexGrid1.Rows(row).UserData = ndname.innertext End If End If ' 如 果 此 节 点 有 子 节 点, 将 它 们 都 取 出 来 If node.childnodes.count > 1 Then ' 将 当 前 行 作 为 节 点 C1FlexGrid1.Rows(row).IsNode = True C1FlexGrid1.Rows(row).Node.Level = level ' 使 用 递 归 来 取 得 子 节 点 Dim child As System.Xml.XmlNode For Each child In node.childnodes GetXMLData(child, level + 1) Next End If End Sub 产 品 网 站 : 咨 询 热 线 : of 269

159 C# private void GetXMLData(System.Xml.XmlNode node, int level) // 跳 过 注 释 节 点 if ( node.nodetype == System.Xml.XmlNodeType.Comment ) return; // 为 这 一 个 节 点 添 加 一 个 新 行 int row = c1flexgrid1.rows.count; c1flexgrid1.rows.add(); // 为 这 个 新 行 添 加 数 据 c1flexgrid1[row, 0] = node.name; if ( node.childnodes.count == 1 ) c1flexgrid1[row, 1] = node.innertext; c1flexgrid1.setcellstyle(row, 1, c1flexgrid1.styles["data"]); // 如 果 这 个 节 点 有 "Name" 子 节 点 的 话, 将 它 保 存 起 来 作 为 一 个 ToolTip 提 示 使 用 if (node.childnodes.count > 0) System.Xml.XmlNode ndname = node.selectsinglenode("name"); if (ndname!= null) c1flexgrid1.rows[row].userdata = ndname.innertext; // 如 果 此 节 点 有 子 节 点, 将 它 们 都 取 出 来 if ( node.childnodes.count > 1 ) // 将 当 前 行 作 为 节 点 c1flexgrid1.rows[row].isnode = true; c1flexgrid1.rows[row].node.level = level; // 使 用 递 归 来 取 得 子 节 点 foreach (System.Xml.XmlNode child in node.childnodes) GetXMLData(child, level + 1); 产 品 网 站 : 咨 询 热 线 : of 269

160 请 遵 守 以 下 规 定 : 程 序 一 开 始 跳 过 了 XML 注 释 节 点, 然 后 使 用 Rows.Add 来 向 表 格 中 添 加 一 个 新 行 接 下 来, 程 序 开 始 设 置 节 点 的 名 称 并 检 查 该 节 点 是 否 拥 有 孩 子 节 点 在 这 种 情 况 下, 该 节 点 被 解 释 为 一 个 数 据 节 点, 之 后 将 该 节 点 的 InnerText 属 性 复 制 到 新 行 的 第 二 列 代 码 还 设 置 了 当 窗 体 被 创 建 时, 包 含 数 据 的 单 元 格 的 样 式 为 自 定 义 的 Data 样 式 接 下 来 的 代 码 块 检 查 看 看 是 否 这 个 节 点 包 含 一 个 名 为 name 的 子 节 点 如 果 有, 那 么 name 节 点 的 内 容 会 被 分 配 到 新 行 的 UserData 属 性 中 去 这 个 值 将 会 被 用 于 实 施 工 具 提 示, 这 样 即 使 节 点 名 称 被 折 叠 起 来 了, 用 户 也 能 够 看 到 最 后, 如 果 该 节 点 有 孩 子 节 点, GetXMLData 程 序 会 调 用 自 身 来 递 归 添 加 他 们 到 表 格 中 运 行 程 序, 并 遵 守 以 下 规 定 : 该 项 目 可 以 加 载 XML 并 显 示 它 们, 用 户 可 以 点 击 折 叠 或 者 展 开 节 点 接 下 来 的 步 骤 中 会 添 加 一 些 改 进, 使 得 应 用 程 序 更 加 容 易 使 用 产 品 网 站 : 咨 询 热 线 : of 269

161 6.2.3 步 骤 3/5: 添 加 自 定 义 的 鼠 标 和 键 盘 处 理 C1FlexGrid 为 你 提 供 了 展 开 和 折 叠 的 操 作, 但 是 你 可 以 扩 展 并 自 己 定 制 这 些 行 为 每 当 一 个 分 支 被 展 开 或 折 叠 起 来, 控 件 会 触 发 BeforeCollapse 和 AfterCollapse 事 件, 所 以 你 可 以 在 这 些 事 件 中 做 一 些 回 应 此 外, 您 可 以 在 代 码 中 使 用 Collapsed 属 性 来 获 取 和 设 置 每 个 分 支 的 折 叠 状 态 在 本 教 程 中, 我 们 将 捕 获 当 用 户 鼠 标 双 击 或 按 下 回 车 键 来 展 开 或 者 折 叠 节 点 时 的 DoubleClick 和 KeyPress 事 件 添 加 下 面 的 DoubleClick 和 KeyPress 事 件 代 码 到 窗 体 上 : Visual Basic C# Private Sub C1FlexGrid1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles C1FlexGrid1.DoubleClick If C1FlexGrid1.MouseCol = 0 Then ToggleNodeState() End If End Sub Private Sub C1FlexGrid1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles C1FlexGrid1.KeyPress If e.keychar = vbcr Then ToggleNodeState() End If End Sub Private Sub ToggleNodeState() ' 如 果 当 前 行 不 是 节 点, 则 什 么 也 不 做 Dim r As Row = C1FlexGrid1.Rows(C1FlexGrid1.Row) If Not r.isnode Then Exit Sub ' 切 换 折 叠 状 态 r.node.collapsed = Not r.node.collapsed End Sub 产 品 网 站 : 咨 询 热 线 : of 269

162 private void c1flexgrid1_doubleclick( object sender, EventArgs e) if ( c1flexgrid1.mousecol == 0 ) ToggleNodeState(); private void c1flexgrid1_keypress( object sender, KeyPressEventArgs e) if ( e.keychar == 13 ) ToggleNodeState(); private void ToggleNodeState() // 如 果 当 前 行 不 是 节 点, 则 什 么 也 不 做 Row r = c1flexgrid1.rows[c1flexgrid1.row]; if (! r.isnode ) return; // 切 换 折 叠 状 态 r.node.collapsed =!r.node.collapsed; 产 品 网 站 : 咨 询 热 线 : of 269

163 运 行 程 序, 并 遵 守 以 下 规 定 : 事 件 处 理 程 序 检 查 用 户 是 否 双 击 第 一 列 或 按 下 回 车 键, 然 后 调 用 ToggleNodeState 程 序 ToggleNodeState 检 查 当 前 行 是 否 是 一 个 节 点 行, 如 果 是, 则 切 换 Collapsed 属 性 值 产 品 网 站 : 咨 询 热 线 : of 269

164 6.2.4 步 骤 4/5: 允 许 / 阻 止 编 辑 回 想 一 下, 我 们 设 置 第 一 列 的 AllowEditing 属 性 为 False 这 可 以 防 止 用 户 编 辑 第 一 列 中 的 任 何 单 元 格 我 们 也 想 防 止 用 户 在 节 点 行 的 第 二 列 输 入 任 何 数 据 要 做 到 这 一 点, 添 加 下 面 的 代 码 来 处 理 BeforeEdit 事 件 : Visual Basic Private Sub C1FlexGrid1_BeforeEdit(ByVal sender As Object, ByVal e As RowColEventArgs) Handles C1FlexGrid1.BeforeEdit ' 如 果 当 前 行 是 一 个 节 点, 则 不 允 许 编 辑 Dim r As Row = C1FlexGrid1.Rows(C1FlexGrid1.Row) If r.isnode Then e.cancel = True End Sub C# private void c1flexgrid1_beforeedit( object sender, RowColEventArgs e) // 如 果 当 前 行 是 一 个 节 点, 则 不 允 许 编 辑 Row r = c1flexgrid1.rows[c1flexgrid1.row]; if (r.isnode ) e.cancel = true; 产 品 网 站 : 咨 询 热 线 : of 269

165 6.2.5 步 骤 5/5: 实 现 工 具 提 示 在 结 束 本 教 程 前, 我 们 将 向 大 纲 中 添 加 工 具 提 示 这 个 工 具 提 示 将 把 每 一 行 中 UserData 属 性 中 保 存 的 上 述 GetXMLData 的 文 本 显 示 出 来 当 用 户 将 鼠 标 移 到 它 的 父 节 点 时, 工 具 提 示 将 显 示 "Name" 节 点 的 内 容 这 是 非 常 有 用 的, 因 为 当 父 节 点 折 叠 起 来 时, Name 节 点 是 不 可 见 的 1. 添 加 一 个 ToolTip 控 件 到 窗 体 上 2. 添 加 下 面 的 代 码 来 处 理 表 格 上 的 MouseMove 事 件 : 产 品 网 站 : 咨 询 热 线 : of 269

166 Visual Basic Private Sub C1FlexGrid1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles C1FlexGrid1.MouseMove ' 为 当 前 单 元 格 检 查 ToolTip Dim tip As String If C1FlexGrid1.MouseCol = 0 And C1FlexGrid1.MouseRow > 0 Then tip = C1FlexGrid1.Rows(C1FlexGrid1.MouseRow).UserData ' 如 果 与 当 前 提 示 不 同, 则 设 置 ToolTip If tip <> ToolTip1.GetToolTip(C1FlexGrid1) Then ToolTip1.SetToolTip(C1FlexGrid1, tip) End If End If End Sub C# private void c1flexgrid1_mousemove( object sender, MouseEventArgs e) // 为 当 前 单 元 格 检 查 ToolTip string tip; if ( c1flexgrid1.mousecol == 0 && c1flexgrid1.mouserow > 0 ) tip = (string)c1flexgrid1.rows[c1flexgrid1.mouserow].userdata; // 如 果 与 当 前 提 示 不 同, 则 设 置 ToolTip if ( tip!= tooltip1.gettooltip(c1flexgrid1) ) tooltip1.settooltip(c1flexgrid1, tip); 产 品 网 站 : 咨 询 热 线 : of 269

167 运 行 程 序, 并 遵 守 以 下 规 定 : 代 码 首 先 使 用 MouseRow 属 性 和 MouseCol 属 性 来 检 查 当 前 鼠 标 下 的 单 元 格 如 果 鼠 标 是 在 包 含 ToolTip 文 本 行 的 第 一 列, 则 检 索 该 行 文 本 否 则, ToolTip 文 本 设 置 为 Nothing 然 后 程 序 会 比 较 当 前 和 新 的 ToolTip 文 本, 如 有 必 要 的 话 则 通 过 调 用 ToolTip 控 件 的 SetToolTip 方 法 来 更 新 文 本 这 样 就 结 束 了 本 教 程 你 可 以 在 很 多 方 面 来 扩 展 这 个 项 目, 包 括 将 改 动 保 存 到 XML 文 档 中, 添 加 删 除 和 移 动 节 点, 为 不 同 类 型 的 数 据 使 用 不 同 的 样 式 等 等 产 品 网 站 : 咨 询 热 线 : of 269

168 6.3 数 据 分 析 教 程 本 教 程 结 合 了 一 些 C1FlexGrid 控 件 非 常 有 用 的 功 能 来 实 现 数 据 表 的 动 态 视 图 这 个 应 用 程 序 是 从 一 个 简 单 的 数 据 绑 定 表 格 开 始, 表 格 中 包 含 了 销 售 数 据 ( 来 自 NorthWind 数 据 库 ), 之 后 添 加 了 一 下 功 能 : 动 态 布 局 ( 列 顺 序 ) 自 动 排 序 合 并 单 元 格 自 动 合 计 大 纲 视 图 最 终 的 程 序 看 起 来 如 下 图 所 示 用 户 可 以 拖 动 前 三 列 来 分 组 数 据, 包 括 salesperson country 和 product name 当 一 列 被 拖 动, 最 终 合 计 会 自 动 的 重 新 计 算 并 重 建 大 纲 树 产 品 网 站 : 咨 询 热 线 : of 269

169 6.3.1 步 骤 1/4: 为 数 据 分 析 教 程 创 建 C1FlexGrid 控 件 创 建 一 个 新 的 项 目, 并 在 工 具 箱 中 点 击 C1FlexGrid 图 标 来 在 窗 体 中 添 加 一 个 C1FlexGrid 控 件, 然 后 点 击 窗 体 并 拖 动 控 件 直 到 控 件 有 一 个 合 适 大 小 如 果 你 没 有 在 工 具 箱 中 找 到 C1FlexGrid 控 件, 那 么 请 在 工 具 箱 中 右 键 单 击 然 后 选 择 选 择 项 然 后 在.Net 组 件 列 表 中 查 找 C1FlexGrid 控 件 并 确 保 勾 选 上 如 果 你 在 控 件 列 表 中 无 法 找 到 控 件, 你 也 许 需 要 重 新 安 装 控 件 包 1. 在 C1FlexGrid 事 件 菜 单 中, 点 击 Dock 来 将 控 件 适 用 到 父 容 器 中 将 表 格 的 Dock 属 性 设 置 为 Fill 以 便 表 格 填 充 整 个 窗 体 码 段 : 2. 双 击 窗 体 标 题 栏 区 域 来 打 开 代 码 窗 口 在 文 件 的 最 上 端, 添 加 下 面 的 代 Visual Basic Imports System.Data.OleDb Imports System.ComponentModel Imports C1.Win.C1FlexGrid C# Using System.Data.OleDb; Using System.ComponentModel; Using C1.Win.C1FlexGrid; 这 使 得 C1FlexGrid 中 定 义 的 对 象 和 OleDb 程 序 集 在 整 个 项 目 都 可 见, 并 节 省 了 很 多 需 要 敲 的 代 码 产 品 网 站 : 咨 询 热 线 : of 269

170 6.3.2 步 骤 2/4: 初 始 化 和 填 充 表 格 要 设 置 表 格 并 用 我 们 想 要 分 析 的 销 售 数 据 来 填 充 表 格, 可 以 在 设 计 器 中 或 在 代 码 中 设 置 布 局 属 性 和 样 式 属 性, 并 使 用 GetDataSource 方 法 来 填 充 表 格 1. 在 设 计 器 中 或 在 代 码 中 设 置 布 局 属 性 和 样 式 属 性 在 设 计 器 中 : 在 属 性 窗 口 中, 设 置 如 下 属 性 : 属 性 AllowEditing AllowSorting AllowMerging ExtendLastCol SelectionMode Tree.Style 设 置 False None Nodes True Cell Simple Tree.Column 1 通 过 在 C1FlexGrid 任 务 菜 单 选 择 样 式 打 开 C1FlexGrid 样 式 编 辑 器 想 要 知 道 对 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 更 多 细 节, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 从 内 置 样 式 列 表 中 选 择 Normal 设 置 Border.Style 属 性 为 None, 设 置 Trimming 属 性 为 EllipsisCharacter 从 内 置 样 式 列 表 中 选 择 Subtotal0 设 置 BackColor 属 性 为 Gold, 设 置 ForeColor 属 性 为 Black 为 Subtotal1 和 Subtotal2 设 置 如 下 属 性 : Subtotal1 BackColor ForeColor Subtotal2 BackColor Khaki Black LightGoldenrodYellow ForeColor Black 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 添 加 下 面 的 代 码 到 Form_Load 事 件 中 来 设 置 表 格 的 布 局 和 样 式 : Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

171 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.Load ' 初 始 化 表 格 的 布 局 / 行 为 C1FlexGrid1.AllowEditing = False C1FlexGrid1.AllowSorting = AllowSortingEnum.None C1FlexGrid1.AllowMerging = AllowMergingEnum.Nodes C1FlexGrid1.SelectionMode = SelectionModeEnum.Cell C1FlexGrid1.ExtendLastCol = True C1FlexGrid1.Cols(0).Width = C1FlexGrid1.Cols.DefaultSize / 4 C1FlexGrid1.Tree.Style = TreeStyleFlags.Simple C1FlexGrid1.Tree.Column = 1 ' 初 始 化 表 格 样 式 C1FlexGrid1.Styles.Normal.Border.Style = BorderStyleEnum.None C1FlexGrid1.Styles.Normal.Trimming = StringTrimming.EllipsisCharacter Dim s As CellStyle = C1FlexGrid1.Styles(CellStyleEnum.GrandTotal) s.backcolor = Color.Black s.forecolor = Color.White s = C1FlexGrid1.Styles(CellStyleEnum.Subtotal0) s.backcolor = Color.Gold s.forecolor = Color.Black s = C1FlexGrid1.Styles(CellStyleEnum.Subtotal1) s.backcolor = Color.Khaki s.forecolor = Color.Black s = C1FlexGrid1.Styles(CellStyleEnum.Subtotal2) s.backcolor = Color.LightGoldenrodYellow s.forecolor = Color.Black End Sub 产 品 网 站 : 咨 询 热 线 : of 269

172 C# private void Form1_Load( System.object sender, EventArgs e) // 初 始 化 表 格 的 布 局 / 行 为 c1flexgrid1.allowediting = false; c1flexgrid1.allowsorting = AllowSortingEnum.None; c1flexgrid1.allowmerging = AllowMergingEnum.Nodes; c1flexgrid1.selectionmode = SelectionModeEnum.Cell; c1flexgrid1.extendlastcol = true; c1flexgrid1.cols[0].width = c1flexgrid1.cols.defaultsize / 4; c1flexgrid1.tree.style = TreeStyleFlags.Simple; c1flexgrid1.tree.column = 1; // 初 始 化 表 格 样 式 c1flexgrid1.styles.normal.border.style = BorderStyleEnum.None; c1flexgrid1.styles.normal.trimming = StringTrimming.EllipsisCharacter; CellStyle s = c1flexgrid1.styles[cellstyleenum.grandtotal]; s.backcolor = Color.Black; s.forecolor = Color.White; s = c1flexgrid1.styles[cellstyleenum.subtotal0]; s.backcolor = Color.Gold; s.forecolor = Color.Black; s = c1flexgrid1.styles[cellstyleenum.subtotal1]; s.backcolor = Color.Khaki; s.forecolor = Color.Black; s = c1flexgrid1.styles[cellstyleenum.subtotal2]; s.backcolor = Color.LightGoldenrodYellow; s.forecolor = Color.Black; 产 品 网 站 : 咨 询 热 线 : of 269

173 常 规 的 一 开 始 设 置 表 格 的 布 局 和 一 些 样 式 2. 通 过 添 加 下 面 的 代 码 到 Form_Load 事 件 中 来 将 C1FlexGrid 绑 定 到 数 据 源 Visual Basic ' 将 C1FlexGrid 绑 定 到 数 据 源 C1FlexGrid1.DataSource = GetDataSource() C# // 将 C1FlexGrid 绑 定 到 数 据 源 c1flexgrid1.datasource = GetDataSource(); 下 面 例 行 列 出 通 过 结 合 GetDataSource 方 法 来 创 建 一 个 数 据 源 3. 将 最 后 三 列 的 AllowDragging 属 性 设 置 为 False, 用 来 锁 定 最 后 三 列 位 置 这 么 做 的 目 的 是 为 了 防 止 用 户 在 这 些 列 中 做 数 据 分 组 ( 这 些 列 中 的 值 是 由 每 一 行 的 不 同 得 来 的 ) 这 个 属 性 可 以 在 在 设 计 器 中 或 者 在 代 码 中 设 置 : 在 设 计 器 中 : 在 表 格 中 选 择 Column 4 这 将 会 打 开 Column 4 的 列 任 务 菜 单 取 消 勾 选 Allow Dragging 复 选 框 为 Column 5 和 Column 6 重 复 做 上 面 两 步 另 外, 这 个 AllowDragging 属 性 同 样 可 以 在 C1FlexGrid 列 编 辑 器 中 设 置 : 在 C1FlexGrid 任 务 菜 单 中 选 择 设 计 器 来 打 开 C1FlexGrid 列 编 辑 器 想 要 知 道 对 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 更 多 细 节, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 在 右 侧 窗 格 中 选 择 Column 4 在 左 侧 窗 格 中, 设 置 AllowDragging 属 性 为 False 将 Column 5 和 Column 6 的 AllowDragging 属 性 设 置 为 False 不 要 关 闭 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 : 产 品 网 站 : 咨 询 热 线 : of 269

174 Visual Basic ' 防 止 用 户 拖 动 最 后 三 列 C1FlexGrid1.Cols(4).AllowDragging = False C1FlexGrid1.Cols(5).AllowDragging = False C1FlexGrid1.Cols(6).AllowDragging = False 式 C# 4. 将 Sales Amount 列 的 Format 属 性 设 置 一 下, 以 便 总 和 可 以 显 示 为 货 币 样 这 个 操 作 可 以 在 设 计 器 中 或 者 在 代 码 中 做 到 : 在 设 计 器 中 : 在 表 格 中 选 择 Column 6 在 Format String 框 中 点 击 省 略 号 按 钮 来 打 开 Format String 窗 口 在 Format type 中 选 择 Currency( 货 币 ) 点 击 OK 来 关 闭 Format String 窗 口 另 外, Format 属 性 也 可 以 通 过 使 用 C1FlexGrid 列 编 辑 器 来 设 置 : 在 C1FlexGrid 列 编 辑 器 中, 在 右 侧 窗 格 中 选 择 Column 6 // 防 止 用 户 拖 动 最 后 三 列 c1flexgrid1.cols[4].allowdragging = false; c1flexgrid1.cols[5].allowdragging = false; c1flexgrid1.cols[6].allowdragging = false; 在 左 侧 窗 格 中, 点 击 Format 属 性 旁 边 的 省 略 号 按 钮 来 打 开 Format String 对 话 框 在 Format type 中 选 择 Currency( 货 币 ) 点 击 OK 来 关 闭 Format String 窗 口 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : Visual Basic ' 在 Sales Amount 列 显 示 货 币 值 C1FlexGrid1.Cols(6).Format = "c" C# // 在 Sales Amount 列 显 示 货 币 值 c1flexgrid1.cols[6].format = "c"; 5. GetDataSource 方 法 创 建 表 格 中 显 示 的 数 据 表 该 例 程 是 非 常 基 本 的, 除 了 检 索 数 据 的 SQL 语 句 大 多 数 人 不 手 动 编 写 SQL 语 句, 一 般 使 用 虚 拟 设 计 产 品 网 站 : 咨 询 热 线 : of 269

175 器 如 Visual Studio 或 者 Microsoft Access 来 做 将 下 面 的 代 码 添 加 到 窗 体 中 请 注 意, 您 可 能 必 须 稍 微 更 改 一 下 连 接 字 符 串, 因 为 它 引 用 了 NorthWind 数 据 库, 该 数 据 库 文 件 可 能 是 在 您 系 统 中 不 同 的 文 件 夹 中 : Visual Basic Private Function GetDataSource() As DataTable ' 创 建 连 接 字 符 串 Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Program Files\ComponentOne Studio.NET 2.0\Common\Nwind.mdb" ' 创 建 SQL 语 句 Dim rs As String = _ "SELECT Employees.LastName,Orders.ShipCountry," & _ "Categories.CategoryName,Products.ProductName,Orders.OrderDate," & _ "[Quantity]*[Products].[UnitPrice] AS [Sale Amount] " & _ "FROM (Categories INNER JOIN Products " & _ "ON Categories.CategoryID = Products.CategoryID) " & _ "INNER JOIN ((Employees INNER JOIN Orders " & _ "ON Employees.EmployeeID = Orders.EmployeeID) " & _ "INNER JOIN [Order Details] " & _ "ON Orders.OrderID = [Order Details].OrderID) " & _ "ON Products.ProductID = [Order Details].ProductID " & _ "ORDER BY Employees.LastName,Orders.ShipCountry," & _ "Categories.CategoryName;" ' 检 索 数 据 并 放 到 Dataset 中 Dim da As OleDbDataAdapter = New OleDbDataAdapter(rs, conn) Dim ds As DataSet = New DataSet() da.fill(ds) ' 返 回 数 据 表 GetDataSource = ds.tables(0) End Function 产 品 网 站 : 咨 询 热 线 : of 269

176 C# private DataTable GetDataSource() // 创 建 连 接 字 符 串 string conn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\Program Files\\ComponentOne Studio.NET 2.0\\Common\\Nwind.mdb"; // 创 建 SQL 语 句 string rs = "SELECT Employees.LastName,Orders.ShipCountry," + "Categories.CategoryName,Products.ProductName,Orders.OrderDate," + "[Quantity]*[Products].[UnitPrice] AS [Sale Amount] " + "FROM (Categories INNER JOIN Products " + "ON Categories.CategoryID = Products.CategoryID) " + "INNER JOIN ((Employees INNER JOIN Orders " + "ON Employees.EmployeeID = Orders.EmployeeID) " + "INNER JOIN [Order Details] " + "ON Orders.OrderID = [Order Details].OrderID) " + "ON Products.ProductID = [Order Details].ProductID " + "ORDER BY Employees.LastName,Orders.ShipCountry," + "Categories.CategoryName;"; // 检 索 数 据 并 放 到 Dataset 中 OleDbDataAdapter da = new OleDbDataAdapter(rs, conn); DataSet ds = new DataSet(); da.fill(ds); // 返 回 数 据 表 return ds.tables[0]; 产 品 网 站 : 咨 询 热 线 : of 269

177 运 行 程 序, 并 遵 守 以 下 规 定 : 你 会 看 到 一 个 普 通 的 有 前 瞻 性 的 表 格, 它 可 以 让 你 移 动 列, 并 浏 览 数 据 但 是, 这 些 数 据 没 有 一 个 明 确 的 结 构, 这 个 表 包 含 了 几 千 条 记 录, 所 以 想 要 知 道 得 到 的 数 据 意 味 着 什 么 是 相 当 困 难 的 产 品 网 站 : 咨 询 热 线 : of 269

178 6.3.3 步 骤 3/4: 允 许 自 动 排 序 在 整 理 数 据 的 第 一 步 是 排 序 此 外, 我 们 想, 当 用 户 重 新 安 排 这 些 列 时, 让 这 些 数 据 能 够 自 动 排 序 在 用 户 重 新 安 排 这 些 列 之 后,C1FlexGrid 控 件 触 发 AfterDragColumn 事 件 我 们 将 添 加 一 个 事 件 处 理 程 序, 以 基 础 数 据 表 中 的 数 据 进 行 排 序 ( 如 果 表 格 处 在 非 绑 定 模 式, 我 们 可 以 使 用 Sort 方 法 来 做 到 这 一 点 ) 向 窗 体 中 添 加 下 面 的 代 码, 用 来 在 用 户 拖 动 列 的 时 候 排 序 数 据 记 录 和 重 建 合 计 : Visual Basic Private Sub C1FlexGrid1_AfterDragColumn(ByVal sender As Object, ByVal e As DragRowColEventArgs) Handles C1FlexGrid1.AfterDragColumn ' 当 用 户 拖 动 列 的 时 候 排 序 数 据 ' 这 将 导 致 数 据 刷 新, 移 除 所 有 合 计 和 触 发 AfterDataRefresh 事 件, 并 重 建 合 计 Dim sort As String = C1FlexGrid1.Cols(1).Name & ", " & _ C1FlexGrid1.Cols(2).Name & ", " & _ C1FlexGrid1.Cols(3).Name Dim dt As DataTable = C1FlexGrid1.DataSource dt.defaultview.sort = sort End Sub C# private void c1flexgrid1_afterdragcolumn( object sender, DragRowColEventArgs e) // 当 用 户 拖 动 列 的 时 候 排 序 数 据 // 这 将 导 致 数 据 刷 新, 移 除 所 有 合 计 和 触 发 AfterDataRefresh 事 件, 并 重 建 合 计 string sort = c1flexgrid1.cols[1].name + ", " + c1flexgrid1.cols[2].name + ", " + c1flexgrid1.cols[3].name; DataTable dt = (DataTable)c1FlexGrid1.DataSource; dt.defaultview.sort = sort; 产 品 网 站 : 咨 询 热 线 : of 269

179 运 行 程 序, 并 遵 守 以 下 规 定 : 运 行 该 项 目, 并 尝 试 通 过 拖 动 前 三 列 的 标 题 来 重 新 对 它 们 排 序 每 当 你 移 动 一 列, 数 据 将 自 动 进 行 排 序, 这 将 使 得 它 更 加 容 易 理 解 在 下 一 个 步 骤 中, 我 们 将 添 加 合 计 和 一 个 大 纲 树 产 品 网 站 : 咨 询 热 线 : of 269

180 6.3.4 步 骤 4/4: 添 加 合 计 和 大 纲 树 当 表 格 在 绑 定 模 式 下 使 用 时, 任 何 数 据 源 的 变 化 都 会 导 致 表 格 触 发 AfterDataRefresh 事 件 这 个 事 件 是 向 表 格 中 插 入 分 类 汇 总 和 创 建 大 纲 树 的 理 想 代 码 场 所 添 加 下 面 的 AfterDataRefresh 事 件 代 码 处 理 到 窗 体 中 : Visual Basic Private Sub C1FlexGrid1_AfterDataRefresh(ByVal sender As Object, ByVal e As ListChangedEventArgs) Handles C1FlexGrid1.AfterDataRefresh ' Sale Amount 的 总 和 Dim totalon As Integer = C1FlexGrid1.Cols("Sale Amount").SafeIndex Dim caption As String = "Total for 0" ' 计 算 三 层 的 总 和 C1FlexGrid1.Subtotal(AggregateEnum.Sum, 0, 1, totalon, caption) C1FlexGrid1.Subtotal(AggregateEnum.Sum, 1, 2, totalon, caption) C1FlexGrid1.Subtotal(AggregateEnum.Sum, 2, 3, totalon, caption) ' 将 大 纲 树 第 二 级 折 叠 起 来 C1FlexGrid1.Tree.Show(2) ' 表 格 自 动 调 整 大 侠 以 适 应 大 纲 树 C1FlexGrid1.AutoSizeCols(1, 1, 1000, 3, 30, AutoSizeFlags.IgnoreHidden) End Sub C# private void c1flexgrid1_afterdatarefresh( object sender, ListChangedEventArgs e) // Sale Amount 的 总 和 int totalon = c1flexgrid1.cols["sale Amount"].SafeIndex; string caption = "Total for 0"; // 计 算 三 层 的 总 和 c1flexgrid1.subtotal(aggregateenum.sum, 0, 1, totalon, caption); c1flexgrid1.subtotal(aggregateenum.sum, 1, 2, totalon, caption); c1flexgrid1.subtotal(aggregateenum.sum, 2, 3, totalon, caption); // 将 大 纲 树 第 二 级 折 叠 起 来 c1flexgrid1.tree.show(2); // 表 格 自 动 调 整 大 侠 以 适 应 大 纲 树 c1flexgrid1.autosizecols(1, 1, 1000, 3, 30, AutoSizeFlags.IgnoreHidden); 产 品 网 站 : 咨 询 热 线 : of 269

181 运 行 程 序, 并 遵 守 以 下 规 定 : 代 码 首 先 获 得 Sale Amount 列 的 索 引, 本 教 程 中, 这 个 索 引 始 终 是 相 同 的 (Column 6) 按 照 索 引 通 常 比 硬 编 码 要 好, 但 是, 因 为 如 果 有 人 在 SQL 语 句 中 添 加 了 多 个 字 段, 该 索 引 将 会 发 生 改 变 代 码 调 用 了 C1FlexGrid. 的 Subtotal 方 法 来 对 数 据 进 行 分 组 并 为 合 计 添 加 新 行 这 个 新 行 将 会 自 动 配 置 成 大 纲 树 的 节 点 ( 它 们 的 IsNode 被 设 置 为 True), 以 便 合 计 和 折 叠 起 来 试 着 拖 动 一 些 列, 你 可 以 清 楚 的 看 到 country product category 或 者 salesperson 的 合 计 当 然 你 如 果 想 看 到 更 多 细 节 的 话, 也 可 以 展 开 树 的 节 点 注 意, 表 格 是 可 以 编 辑 的, 改 变 Sale Amount 列 的 值 将 会 再 次 触 发 AfterDataRefresh 事 件, 并 且 合 计 也 会 自 动 的 更 新 这 样 就 结 束 了 本 教 程 产 品 网 站 : 咨 询 热 线 : of 269

182 7. FlexGrid For WinForms 中 基 于 任 务 的 帮 助 假 定 您 熟 悉 Visual Studio.NET 下 基 于 任 务 的 帮 助 编 程, 并 知 道 如 何 使 用 一 般 的 绑 定 与 非 绑 定 控 件 如 果 你 对 于 ComponentOne FlexGrid for WinForms 控 件 产 品 来 说 是 一 个 新 手 的 话, 请 先 查 看 FlexGrid for WinForms 教 程 章 节 每 个 主 题 中, 通 过 使 用 ComponentOne FlexGrid for WinForms 控 件, 来 为 具 体 任 务 提 供 了 一 个 解 决 方 案 按 照 帮 助 中 所 述 的 步 骤 实 现 之 后, 您 将 能 够 创 建 项 目 来 展 示 各 种 C1FlexGrid 功 能 每 个 基 于 任 务 的 帮 助 主 题 还 假 定 您 已 经 知 道 如 何 创 建 一 个 新 的.NET 工 程 7.1 访 问 C1FlexGrid 编 辑 器 C1FlexGrid 编 辑 器 可 以 通 过 C1FlexGrid 任 务 菜 单 上 下 文 菜 单 或 者 属 性 窗 口 来 访 问 有 两 个 C1FlexGrid 编 辑 器, 一 个 是 C1FlexGrid 列 编 辑 器, 另 一 个 是 C1FlexGrid 样 式 编 辑 器, 其 中 样 式 编 辑 器 可 以 允 许 你 在 设 计 时 控 制 C1FlexGrid 的 布 局 和 外 观 如 果 要 对 列 进 行 重 新 排 序 调 整 列 宽 设 置 列 属 性 插 入 或 删 除 一 列, 请 使 用 C1FlexGrid 列 编 辑 器 要 更 改 现 有 的 样 式 或 者 添 加 自 定 义 样 式, 以 便 将 它 们 指 定 到 单 元 格 行 列 上, 请 使 用 C1FlexGrid 样 式 编 辑 器 访 问 C1FlexGrid 列 编 辑 器 要 访 问 C1FlexGrid 列 编 辑 器, 请 使 用 C1FlexGrid 任 务 菜 单 上 下 文 菜 单 或 者 属 性 窗 口 更 多 使 用 C1FlexGrid 列 编 辑 编 辑 列 的 信 息, 请 查 看 C1FlexGrid 列 编 辑 器 章 节 产 品 网 站 : 咨 询 热 线 : of 269

183 C1FlexGrid 任 务 菜 单 单 击 C1FlexGrid 右 上 角 的 智 能 标 记 ( ) 来 打 开 C1FlexGrid 任 务 菜 单, 之 后 选 择 设 计 器 上 下 文 菜 单 属 性 窗 口 在 窗 体 上 右 键 单 击 并 在 上 下 文 菜 单 中 选 择 设 计 器 在 属 性 窗 口 中, 点 击 Cols 属 性 旁 边 的 省 略 号 按 钮 访 问 C1FlexGrid 样 式 编 辑 器 要 访 问 C1FlexGrid 样 式 编 辑 器, 请 使 用 C1FlexGrid 任 务 菜 单 上 下 文 菜 单 或 者 属 性 窗 口 想 要 了 解 更 多 关 于 使 用 C1FlexGrid 样 式 编 辑 器 来 定 制 单 元 格 外 观 样 式 的 信 息, 请 查 看 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 27 页 ) C1FlexGrid 任 务 菜 单 单 击 C1FlexGrid 右 上 角 的 智 能 标 记 ( ) 来 打 开 C1FlexGrid 任 务 菜 单, 之 后 选 择 样 式 上 下 文 菜 单 属 性 窗 口 在 窗 体 上 右 键 单 击 并 在 上 下 文 菜 单 中 选 择 样 式 在 属 性 窗 口 中, 点 击 Styles 属 性 旁 边 的 省 略 号 按 钮 7.2 向 单 元 格 中 添 加 图 片 和 文 本 要 向 单 元 格 中 添 加 图 片 和 文 本, 请 使 用 SetData 和 SetCellImage 方 法 添 加 如 下 代 码 到 Form_Load 事 件 中 去 : 1. 调 整 单 元 格 以 适 应 图 像 的 高 度 和 宽 度 属 性 Visual Basic Me.C1FlexGrid1.Rows(1).Height = 90 Me.C1FlexGrid1.Cols(1).Width = 150 C# this.c1flexgrid1.rows[1].height = 90; this.c1flexgrid1.cols[1].width = 150; Me.C1FlexGrid1.SetCellImage(1, 1, Image.FromFile("c:\c1logo.bmp")) 产 品 网 站 : 咨 询 热 线 : of 269

184 2. 使 用 SetCellImage 方 法 来 添 加 图 片 : Visual Basic Me.C1FlexGrid1.SetCellImage(1, 1, Image.FromFile("c:\c1logo.bmp")) C# this.c1flexgrid1.setcellimage(1, 1, Image.FromFile(@"c:\c1logo.bmp")); 3. 使 用 SetData 方 法 来 添 加 文 本 : Visual Basic Me.C1FlexGrid1.SetData(1, 1, "ComponentOne") C# this.c1flexgrid1.setdata(1, 1, "ComponentOne"); 4. 设 置 图 片 的 对 齐 方 式 为 CenterTop, 设 置 文 本 的 对 齐 方 式 为 CenterBottom: Visual Basic Me.C1FlexGrid1.Styles.Normal.ImageAlign = C1.Win.C1FlexGrid.ImageAlignEnum.CenterTop Me.C1FlexGrid1.Styles.Normal.TextAlign = C1.Win.C1FlexGrid.TextAlignEnum.CenterBottom C# this.c1flexgrid1.styles.normal.imagealign = C1.Win.C1FlexGrid.ImageAlignEnum.CenterTop; this.c1flexgrid1.styles.normal.textalign = C1.Win.C1FlexGrid.TextAlignEnum.CenterBottom; 产 品 网 站 : 咨 询 热 线 : of 269

185 本 主 题 演 示 如 下 : 您 的 表 格 将 如 下 面 所 示, 一 张 图 片 和 文 本 内 容 在 同 一 个 单 元 格 内 注 意 : 要 将 文 本 放 置 到 图 片 的 上 方, 将 文 本 对 齐 方 式 改 为 CenterTop, 图 片 对 齐 方 式 改 为 CenterBottom 7.3 向 固 定 列 中 添 加 行 号 向 固 定 列 中 添 加 行 号, 比 如 Microsoft Excel, 请 使 用 OwnerDrawCell 时 间 来 在 固 定 列 中 画 出 数 字 并 左 对 齐 1. 添 加 下 面 的 代 码 到 Form_Load 事 件 中, 触 发 OwnerDrawCell 事 件 : Visual Basic Me.C1FlexGrid1.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw C# this.c1flexgrid1.drawmode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw; 2. 添 加 OwnerDrawCell 事 件 : Visual Basic Private Sub C1FlexGrid1_OwnerDrawCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles C1FlexGrid1.OwnerDrawCell If e.row >= Me.C1FlexGrid1.Rows.Fixed And e.col = Me.C1FlexGrid1.Cols.Fixed - 1 Then Dim rownumber As Integer = e.row - Me.C1FlexGrid1.Rows.Fixed + 1 e.text = rownumber.tostring() End If End Sub 产 品 网 站 : 咨 询 热 线 : of 269

186 C# private void c1flexgrid1_ownerdrawcell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e) if ((e.row >= this.c1flexgrid1.rows.fixed) & (e.col == (this.c1flexgrid1.cols.fixed - 1))) e.text = ((e.row - this.c1flexgrid1.rows.fixed) + 1).ToString(); 本 主 题 演 示 如 下 : 行 号 出 现 在 第 一 列, 它 是 固 定 的 并 左 对 齐, 就 像 Microsoft Excel 一 样 产 品 网 站 : 咨 询 热 线 : of 269

187 7.4 向 标 题 行 添 加 三 维 文 字 要 向 表 的 标 题 行 添 加 三 维 文 字, 将 文 字 的 TextEffect 属 性 设 置 为 Raised, 意 思 是 文 字 有 阴 影, 向 右 边 偏 移 一 个 像 素 并 位 于 文 字 下 方, 或 者 将 TextEffect 属 性 设 置 为 Inset, 意 思 是 阴 影 向 文 字 左 边 偏 移 一 个 像 素 并 位 于 文 字 上 方 将 TextEffect 属 性 设 置 为 Flat 将 没 有 任 何 效 果 1. 创 建 一 个 新 的 样 式 名 为 3DText 在 设 计 器 中 : 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 细 节, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 点 击 Add 来 创 建 一 个 新 的 样 式 双 击 CustomStyle1, 将 它 改 名 为 3DText, 完 成 后 请 按 回 车 键 不 要 退 出 C1FlexGrid 样 式 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Dim tdt As C1.Win.C1FlexGrid.CellStyle tdt = Me.C1FlexGrid1.Styles.Add("3DText") C# C1.Win.C1FlexGrid.CellStyle tdt = this.c1flexgrid1.styles.add("3dtext"); 2. 设 置 TextEffect 属 性 为 Raised 在 设 计 器 中 : 在 右 侧 窗 格 中 找 到 TextEffect 属 性 并 将 它 设 置 为 Raised 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 : Visual Basic tdt.texteffect = C1.Win.C1FlexGrid.TextEffectEnum.Raised C# tdt.texteffect = C1.Win.C1FlexGrid.TextEffectEnum.Raised; 3. 应 用 该 样 式 到 标 题 行, 将 以 下 代 码 添 加 到 Form_Load 事 件 中 : Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

188 Me.C1FlexGrid1.Rows(0).Style = Me.C1FlexGrid1.Styles("3DText") C# this.c1flexgrid1.rows[0].style = this.c1flexgrid1.styles["3dtext"]; 本 主 题 演 示 如 下 : 表 中 应 该 有 一 个 类 似 下 面 图 片 的 标 题 行, 浮 起 的 文 字 效 果 产 品 网 站 : 咨 询 热 线 : of 269

189 7.4.1 使 用 内 置 的 样 式 向 标 题 行 添 加 三 维 文 字 TextEffect 属 性 可 以 使 用 C1FlexGrid 的 内 置 样 式 添 加 一 个 三 维 文 本 效 果 要 使 用 样 式 添 加 一 个 三 维 文 本 标 题 行, 将 TextEffect 属 性 设 置 为 内 置 的 Raised 样 式, 意 思 是 文 字 有 阴 影, 向 右 边 偏 移 一 个 像 素 并 位 于 文 字 下 方, 或 者 将 TextEffect 属 性 设 置 为 Inset, 意 思 是 阴 影 向 文 字 左 边 偏 移 一 个 像 素 并 位 于 文 字 上 方 将 TextEffect 属 性 设 置 为 Flat 将 没 有 任 何 效 果 这 个 属 性 可 以 在 设 计 器 中 或 在 代 码 中 设 置 : 在 设 计 器 中 : 1. 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 细 节, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 2. 在 内 置 样 式 中 选 择 Fixed 3. 在 右 侧 窗 格 中, 找 到 TextEffect 属 性 并 设 置 为 Raised 4. 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 将 下 面 代 码 添 加 到 Form_Load 事 件 中, 设 置 固 定 列 的 TextEffect 属 性 样 式 Visual Basic Me.C1FlexGrid1.Styles("Fixed").TextEffect = C1.Win.C1FlexGrid.TextEffectEnum.Raised C# this.c1flexgrid1.styles["fixed"].texteffect = C1.Win.C1FlexGrid.TextEffectEnum.Raised; 本 主 题 演 示 如 下 : 通 过 设 置 固 定 列 样 式 的 TextEffect 属 性, 只 有 表 中 固 定 的 单 元 格 会 拥 有 三 维 效 果 TextEffect 属 性 可 以 被 设 为 任 何 内 置 样 式 查 看 CellStyleEnum 枚 举 集 来 了 解 内 置 样 式 列 表 和 描 述 产 品 网 站 : 咨 询 热 线 : of 269

190 产 品 网 站 : 咨 询 热 线 : of 269

191 7.5 添 加 ToolTips 用 来 显 示 UserData 要 添 加 ToolTips 用 来 显 示 UserData, 请 使 用 C1FlexGrid 的 MouseMove 事 件 来 拿 到 UserData 属 性 并 将 它 显 示 在 ToolTip 控 件 中 ToolTips 可 以 被 设 置 到 一 列 一 行 一 个 单 元 格 范 围 单 元 格 样 式 或 单 个 的 单 元 格 列 上 的 UserData ToolTips 要 添 加 ToolTips 用 来 在 一 列 上 显 示 UserData, 请 使 用 C1FlexGrid 的 MouseMove 事 件 来 拿 到 UserData 属 性 并 将 它 显 示 在 ToolTip 控 件 中 1. 在 工 具 箱 中 找 到 ToolTip 控 件, 并 将 它 添 加 到 窗 体 中 2. 在 Form_Load 事 件 中, 将 AtomicMass 列 的 UserData 属 性 设 置 为 : Visual Basic Me.C1FlexGrid1.Cols("AtomicMass").UserData = "in atomic mass units (u)" C# this.c1flexgrid1.cols["atomicmass"].userdata = "in atomic mass units (u)"; 3. 添 加 下 面 的 代 码 到 MouseMove 事 件 中 : Visual Basic Private Sub C1FlexGrid1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1FlexGrid1.MouseMove Dim tip As String tip = C1FlexGrid1.Cols(C1FlexGrid1.MouseCol).UserData ToolTip1.SetToolTip(C1FlexGrid1, tip) End Sub C# private void c1flexgrid1_mousemove(object sender, System.Windows.Forms.MouseEventArgs e) string tip; tip = (string)c1flexgrid1.cols[c1flexgrid1.mousecol].userdata; tooltip1.settooltip(c1flexgrid1, tip); 产 品 网 站 : 咨 询 热 线 : of 269

192 本 主 题 演 示 如 下 : ToolTip 将 会 出 现 在 整 个 AtomicMass 列 中 单 元 格 区 域 中 的 UserData ToolTips 要 添 加 ToolTips 用 来 在 单 元 格 范 围 中 显 示 UserData, 请 使 用 C1FlexGrid 的 MouseMove 来 拿 到 CellRange.UserData 属 性 并 将 它 显 示 在 ToolTip 控 件 中 1. 在 工 具 箱 中 找 到 ToolTip 控 件, 并 将 它 添 加 到 窗 体 中 2. 在 Form_Load 事 件 中, 将 包 含 了 一 组 非 金 属 元 素 的 单 元 格 区 域 的 UserData 属 性 设 置 为 : Visual Basic ' 取 得 非 金 属 元 素 的 单 元 格 区 域 Dim rng As C1.Win.C1FlexGrid.CellRange = Me.C1FlexGrid1.GetCellRange(6, 1, 10, 10) ' 将 背 景 色 改 变 一 下, 这 样 便 于 看 到 设 置 的 单 元 格 区 域 rng.stylenew.backcolor = Color.AliceBlue ' 为 这 一 区 域 设 置 UserData rng.userdata = "Non-Metallic" C# 产 品 网 站 : 咨 询 热 线 : of 269

193 // 取 得 非 金 属 元 素 的 单 元 格 区 域 C1.Win.C1FlexGrid.CellRange rng = this.c1flexgrid1.getcellrange(6, 1, 10, 10); // 将 背 景 色 改 变 一 下, 这 样 便 于 看 到 设 置 的 单 元 格 区 域 rng.stylenew.backcolor = Color.AliceBlue; // 为 这 一 区 域 设 置 UserData rng.userdata = "Non-Metallic"; 产 品 网 站 : 咨 询 热 线 : of 269

194 3. 将 下 面 的 代 码 添 加 到 MouseMove 事 件 中 去 : Visual Basic Private Sub C1FlexGrid1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1FlexGrid1.MouseMove Dim tip As String tip = Me.C1FlexGrid1.GetUserData(C1FlexGrid1.MouseRow, C1FlexGrid1.MouseCol) ToolTip1.SetToolTip(C1FlexGrid1, tip) End Sub C# private void c1flexgrid1_mousemove(object sender, System.Windows.Forms.MouseEventArgs e) string tip; tip = (string)this.c1flexgrid1.getuserdata(c1flexgrid1.mouserow, c1flexgrid1.mousecol); tooltip1.settooltip(c1flexgrid1, tip); 本 主 题 演 示 如 下 : ToolTip 将 会 出 现 在 整 个 单 元 格 区 域 中 单 元 格 样 式 中 的 UserData ToolTips 要 添 加 ToolTips 用 来 在 单 元 格 样 式 中 显 示 UserData, 请 使 用 C1FlexGrid 的 MouseMove 事 件 来 拿 到 CellStyle.UserData 属 性 并 将 它 显 示 在 ToolTip 控 件 中 产 品 网 站 : 咨 询 热 线 : of 269

195 1. 在 工 具 箱 中 找 到 ToolTip 控 件, 并 将 它 添 加 到 窗 体 中 2. 在 Form_Load 事 件 中, 为 列 和 行 分 别 创 建 一 个 自 定 义 的 CellStyle, 然 后 将 这 两 个 样 式 指 定 到 表 格 中 的 一 列 和 一 行 上 想 要 了 解 关 于 如 何 创 建 CellStyles 的 信 息, 请 查 看 为 列 和 行 设 置 背 景 色 Visual Basic ' 为 列 创 建 一 个 CellStyle Dim cc As C1.Win.C1FlexGrid.CellStyle cc = Me.C1FlexGrid1.Styles.Add("ColumnColor") cc.backcolor = Color.Cornsilk ' 将 样 式 名 称 添 加 到 UserData cc.userdata = "ColumnColor Style" ' 为 行 创 建 一 个 CellStyle Dim rs As C1.Win.C1FlexGrid.CellStyle rs = Me.C1FlexGrid1.Styles.Add("RowColor") rs.backcolor = Color.PowderBlue ' 将 样 式 名 称 添 加 到 UserData rs.userdata = "RowColor Style" ' 将 创 建 的 列 样 式 指 定 到 一 列 上 Me.C1FlexGrid1.Cols(2).Style = Me.C1FlexGrid1.Styles("ColumnColor") ' 将 创 建 的 行 样 式 指 定 到 一 行 上 Me.C1FlexGrid1.Rows(8).Style = Me.C1FlexGrid1.Styles("RowColor") C# 产 品 网 站 : 咨 询 热 线 : of 269

196 // 为 列 创 建 一 个 CellStyle C1.Win.C1FlexGrid.CellStyle cc; cc = this.c1flexgrid1.styles.add("columncolor"); cc.backcolor = Color.Cornsilk; // 将 样 式 名 称 添 加 到 UserData cc.userdata = "ColumnColor Style"; // 为 行 创 建 一 个 CellStyle C1.Win.C1FlexGrid.CellStyle rs; rs = this.c1flexgrid1.styles.add("rowcolor"); rs.backcolor = Color.PowderBlue; // 将 样 式 名 称 添 加 到 UserData rs.userdata = "RowColor Style"; // 将 创 建 的 列 样 式 指 定 到 一 列 上 this.c1flexgrid1.cols[2].style = this.c1flexgrid1.styles["columncolor"]; // 将 创 建 的 行 样 式 指 定 到 一 行 上 this.c1flexgrid1.rows[8].style = this.c1flexgrid1.styles["rowcolor"]; 产 品 网 站 : 咨 询 热 线 : of 269

197 3. 将 下 面 的 代 码 添 加 到 MouseMove 事 件 中 : Visual Basic Private Sub C1FlexGrid1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1FlexGrid1.MouseMove Dim tip As String If C1FlexGrid1.MouseCol <> C1FlexGrid1.Cols.Fixed - 1 And C1FlexGrid1.MouseRow <> C1FlexGrid1.Rows.Fixed - 1 Then tip = C1FlexGrid1.Cols(C1FlexGrid1.MouseCol).Style.UserData ToolTip1.SetToolTip(C1FlexGrid1, tip) End If End Sub C# private void c1flexgrid1_mousemove(object sender, System.Windows.Forms.MouseEventArgs e) string tip; if (c1flexgrid1.mousecol!= c1flexgrid1.cols.fixed - 1 & c1flexgrid1.mouserow!= c1flexgrid1.rows.fixed - 1) tip = (string)c1flexgrid1.cols[c1flexgrid1.mousecol].style.userdata; tooltip1.settooltip(c1flexgrid1, tip); 本 主 题 演 示 如 下 : ToolTip 将 会 出 现 在 拥 有 CellStyle 的 范 围 内 产 品 网 站 : 咨 询 热 线 : of 269

198 7.5.4 行 上 的 UserData ToolTips 要 添 加 ToolTips 用 来 在 一 行 上 显 示 UserData, 请 使 用 C1FlexGrid 的 MouseMove 事 件 来 拿 到 UserData 属 性 并 将 它 显 示 在 ToolTip 控 件 中 1. 在 工 具 箱 中 找 到 ToolTip 控 件, 并 将 它 添 加 到 窗 体 中 2. 在 Form_Load 事 件 中, 将 包 含 Oxygen 行 的 UserData 属 性 设 置 为 : Visual Basic Me.C1FlexGrid1.Rows(8).UserData = "Oxygen makes up approximately 1/5 of the earth's atmosphere." C# this.c1flexgrid1.rows[8].userdata = "Oxygen makes up approximately 1/5 of the earth's atmosphere."; 3. 将 下 面 的 代 码 添 加 到 MouseMove 事 件 中 : Visual Basic Private Sub C1FlexGrid1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1FlexGrid1.MouseMove Dim tip As String tip = C1FlexGrid1.Rows(C1FlexGrid1.MouseRow).UserData ToolTip1.SetToolTip(C1FlexGrid1, tip) End Sub C# private void c1flexgrid1_mousemove(object sender, System.Windows.Forms.MouseEventArgs e) string tip; tip = (string)c1flexgrid1.rows[c1flexgrid1.mouserow].userdata; tooltip1.settooltip(c1flexgrid1, tip); 本 主 题 演 示 如 下 : ToolTip 将 会 出 现 在 整 行 产 品 网 站 : 咨 询 热 线 : of 269

199 7.5.5 单 一 单 元 格 上 的 UserData ToolTips 要 添 加 ToolTips 用 来 在 一 个 单 元 格 上 显 示 UserData, 请 使 用 C1FlexGrid 的 MouseMove 事 件 来 拿 到 UserData 并 将 它 显 示 在 ToolTip 控 件 中 1. 在 工 具 箱 中 找 到 ToolTip 控 件, 并 将 它 添 加 到 窗 体 中 2. 将 下 面 的 SetUserData 方 法 添 加 到 Form_Load 事 件 中 : Visual Basic Me.C1FlexGrid1.SetUserData(1, "Element", "Hydrogen is a highly flammable gas.") C# this.c1flexgrid1.setuserdata(1, "Element", "Hydrogen is a highly flammable gas."); 产 品 网 站 : 咨 询 热 线 : of 269

200 现 3. 将 下 面 的 代 码 添 加 到 MouseMove 事 件 中 : Visual Basic C# Private Sub C1FlexGrid1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1FlexGrid1.MouseMove Dim tip As String tip = Me.C1FlexGrid1.GetUserData(C1FlexGrid1.MouseRow, C1FlexGrid1.MouseCol) ToolTip1.SetToolTip(C1FlexGrid1, tip) End Sub private void c1flexgrid1_mousemove(object sender, System.Windows.Forms.MouseEventArgs e) string tip; tip = (string)this.c1flexgrid1.getuserdata(c1flexgrid1.mouserow, c1flexgrid1.mousecol); tooltip1.settooltip(c1flexgrid1, tip); 本 主 题 演 示 如 下 : 当 鼠 标 移 动 到 Element 列 下 的 第 一 行 上 面 时, 关 于 Hydrogen 的 信 息 就 会 出 7.6 为 一 个 单 元 格 区 域 应 用 渐 变 背 景 色 想 要 为 一 个 单 元 格 区 域 添 加 渐 变 背 景 色, 请 使 用 OwnerDrawCell 事 件 来 创 产 品 网 站 : 咨 询 热 线 : of 269

201 建 自 定 义 绘 制 单 元 格 1. 创 建 一 个 LinearGradient 画 刷 并 定 义 一 个 单 元 格 区 域, 将 下 面 的 代 码 添 加 到 窗 体 的 类 中 去 : Visual Basic Dim GradientStyleBrush As System.Drawing.Drawing2D.LinearGradientBrush Dim rng As C1.Win.C1FlexGrid.CellRange C# 2. 通 过 添 加 下 面 的 代 码 到 Form_Load 事 件 中, 可 以 将 C1FlexGrid 的 DrawMode 属 性 设 System.Drawing.Drawing2D.LinearGradientBrush GradientStyleBrush; C1.Win.C1FlexGrid.CellRange rng; 置 为 OwnerDraw: Visual Basic Me.C1FlexGrid1.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw C# this.c1flexgrid1.drawmode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw; 3. 使 用 GetCellRange 方 法 来 设 置 CellRange: Visual Basic rng = Me.C1FlexGrid1.GetCellRange(2, 2, 4, 4) C# rng = this.c1flexgrid1.getcellrange(2, 2, 4, 4); 4. 设 置 LinearGradient 画 刷 的 颜 色 和 渐 变 的 角 度 : Visual Basic GradientStyleBrush = New System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.Navy, Color.Transparent, 270) C# GradientStyleBrush = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, Color.Navy, Color.Transparent, 270); 产 品 网 站 : 咨 询 热 线 : of 269

202 5. 添 加 OwnerDrawCell 事 件 来 在 CellRange 中 画 渐 变 : Visual Basic Private Sub C1FlexGrid1_OwnerDrawCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles C1FlexGrid1.OwnerDrawCell ' 使 用 渐 变 画 刷 来 绘 制 单 元 格 的 背 景 色 If (e.row >= rng.r1) And (e.row <= rng.r2) Then If (e.col >= rng.c1) And (e.col <= rng.c2) Then ' 画 背 景 色 e.graphics.fillrectangle(gradientstylebrush, e.bounds) ' 让 表 格 绘 制 内 容 e.drawcell(c1.win.c1flexgrid.drawcellflags.content) ' 完 成 绘 制 e.handled = True End If End If End Sub C# private void c1flexgrid1_ownerdrawcell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e) // 使 用 渐 变 画 刷 来 绘 制 单 元 格 的 背 景 色 if ((e.row >= rng.r1) & (e.row <= rng.r2)) if ((e.col >= rng.c1) & (e.col <= rng.c2)) // 画 背 景 色 e.graphics.fillrectangle(gradientstylebrush, e.bounds); // 让 表 格 绘 制 内 容 e.drawcell(c1.win.c1flexgrid.drawcellflags.content); // 完 成 绘 制 e.handled = true; 本 主 题 演 示 如 下 : 从 透 明 到 深 蓝 色 的 渐 变 背 景 色 只 出 现 在 指 定 的 单 元 格 区 域 内 产 品 网 站 : 咨 询 热 线 : of 269

203 产 品 网 站 : 咨 询 热 线 : of 269

204 7.7 在 表 格 中 改 变 列 的 顺 序 要 改 变 表 格 中 的 列 顺 序, 可 以 在 表 格 中 拖 动 一 列 到 一 个 新 的 位 置 或 者 使 用 C1FlexGrid 列 编 辑 器, 还 可 以 在 代 码 中 使 用 MoveRange 方 法 : 在 设 计 器 中 : 1. 在 表 格 中, 选 择 一 个 你 想 要 移 动 的 列 在 本 例 中,Element 列 将 会 被 移 动 2. 点 击 并 拖 动 这 一 列 到 左 边 去 一 个 垂 直 的 虚 线 出 现, 这 个 虚 线 说 明 了 这 一 列 可 以 被 放 置 在 哪 里 3. 将 Element 列 拖 到 到 AtomicNumber 列 前 面 另 外, 可 以 使 用 表 格 中 的 C1FlexGrid 列 编 辑 器 将 这 些 列 重 新 排 序 : 1. 打 开 C1FlexGrid 列 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 细 节, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 2. 在 设 计 器 中, 选 择 一 个 你 想 要 移 动 的 列 在 本 例 中, 我 们 来 移 动 Element 这 一 列 3. 点 击 并 将 这 一 列 拖 到 左 边 一 个 垂 直 的 虚 线 出 现, 这 个 虚 线 说 明 了 这 一 列 可 以 被 放 置 在 哪 里 4. 将 Element 列 放 到 AtomicNumber 列 的 前 面 5. 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中, 用 来 将 第 二 列 ( 在 本 例 中 是 Element 列 ) 移 动 到 第 一 列 的 位 置 上 去 : Visual Basic Me.C1FlexGrid1.Cols.MoveRange(2, 1, 1) 产 品 网 站 : 咨 询 热 线 : of 269

205 C# this.c1flexgrid1.cols.moverange(2, 1, 1); 本 主 题 演 示 如 下 : 现 在 Element 这 一 列 出 现 在 AtomicNumber 列 的 前 面 产 品 网 站 : 咨 询 热 线 : of 269

206 7.8 根 据 值 过 滤 想 要 使 用 ValueFilter, 遵 循 以 下 步 骤 : 1. 选 中 表 格 并 点 击 快 速 标 签 来 打 开 C1FlexGrid 任 务 菜 单 2. 勾 选 Enable Column Filtering 复 选 框 3. 点 击 设 计 器 连 接 打 开 C1FlexGrid 列 编 辑 器 4. 点 击 AllowFiltering 属 性 旁 边 的 下 拉 列 表 箭 头 并 选 择 ByValue 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Me.C1FlexGrid1.AllowFiltering = True Me.C1FlexGrid1.Cols(1).AllowFiltering = AllowFiltering.ByValue C# this.c1flexgrid1.allowfiltering = true; this.c1flexgrid1.cols[1].allowfiltering = AllowFiltering.ByValue 本 主 题 演 示 如 下 : 在 本 例 中, 第 二 列 将 会 使 用 值 排 序 : 产 品 网 站 : 咨 询 热 线 : of 269

207 7.9 根 据 条 件 过 滤 想 要 使 用 条 件 过 滤 器, 遵 循 以 下 步 骤 : 1. 选 中 表 格 并 点 击 快 速 标 签 来 打 开 C1FlexGrid 任 务 菜 单 2. 勾 选 Enable Column Filtering 复 选 框 3. 点 击 设 计 器 连 接 打 开 C1FlexGrid 列 编 辑 器 4. 点 击 AllowFiltering 属 性 旁 边 的 下 拉 列 表 箭 头 并 选 择 ByCondition 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Me.C1FlexGrid1.AllowFiltering = True Me.C1FlexGrid1.Cols(1).AllowFiltering = AllowFiltering.ByCondition C# this.c1flexgrid1.allowfiltering = true; this.c1flexgrid1.cols[1].allowfiltering = AllowFiltering.ByCondition 本 主 题 演 示 如 下 : 在 本 例 中, 第 二 列 将 会 按 照 条 件 来 排 序 : 产 品 网 站 : 咨 询 热 线 : of 269

208 7.10 更 改 过 滤 器 语 言 想 要 更 改 在 列 过 滤 器 中 使 用 的 语 言, 你 可 以 使 用 Language 属 性 1. 右 键 点 击 表 格 并 选 择 Properties 来 查 看 Visual Studio 属 性 窗 口 2. 将 AllowFiltering 属 性 设 置 为 True 3. 点 击 Language 属 性 旁 边 的 下 拉 列 表 箭 头 并 选 择 一 个 语 言 4. 运 行 程 序 并 点 击 列 头 上 的 下 拉 列 表 箭 头 来 打 开 列 过 滤 器 这 一 列 的 语 言 过 滤 将 会 与 你 在 Language 属 性 中 指 定 的 相 同 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Me.C1FlexGrid1.AllowFiltering = True Me.C1FlexGrid1.Language = C1.Util.Localization.Language.Danish C# this.c1flexgrid1.allowfiltering = true; this.c1flexgrid1.language = C1.Util.Localization.Language.Danish; 本 主 题 演 示 如 下 : 请 注 意, 列 过 滤 器 的 语 言 匹 配 的 是 你 Language 属 性 中 指 定 的 语 言 7.11 清 除 树 视 图 想 要 在 C1FlexGrid 中 清 除 树 视 图, 将 能 够 编 辑 的 行 数 设 置 为 0 想 要 了 解 更 多 关 于 创 建 数 的 信 息, 请 查 看 FlexGrid for WinForms 教 程 和 概 述 和 汇 总 数 据 产 品 网 站 : 咨 询 热 线 : of 269

209 将 下 面 的 代 码 添 加 到 Button1_Click 事 件 中 这 些 代 码 会 将 可 编 辑 的 行 数 设 置 为 0, 当 点 击 Clear 按 钮 时 树 视 图 将 会 被 清 空 Visual Basic Me.C1FlexGrid1.Rows.Count = Me.C1FlexGrid1.Rows.Fixed C# this.c1flexgrid1.rows.count = this.c1flexgrid1.rows.fixed; 本 主 题 演 示 如 下 : 产 品 网 站 : 咨 询 热 线 : of 269

210 一 旦 你 点 击 了 这 个 按 钮, 树 视 图 就 会 消 失 7.12 清 除 C1FlexGrid 要 清 除 C1FlexGrid, 请 使 用 Clear 方 法 Clear 方 法 将 会 清 除 内 容 样 式 UserData 或 所 有 这 三 者 下 面 的 图 片 展 示 了 在 没 有 清 除 内 容 样 式 UserData 之 前 的 表 格 样 子 清 除 内 容 要 清 除 C1FlexGrid 里 的 内 容, 添 加 下 面 的 Clear 方 法 在 本 例 中, 这 些 代 码 都 将 被 添 加 到 Clear Contents 按 钮 的 Click 事 件 中 去 Visual Basic Me.C1FlexGrid1.Clear(C1.Win.C1FlexGrid.ClearFlags.Content) C# this.c1flexgrid1.clear(c1.win.c1flexgrid.clearflags.content); 本 主 题 演 示 如 下 : 点 击 Clear Content 按 钮 只 会 清 除 内 容, 不 会 清 除 表 格 上 的 样 式 或 者 UserData 产 品 网 站 : 咨 询 热 线 : of 269

211 清 除 样 式 要 清 除 C1FlexGrid 上 的 显 示 样 式 和 格 式, 添 加 下 面 的 Clear 方 法 在 本 例 中, 这 些 代 码 都 将 被 添 加 到 Clear Styles 按 钮 的 Click 事 件 中 去 Visual Basic Me.C1FlexGrid1.Clear(C1.Win.C1FlexGrid.ClearFlags.Style) C# this.c1flexgrid1.clear(c1.win.c1flexgrid.clearflags.style); 本 主 题 演 示 如 下 : 点 击 Clear Styles 按 钮 只 会 清 除 显 示 样 式 和 格 式 化, 不 会 清 除 表 格 上 的 UserData 和 内 容 产 品 网 站 : 咨 询 热 线 : of 269

212 清 除 UserData 要 清 除 C1FlexGrid 的 UserData, 添 加 下 面 的 Clear 方 法 在 本 例 中, 这 些 代 码 都 将 被 添 加 到 Clear UserData 按 钮 的 Click 事 件 中 去 Visual Basic Me.C1FlexGrid1.Clear(C1.Win.C1FlexGrid.ClearFlags.UserData) C# this.c1flexgrid1.clear(c1.win.c1flexgrid.clearflags.userdata); 请 注 意, 当 你 点 击 清 除 UserData 时, 画 面 上 将 不 会 出 现 任 何 变 化, 除 非 UserData 存 储 了 这 个 程 序 很 有 用 的 内 容 清 除 内 容 样 式 和 UserData 想 要 一 次 性 清 除 C1FlexGrid 上 的 内 容 样 式 和 UserData, 添 加 下 面 的 Clear 方 法 在 本 例 中, 这 些 代 码 都 将 被 添 加 到 Clear All 按 钮 的 Click 事 件 中 去 Visual Basic Me.C1FlexGrid1.Clear(C1.Win.C1FlexGrid.ClearFlags.All) C# 本 主 题 演 示 如 下 : 产 品 网 站 : 咨 询 热 线 : of 269

213 this.c1flexgrid1.clear(c1.win.c1flexgrid.clearflags.all); 表 格 点 击 Clear All 将 会 清 除 表 格 上 的 内 容 样 式 和 UserData, 只 留 下 一 个 空 的 7.13 将 列 上 的 字 母 转 换 为 大 写 字 母 要 将 列 的 字 母 从 小 写 转 换 为 大 写, 添 加 下 面 的 SetupEditor 事 件 到 窗 体 上 : Visual Basic Private Sub C1FlexGrid1_SetupEditor(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.SetupEditor If Me.C1FlexGrid1.Cols(e.Col).Name = "UCASECOL" Then Dim tb As TextBox = Me.C1FlexGrid1.Editor tb.charactercasing = CharacterCasing.Upper End If End Sub C# 7.14 使 用 视 觉 样 式 来 自 定 义 外 观 想 要 使 用 视 觉 样 式 自 定 义 C1FlexGrid 的 外 观, 将 VisualStyle 属 性 设 置 为 Custom Office2007Black Office2007Blue Office2007Silver Office2010Blue Office2010Black Office2010Silver 或 者 System 这 个 属 性 可 以 在 设 计 器 中 或 在 代 码 中 设 置 下 面 的 列 表 描 述 了 每 种 视 觉 样 式 : 视 觉 样 式 描 述 产 品 网 站 : 咨 询 热 线 : of 269

214 private void c1flexgrid1_setupeditor(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) if (this.c1flexgrid1.cols[e.col].name == "UCASECOL") TextBox tb = this.c1flexgrid1.editor as TextBox; tb.charactercasing = CharacterCasing.Upper; Custom Office2007Black Office2007Blue Office2007Silver System Office2010Black Office2010Silver Office2010Blue 在 设 计 器 中 : 不 适 用 任 何 视 觉 样 式, 只 使 用 样 式 和 属 性 来 构 造 控 件 不 适 用 任 何 视 觉 样 式, 只 使 用 样 式 和 属 性 来 构 造 控 件 不 适 用 任 何 视 觉 样 式, 只 使 用 样 式 和 属 性 来 构 造 控 件 使 用 基 于 Office 2007 的 银 色 配 色 方 案 来 构 造 控 件 的 外 观 使 用 基 于 当 前 系 统 配 色 方 案 来 构 造 控 件 的 外 观 使 用 基 于 当 前 系 统 的 银 色 配 色 方 案 来 构 造 控 件 的 外 观 使 用 基 于 Office 2010 的 银 色 配 色 方 案 来 构 造 控 件 的 外 观 使 用 基 于 Office 2010 的 蓝 色 配 色 方 案 来 构 造 控 件 的 外 观 在 属 性 窗 口 中 找 到 VisualStyle 属 性, 将 它 设 置 为 Custom Office2007Black Office2007Blue Office2007Silver Office2010Blue Office2010Black Office2010Silver 或 者 System 在 本 例 中,VisualStyle 属 性 将 被 设 为 Office2007Blue 在 代 码 中 : 将 代 码 添 加 到 Form_Load 事 件 中, 将 VisualStyle 属 性 设 置 为 Custom Office2007Black Office2007Blue Office2007Silver Office2010Blue Office2010Black Office2010Silver 或 者 System 下 面 的 代 码 将 VisualStyle 属 性 设 产 品 网 站 : 咨 询 热 线 : of 269

215 置 为 Office2007Blue: Visual Basic Me.C1FlexGrid1.VisualStyle = C1.Win.C1FlexGrid.VisualStyle.Office2007Blue C# this.c1flexgrid1.visualstyle = C1.Win.C1FlexGrid.VisualStyle.Office2007Blue; 自 定 义 视 觉 样 式 没 有 视 觉 样 式 应 用 的 样 子 : Office2007Black 视 觉 样 式 Office 2007 黑 色 方 案 : Office2007Blue 视 觉 样 式 Office 2007 蓝 色 方 案 : Office2007Silver 视 觉 样 式 Office 2007 银 色 方 案 : 产 品 网 站 : 咨 询 热 线 : of 269

216 Office2010Blue 视 觉 样 式 Office 2010 蓝 色 方 案 : Office2010Silver 视 觉 样 式 Office 2010 银 色 方 案 : Office2010Black 视 觉 样 式 Office 2010 黑 色 方 案 : System 视 觉 样 式 当 前 系 统 设 置 : 产 品 网 站 : 咨 询 热 线 : of 269

217 7.15 只 在 单 元 格 中 输 入 数 字 想 要 只 允 许 在 单 元 格 中 输 入 数 字, 请 使 用 KeyPressEdit 事 件 并 当 按 下 无 效 按 键 时, 将 它 的 e.handled 参 数 设 置 为 True 请 使 用 下 面 的 代 码 将 第 四 列 设 置 为 只 能 按 数 字 BACKSPACE DELETE 和 键 : Visual Basic Private Sub C1FlexGrid1_KeyPressEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.KeyPressEditEventArgs) Handles C1FlexGrid1.KeyPressEdit If e.col = 3 Then ' 如 果 输 入 不 在 0-9 PERIOD DELETE 或 BACKSPACE 之 间 If Not (e.keychar = Chr(48) Or e.keychar = Chr(49) Or _ e.keychar = Chr(50) Or e.keychar = Chr(51) Or _ e.keychar = Chr(52) Or e.keychar = Chr(53) Or _ e.keychar = Chr(54) Or e.keychar = Chr(55) Or _ e.keychar = Chr(56) Or e.keychar = Chr(57) Or _ e.keychar = Chr(46) Or e.keychar = Chr(127) Or _ e.keychar = Chr(8)) Then ' 禁 止 输 入 非 法 的 按 键 值 到 控 件 上 e.handled = True End If End If End Sub C# private void c1flexgrid1_keypressedit(object sender, C1.Win.C1FlexGrid.KeyPressEditEventArgs e) if( e.col == 3 ) // 如 果 输 入 不 在 0-9 PERIOD DELETE 或 BACKSPACE 之 间 if(!((e.keychar == 48) (e.keychar == 49) (e.keychar == 50) (e.keychar == 51) (e.keychar == 52) (e.keychar == 53) (e.keychar == 54) (e.keychar == 55) (e.keychar == 56) (e.keychar == 57) (e.keychar == 46) (e.keychar == 127) (e.keychar == 8))) // 禁 止 输 入 非 法 的 按 键 值 到 控 件 上 e.handled = true; 产 品 网 站 : 咨 询 热 线 : of 269

218 7.16 格 式 化 单 元 格 通 过 格 式 化 单 元 格 操 作, 允 许 您 控 制 单 个 单 元 格 或 多 单 元 格 的 数 据 输 入 和 表 现 形 式 下 面 的 话 题 向 你 展 示 了 如 何 设 置 单 元 格 为 只 读, 如 何 将 单 元 格 格 式 化 为 显 示 货 币 值, 如 何 将 单 元 格 格 式 化 为 根 据 内 容 来 显 示 相 应 的 格 式 将 单 元 格 设 置 为 只 读 要 想 将 单 个 或 多 个 单 元 格 设 置 为 只 读, 请 使 用 BeforeEdit 事 件 将 单 个 单 元 格 设 置 为 只 读 你 可 以 将 表 格 中 任 何 一 个 单 元 格 设 置 为 只 读, 以 便 其 中 的 数 据 不 能 被 更 改 例 如, 添 加 下 面 的 代 码, 将 第 一 行 第 一 列 的 单 元 格 设 置 为 只 读 : Visual Basic Private Sub C1FlexGrid1_BeforeEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.BeforeEdit If e.row = 1 And e.col = 1 Then e.cancel = True End If End Sub C# private void c1flexgrid1_beforeedit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) if (e.row == 1 & e.col == 1) e.cancel = true; 将 多 单 元 格 设 置 为 只 读 你 也 许 想 要 将 表 格 中 多 个 单 元 格 一 次 性 设 置 为 只 读 假 设 你 有 一 个 可 以 编 辑 的 表 格, 用 于 输 入 客 户 的 信 息, 如 客 户 ID 地 址 订 单 其 中 订 单 和 地 址 会 改 变, 但 客 户 ID 不 会 下 面 的 代 码 假 定 你 有 一 个 九 行 的 表 格, 你 想 将 第 一 列 ( 客 户 ID 列 ) 的 所 有 行, 设 置 为 只 读 的 请 输 入 以 下 代 码 : 产 品 网 站 : 咨 询 热 线 : of 269

219 Visual Basic Private Sub C1FlexGrid1_BeforeEdit(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.BeforeEdit Dim i As Integer For i = 1 To 9 If e.col = 1 And e.row = i Then e.cancel = True End If Next End Sub C# private void c1flexgrid1_beforeedit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) for (int i = 1; i <= 9; i++) if (e.col == 1 & e.row == i) e.cancel = true; 产 品 网 站 : 咨 询 热 线 : of 269

220 本 主 题 演 示 如 下 : 请 注 意, 在 CustomerID 列 中, 没 有 一 行 是 可 以 编 辑 的 将 单 元 格 格 式 化 为 显 示 十 进 制 内 容 想 要 将 单 元 格 格 式 化 为 只 显 示 十 进 制 数 字, 请 在 设 计 器 中 或 者 在 代 码 中 设 置 Format 属 性 在 本 例 中, 已 经 在 第 一 列 中 输 入 的 数 字 将 被 格 式 化 为 十 进 制 的 金 额 在 设 计 器 中 : 1. 在 表 格 中 选 择 Column 1 这 将 会 打 开 Column 1 的 列 任 务 菜 单 2. 点 击 Format String 旁 边 的 省 略 号 按 钮 来 打 开 Format String 对 话 框 3. 在 Format type 下 面 选 择 Custom 之 后 将 它 设 置 为 Custom format:$#,## 点 击 OK 来 关 闭 Format String 对 话 框 另 外, Format 属 性 也 可 以 使 用 C1FlexGrid 列 编 辑 器 来 设 置 : 1. 打 开 C1FlexGrid 列 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 2. 在 右 侧 窗 格 中 选 择 Column 1 并 在 左 侧 窗 格 中 将 Format 属 性 设 置 为 $#,## 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Me.C1FlexGrid1.Cols(1).Format = "$#,##0.00" C# this.c1flexgrid1.cols[1].format = "$#,##0.00"; 注 意 : 格 式 串 中 的 说 明 符 完 全 遵 守 标 准 的.NET 约 定 使 用 ',' 表 示 千 位 分 隔 产 品 网 站 : 咨 询 热 线 : of 269

221 符, 使 用 '.' 表 示 十 进 制 数 字, 跟 区 域 无 关 本 主 题 演 示 如 下 : 在 本 例 中, 在 第 一 列 中 的 数 字 将 会 转 换 为 美 元 金 额 基 于 内 容 格 式 化 单 元 格 要 有 条 件 的 格 式 化 基 于 内 容 的 单 元 格, 请 创 建 一 个 新 的 样 式 并 使 用 CellChanged 事 件 1. 创 建 一 个 新 的 CellStyle 名 为 LargeValue 并 将 它 的 BackColor 属 性 设 置 为 Gold 在 设 计 器 中 : 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 1. 点 击 Add 创 建 一 个 新 样 式 2. 双 击 CustomStyle1, 将 它 重 命 名 为 LargeValue, 完 成 之 后 请 按 下 ENTER 3. 在 右 侧 窗 格 中 选 择 BackColor 属 性 并 将 它 设 置 为 Gold 4. 找 到 Font 属 性 之 后 点 击 省 略 号 按 钮 来 打 开 Font 对 话 框 5. 将 Font style 设 置 为 Italic 6. 点 击 OK 来 关 闭 Font 对 话 框 7. 点 击 OK 来 关 闭 C1FlexGrid 样 式 编 辑 器 产 品 网 站 : 咨 询 热 线 : of 269

222 在 代 码 中 : 1. 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic C# 2. 在 CellChanged 事 件 中 基 于 单 元 格 内 容 进 行 格 式 化 Visual Basic C# ' 为 大 数 据 创 建 一 个 自 定 义 样 式 Dim cs As C1.Win.C1FlexGrid.CellStyle cs = Me.C1FlexGrid1.Styles.Add("LargeValue") cs.font = New Font(Font, FontStyle.Italic) cs.backcolor = Color.Gold // 为 大 数 据 创 建 一 个 自 定 义 样 式 C1.Win.C1FlexGrid.CellStyle cs; cs = this.c1flexgrid1.styles.add("largevalue"); cs.font = new Font(Font, FontStyle.Italic); cs.backcolor = Color.Gold; ' 根 据 单 元 格 的 内 容 来 格 式 化 Private Sub C1FlexGrid1_CellChanged(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.CellChanged ' 标 记 当 货 币 值 > 50,000 作 为 LargeValues ' 将 其 他 的 样 式 重 置 为 Nothing Dim cs As C1.Win.C1FlexGridCellStyle If Val(Me.C1FlexGrid1(e.Row, e.col)) >= Then cs = Me.C1FlexGrid1.Styles("LargeValue") End If Me.C1FlexGrid1.SetCellStyle(e.Row, e.col, cs) End Sub 产 品 网 站 : 咨 询 热 线 : of 269

223 // 根 据 单 元 格 的 内 容 来 格 式 化 private void c1flexgrid1_cellchanged(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) // 标 记 当 货 币 值 > 50,000 作 为 LargeValues // 其 他 的 样 式 重 置 为 Nothing C1.Win.C1FlexGrid.CellStyle cs; if (Val(this.c1FlexGrid1(e.Row, e.col)) >= 50000) cs = this.c1flexgrid1.styles("largevalue"); this.c1flexgrid1.setcellstyle(e.row, e.col, cs); 产 品 网 站 : 咨 询 热 线 : of 269

224 本 主 题 演 示 如 下 : 在 本 例 中, 单 元 格 中 如 果 包 含 大 于 等 于 50,000 时 将 会 高 亮 斜 体 为 金 色 7.17 格 式 化 边 框 样 式 格 式 化 边 框 样 式 允 许 您 自 定 义 表 格 的 外 观 无 论 是 控 件 还 是 表 格 的 边 框 的 样 式 都 可 以 被 设 置 格 式 化 控 件 的 边 框 样 式 想 要 格 式 化 控 件 的 边 框 样 式, 请 将 ScrollableControl.BorderStyle 属 性 设 置 为 Fixed3D FixedSingle Light3D None 或 者 XpThemes 这 个 属 性 在 设 计 器 中 或 者 在 代 码 中 设 置 下 面 的 列 表 描 述 了 每 一 种 边 框 样 式 : Border 描 述 Fixed3D 一 个 三 维 的 边 框 这 是 默 认 值 FixedSingle 单 线 条 的 边 框 Light3D 一 个 轻 微 凹 陷 的 边 框 None 没 有 边 框 XpThemes 一 个 使 用 XP 样 式 的 边 框 在 设 计 器 中 : 在 属 性 窗 口 中 找 到 BorderStyle 属 性 并 将 它 设 置 为 Fixed3D FixedSingle Light3D None 或 者 XpThemes 在 本 例 中, BorderStyle 属 性 将 被 设 置 为 Fixed3D 在 代 码 中 : 将 代 码 添 加 到 Form_Load 事 件 中, 设 置 BorderStyle 属 性 为 Fixed3D FixedSingle Light3D None 或 者 XpThemes 下 面 的 代 码 将 BorderStyle 属 性 设 置 为 Fixed3D: Visual Basic 产 品 网 站 : 咨 询 热 线 : of 269

225 C# Me.C1FlexGrid1.BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Fixed3D this.c1flexgrid1.borderstyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.Fixed3D; 三 维 边 框 边 框 将 是 3D 立 体 的 单 线 条 边 框 边 框 将 是 单 线 条 的 轻 微 凹 陷 的 边 框 产 品 网 站 : 咨 询 热 线 : of 269

226 边 框 将 是 轻 微 凹 陷 并 且 是 三 维 的 无 边 框 将 没 有 任 何 边 框 XP Theme 边 框 边 框 将 是 XP 样 式 的 产 品 网 站 : 咨 询 热 线 : of 269

227 边 框 描 述 Dotted 虚 线 边 框 Double 双 层 边 框 Fillet 圆 角 边 框 Flat 实 心 平 边 框 Groove 凹 陷 型 边 框 Inset 分 段 边 框 None 没 有 边 框 这 是 默 认 设 置 Raised 突 起 边 框 格 式 化 显 示 表 格 的 边 框 样 式 想 要 格 式 化 表 格 的 边 框 样 式, 请 将 Style 设 置 为 Dotted Double Fillet Flat Groove Inset None 或 者 Raised 这 个 属 性 可 以 使 用 C1FlexGrid 的 内 建 样 式, 它 可 以 在 设 计 器 中 或 者 在 代 码 中 被 设 置 下 面 的 列 表 描 述 了 每 一 种 边 框 样 式 在 设 计 器 中 : 1. 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 2. 在 内 置 样 式 中 选 择 Normal 在 右 边 的 列 中, 找 到 Border 属 性 并 展 开 它 设 置 Style 属 性 为 Dotted Double Fillet Flat Groove Inset None 或 者 Raised 在 本 例 中, Style 属 性 被 设 置 为 Dotted 3. 点 击 OK 来 关 闭 编 辑 器 产 品 网 站 : 咨 询 热 线 : of 269

228 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中, 用 来 将 Style 属 性 指 定 为 Normal 下 面 的 代 码 将 Style 设 置 为 Dotted Visual Basic Me.C1FlexGrid1.Styles("Normal").Border.Style = C1.Win.C1FlexGrid.BorderStyleEnum.Dotted C# this.c1flexgrid1.styles["normal"].border.style = C1.Win.C1FlexGrid.BorderStyleEnum.Dotted; Dotted 边 框 单 元 格 的 边 框 将 会 是 虚 线 Double 边 框 单 元 格 边 框 将 会 是 双 线 产 品 网 站 : 咨 询 热 线 : of 269

229 Fillet 边 框 单 元 格 边 框 是 圆 角 的 Flat 边 框 单 元 格 边 框 是 一 条 平 铺 的 线 产 品 网 站 : 咨 询 热 线 : of 269

230 Groove 边 框 单 元 格 边 框 将 是 凹 陷 的 Inset 边 框 单 元 格 边 框 将 是 嵌 入 式 的 产 品 网 站 : 咨 询 热 线 : of 269

231 无 边 框 将 没 有 边 框 Raised 边 框 单 元 格 边 框 将 是 突 起 的 产 品 网 站 : 咨 询 热 线 : of 269

232 产 品 网 站 : 咨 询 热 线 : of 269

233 7.18 冻 结 行 和 列 想 要 允 许 用 户 通 过 鼠 标 来 冻 结 行 和 列, 设 置 AllowFreezing 属 性 到 Columns 上 将 会 只 冻 结 列, 设 置 到 Rows 上 将 会 只 冻 结 行, 或 者 Both 来 冻 结 两 者 反 过 来, 想 要 去 掉 冻 结, 请 将 AllowFreezing 设 置 为 None, 这 当 然 也 是 默 认 值 这 个 属 性 可 以 在 设 计 器 中 或 者 在 代 码 中 来 设 置 在 设 计 器 中 : 在 属 性 窗 口 中, 找 到 AllowFreezing 属 性 并 将 它 设 置 为 Both 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中, 将 AllowFreezing 设 置 为 Both: Visual Basic Me.C1FlexGrid1.AllowFreezing = C1.Win.C1FlexGrid.AllowFreezingEnum.Both C# this.c1flexgrid1.allowfreezing = C1.Win.C1FlexGrid.AllowFreezingEnum.Both; 本 主 题 演 示 如 下 : 当 光 标 变 为 行 锁 状 态 图 标 或 者 列 锁 状 态 图 标, 点 击 并 拖 动 鼠 标 到 想 要 冻 结 的 列 或 行 上 在 本 例 中,Element 列 将 会 被 冻 结, 它 将 会 一 直 保 持 在 界 面 上, 无 论 是 否 滚 动 到 最 右 边 在 本 例 中, 包 含 了 Hydrogen 的 这 一 行 将 会 被 冻 结, 它 会 一 直 保 持 在 界 面 上, 无 论 是 否 滚 动 到 最 底 产 品 网 站 : 咨 询 热 线 : of 269

234 上 图 注 意 : 将 AllowFreezing 属 性 设 置 为 Both 将 会 允 许 同 时 冻 结 列 和 行, 例 如 产 品 网 站 : 咨 询 热 线 : of 269

235 7.19 读 取 和 保 存 Open XML 文 件 你 可 以 使 用 C1FlexGrid 控 件 来 读 取 和 保 存 Microsoft Excel 2007 Open XML 文 件 Open XML 是 由 微 软 推 出 Office2007 时 带 来 的 一 个 开 放 的, 基 于 标 准 的 格 式 Open XML 文 件 包 含 一 些 使 用 Zip 压 缩 的 XML 文 件 因 为 这 些 文 件 被 压 缩 过, 所 以 Open XML 比 通 常 的 文 件 体 积 要 小 ( 例 如 XLS 文 件 ) 默 认 情 况 下,C1FlexGrid 中 的 Load 和 Save 方 法 会 根 据 文 件 的 扩 展 名 选 择 适 当 的 文 件 格 式, 任 何 的 以 XLSX 或 者 ZIP 的 扩 展 名 将 会 被 对 待 为 Open XML 文 件 LoadGrid 和 SaveGrid 方 法 同 样 拥 有 一 些 文 件 类 型 参 数 的 重 载 方 法 这 将 会 允 许 你 的 控 件 根 据 文 件 格 式 来 判 断 而 不 是 依 靠 扩 展 名 举 个 例 子, 你 的 应 用 程 序 也 许 会 使 用 Open XML 格 式 文 件 来 作 为 数 据 文 件, 但 使 用 的 是 XLSX 以 外 的 其 他 扩 展 名 你 可 以 指 定 文 件 的 类 型 为 Excel 并 使 用 FileFlags 枚 举 选 项 中 的 OpenXml 选 项 想 要 将 表 格 保 存 和 读 取 一 个 OpenXml 文 件, 完 成 下 面 的 步 骤 : 1. 在 包 含 C1FlexGrid 的 窗 体 上 添 加 三 个 按 钮, 并 在 他 们 的 Text 属 性 中 输 入 Save Clear 和 Load 2. 在 设 计 器 中, 双 击 Save(Button_1) 按 钮, 并 将 下 面 的 代 码 添 加 到 Button1_Click 事 件 中 去 : Visual Basic Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.C1FlexGrid1.SaveGrid("C:\test\myfile.xlsx", FileFormatEnum.Excel, FileFlags.OpenXml) End Sub 产 品 网 站 : 咨 询 热 线 : of 269

236 C# 注 意 : 你 必 须 添 加 Imports 或 者 using 代 码 块 到 你 的 窗 体 代 码 的 最 上 方, 使 得 这 段 代 码 能 够 工 作 正 常 如 果 编 写 Visual Basic 请 使 用 Imports C1.Win.C1FlexGrid 如 果 编 写 C# 请 使 用 using C1.Win.C1FlexGrid; private void button1_click(object sender, EventArgs e) this.c1flexgrid1.savegrid(@"c:\test\myfile.xlsx", FileFormatEnum.Excel, FileFlags.OpenXml); 3. 请 将 下 面 的 代 码 添 加 到 Button2_Click 事 件 中 去, 作 为 Clear 按 钮 的 内 容 : Visual Basic Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.C1FlexGrid1.Clear(ClearFlags.All) End Sub C# private void button2_click(object sender, EventArgs e) this.c1flexgrid1.clear(clearflags.all); 4. 将 下 面 的 代 码 输 入 到 Button3_Click 事 件 中 去, 作 为 Load 按 钮 的 行 为 : Visual Basic Private Sub button3_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.C1FlexGrid1.LoadGrid("C:\test\myfile.xlsx", FileFormatEnum.Excel, FileFlags.OpenXml) End Sub C# private void button3_click(object sender, EventArgs e) this.c1flexgrid1.loadgrid(@"c:\test\myfile.xlsx", FileFormatEnum.Excel, FileFlags.OpenXml); 产 品 网 站 : 咨 询 热 线 : of 269

237 运 行 这 个 程 序 : 1. 在 表 格 中 输 入 你 需 要 的 内 容 2. 点 击 Save 按 钮 表 格 将 会 保 存 为 一 个 Open XML 文 件, 后 缀 名 为.xlsx, 文 件 将 会 保 存 到 "C:\test" 3. 目 录 下 如 果 文 件 夹 不 存 在 的 话, 你 必 须 创 建 这 个 文 件 夹 4. 点 击 Clear 按 钮 来 清 空 表 格 5. 点 击 Load 按 钮, 之 前 你 保 存 的 表 格 将 会 被 重 新 读 取 出 来 产 品 网 站 : 咨 询 热 线 : of 269

238 7.20 用 数 据 填 充 一 个 非 绑 定 的 表 格 想 要 用 数 据 填 充 非 绑 定 表 格, 请 使 用 表 格 的 索 引 器 来 填 充 列 行 或 者 一 个 单 元 格 要 填 充 一 个 单 元 格 区 域, 请 使 用 Data 属 性 用 数 据 填 充 一 列 想 要 用 数 据 填 充 一 列, 在 窗 体 加 载 的 时 候, 用 表 格 的 索 引 设 置 一 个 循 环 来 填 充 列 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中, 将 0 填 充 到 第 一 列 的 所 有 行 : Visual Basic Dim r As Integer For r = C1FlexGrid1.Rows.Fixed To C1FlexGrid1.Rows.Count - 1 Me.C1FlexGrid1(r, 1) = 0 Next C# 本 主 题 演 示 如 下 : 用 0 来 填 充 第 一 列 用 数 据 填 充 一 个 单 元 格 区 域 想 要 用 数 据 填 充 一 个 单 元 格 区 域, 在 窗 体 加 载 的 时 候, 为 CellRange 设 置 Data 属 性 添 加 下 面 的 代 码 到 Form_Load 事 件 中, 设 置 Data 属 性 为 0: 1, int r; for (r = c1flexgrid1.rows.fixed; r <= c1flexgrid1.rows.count -1;r++) this.c1flexgrid1[r, 1] = 0; Visual Basic Dim rng As C1.Win.C1FlexGrid.CellRange = Me.C1FlexGrid1.GetCellRange(1, 3, 3) rng.data = 0 C# C1.Win.C1FlexGrid.CellRange rng = this.c1flexgrid1.getcellrange(1,1,3,3); rng.data = 0; 本 主 题 演 示 如 下 : 产 品 网 站 : 咨 询 热 线 : of 269

239 所 有 的 单 元 格 区 域 都 被 0 填 满 了 用 数 据 填 充 一 行 想 要 用 数 据 填 充 一 行, 在 窗 体 加 载 的 时 候, 用 表 格 的 索 引 设 置 一 个 循 环 来 填 充 行 添 加 下 面 的 代 码 到 Form_Load 事 件 中, 将 第 一 行 的 所 有 列 填 充 为 0: Visual Basic Dim r As Integer For r = C1FlexGrid1.Cols.Fixed To C1FlexGrid1.Cols.Count - 1 Me.C1FlexGrid1(1, r) = 0 Next C# 本 主 题 演 示 如 下 : 第 一 行 被 0 填 满 了 用 数 据 填 充 一 个 单 元 格 想 要 用 数 据 填 充 一 个 单 元 格, 在 窗 体 加 载 的 时 候, 用 表 格 的 索 引 来 设 置 数 据 添 加 下 面 的 代 码 到 Form_Load 事 件 中, 设 置 单 元 格 的 文 本 : int r; for (r = c1flexgrid1.cols.fixed; r <= c1flexgrid1.cols.count -1;r++) this.c1flexgrid1[1, r] = 0; Visual Basic Me.C1FlexGrid1(3, 2) = "Cell Text" C# this.c1flexgrid1[3, 2] = "Cell Text"; 本 主 题 演 示 如 下 : 文 本 Cell Text 在 第 四 行 第 三 列 产 品 网 站 : 咨 询 热 线 : of 269

240 7.21 限 制 表 格 的 编 辑 想 要 禁 止 编 辑 整 个 表 格, 特 定 行 或 者 特 定 列, 设 置 AllowEditing 属 性 为 False 相 反 地, 要 允 许 编 辑 的 话, 将 AllowEditing 属 性 设 置 为 True, 这 也 是 默 认 值 在 整 个 表 格 内 禁 止 编 辑 想 要 禁 止 整 个 表 格 内 的 编 辑 操 作, 可 以 把 AllowEditing 属 性 设 置 为 False, 这 个 操 作 在 设 计 器 中 或 者 在 代 码 中 都 可 以 完 成 : 在 设 计 器 中 : 在 C1FlexGrid 任 务 菜 单 中, 取 消 Enable Editing 的 勾 选 框 另 外, 在 属 性 窗 口 中 找 到 AllowEditing 属 性 并 将 它 设 置 为 False 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Me.C1FlexGrid1.AllowEditing = False C# this.c1flexgrid1.allowediting = false; 禁 止 某 一 列 的 编 辑 想 要 禁 止 某 一 列 的 编 辑 操 作, 可 以 设 置 AllowEditing 属 性 为 False, 这 个 操 作 可 以 在 设 计 器 中 或 者 在 代 码 中 完 成 : 在 设 计 器 中 : 1. 在 表 格 中 选 中 你 想 编 辑 的 一 列 这 将 会 打 开 这 一 列 的 列 任 务 菜 单 2. 取 消 Allow Editing 前 的 勾 选 框 另 外, AllowEditing 也 可 以 通 过 C1FlexGrid 列 编 辑 器 来 设 置 : 1. 打 开 C1FlexGrid 列 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 3. 在 右 侧 的 窗 格 中 选 中 你 希 望 编 辑 的 列, 并 在 左 侧 窗 格 中 将 这 一 列 的 AllowEditing 属 性 设 置 为 False 4. 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 产 品 网 站 : 咨 询 热 线 : of 269

241 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 来 限 制 AtomicMass 列 的 编 辑 操 作 : Visual Basic Me.C1FlexGrid1.Cols("AtomicMass").AllowEditing = False ' 与 这 段 代 码 相 同 : Me.C1FlexGrid1.Cols(4).AllowEditing = False C# this.c1flexgrid1.cols["atomicmass"].allowediting = false; // 与 这 段 代 码 相 同 : this.c1flexgrid1.cols[4].allowediting = false; 禁 止 某 一 行 的 编 辑 想 要 禁 止 某 一 列 的 编 辑 操 作, 可 以 设 置 AllowEditing 属 性 为 False 在 本 例 中, 代 码 将 会 限 制 第 六 行 的 编 辑 : Visual Basic Me.C1FlexGrid1.Rows(5).AllowEditing = False C# this.c1flexgrid1.rows[5].allowediting = false; 产 品 网 站 : 咨 询 热 线 : of 269

242 7.22 限 制 一 列 的 排 序 想 要 限 制 一 列 的 排 序, 可 以 在 设 计 器 中 或 者 在 代 码 中 将 AllowSorting 属 性 设 置 为 False: 在 设 计 器 中 : 1. 在 表 格 中 选 择 你 想 要 编 辑 的 一 列 这 将 会 打 开 这 一 列 的 列 任 务 菜 单 2. 取 消 Allow Sorting 前 的 勾 选 框 另 外, AllowSorting 属 性 也 可 以 通 过 C1FlexGrid 列 编 辑 器 来 设 置 : 1. 打 开 C1FlexGrid 列 编 辑 器. 打 开 C1FlexGrid 列 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 2. 在 右 侧 的 窗 格 中 选 中 你 希 望 编 辑 的 列, 并 在 左 侧 窗 格 中 将 这 一 列 的 AllowSorting 属 性 设 置 为 False 3. 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 来 限 制 AtomicNumber 列 的 排 序 操 作 : Visual Basic Me.C1FlexGrid1.Cols("AtomicNumber").AllowSorting = False ' 与 这 段 代 码 相 同 : Me.C1FlexGrid1.Cols(1).AllowEditing = False C# this.c1flexgrid1.cols["atomicnumber"].allowsorting = false; // 与 这 段 代 码 相 同 : this.c1flexgrid1.cols[1].allowediting = false; 产 品 网 站 : 咨 询 热 线 : of 269

243 7.23 缩 放 图 像 当 表 格 中 的 某 一 行 的 大 小 发 生 变 换, 想 要 在 列 中 缩 放 图 像, 将 ImageAlign 属 性 设 置 为 Scale 1. 将 这 一 行 的 高 度 设 置 为 第 一 行 高 度 的 两 倍 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 : Visual Basic Me.C1FlexGrid1.Rows(1).Height = 2 * Me.C1FlexGrid1.Rows.DefaultSize Me.C1FlexGrid1.Rows(2).Height = 2 * Me.C1FlexGrid1.Rows.DefaultSize C# 2. 在 这 一 列 中 缩 放 图 像 在 设 计 器 中 : 打 开 C1FlexGrid 列 编 辑 器. 打 开 C1FlexGrid 列 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 在 右 侧 窗 格 中 选 择 一 个 包 含 有 图 像 的 列, 然 后 在 左 侧 窗 格 中 将 ImageAlign 属 性 设 置 为 Scale this.c1flexgrid1.rows[1].height = 2 * this.c1flexgrid1.rows.defaultsize; this.c1flexgrid1.rows[2].height = 2 * this.c1flexgrid1.rows.defaultsize; 点 击 OK 来 关 闭 编 辑 器 代 码 中 在 : 将 下 面 的 代 码 添 加 到 步 骤 1 之 后 : Visual Basic Me.C1FlexGrid1.Cols(3).ImageAlign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale C# this.c1flexgrid1.cols[3].imagealign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale; 本 主 题 演 示 如 下 : 通 过 使 用 ImageAlign 属 性, 图 像 将 被 缩 放, 以 适 应 单 元 格 内 的 最 大 区 域, 同 时 保 留 图 片 的 原 始 宽 高 比 产 品 网 站 : 咨 询 热 线 : of 269

244 在 整 个 表 格 中 缩 放 图 像 想 要 在 整 个 表 格 中 缩 放 图 像, 不 只 是 一 列 中, 请 将 Normal 样 式 中 的 ImageAlign 属 性 设 置 为 Scale 在 设 计 器 中 : 1. 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 2. 在 内 置 样 式 列 表 中 选 择 Normal 3. 在 右 侧 窗 格 中, 找 到 ImageAlign 属 性 并 将 它 设 置 为 Scale 4. 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Me.C1FlexGrid1.Styles("Normal").ImageAlign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale C# this.c1flexgrid1.styles["normal"].imagealign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale; 产 品 网 站 : 咨 询 热 线 : of 269

245 7.24 搜 寻 列 中 的 条 目 在 用 户 输 入 中 搜 索 需 要 的 条 目, 请 将 AutoSearch 属 性 设 置 为 FromCursor 来 开 始 从 当 前 行 搜 索, 或 者 设 置 为 FromTop 来 开 始 从 第 一 个 滚 动 的 行 搜 索 相 反, 要 想 禁 用 搜 索, 将 AutoSearch 属 性 设 置 为 None, 这 也 是 默 认 值 这 个 属 性 可 以 在 设 计 器 或 者 在 代 码 中 设 置 在 设 计 器 中 : 在 属 性 窗 口 中 找 到 AutoSearch 属 性 并 将 它 设 置 为 FromTop 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 来 设 置 AutoSearch 属 性 为 FromTop: Visual Basic Me.C1FlexGrid1.AutoSearch = C1.Win.C1FlexGrid.AutoSearchEnum.FromTop C# this.c1flexgrid1.autosearch = C1.Win.C1FlexGrid.AutoSearchEnum.FromTop; 本 主 题 演 示 如 下 : 对 于 用 户 输 入 的 搜 索 结 果, 将 会 高 亮 包 含 这 个 字 母 的 单 元 格 在 本 例 中, 在 Element 列 中 输 入 C 将 会 高 亮 Carbon 注 意 : 如 果 多 个 条 目 以 同 一 个 字 母 开 头, 输 入 下 个 字 母 将 会 高 亮 包 含 这 两 个 字 母 的 条 目 举 个 例 子, 在 Element 列 中 输 入 He 将 会 高 亮 Helium 产 品 网 站 : 咨 询 热 线 : of 269

246 7.25 当 用 户 按 下 Delete 键 时 清 空 单 元 格 要 想 设 置 当 用 户 按 下 DELETE 键 时 清 空 单 元 格, 请 使 用 C1FlexGrid 的 KeyDown 事 件 来 获 取 DELETE 键 被 按 下 的 事 件 添 加 下 面 的 KeyDown 事 件 代 码 到 你 的 窗 体 中 Visual Basic Private Sub C1FlexGrid1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles C1FlexGrid1.KeyDown If (e.keycode = Keys.Delete) Then C1FlexGrid1(C1FlexGrid1.Row, C1FlexGrid1.Col) = 0 End If End Sub C# private void c1flexgrid1_keydown(object sender, System.Windows.Forms.KeyDownEventArgs e) if (e.keycode == Keys.Delete) c1flexgrid1(c1flexgrid1.row, c1flexgrid1.col) = 0; 7.26 将 行 设 置 为 标 题 行 要 将 行 设 置 为 标 题 行, 请 为 每 一 行 设 置 Caption 和 DataType 属 性 1. 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 来 设 置 将 会 出 现 在 表 格 中 的 行 数 和 列 数 Visual Basic Me.C1FlexGrid1.Cols.Count = 5 Me.C1FlexGrid1.Rows.Count = 7 C# this.c1flexgrid1.cols.count = 5; this.c1flexgrid1.rows.count = 7; 2. 向 RowCollection 中 添 加 行 : Visual Basic Dim row As C1.Win.C1FlexGrid.RowCollection = Me.C1FlexGrid1.Rows 产 品 网 站 : 咨 询 热 线 : of 269

247 C# C1.Win.C1FlexGrid.RowCollection row = this.c1flexgrid1.rows; 3. 为 每 一 行 设 置 Caption 和 DataType 属 性 Visual Basic row(1).caption = "Date" row(1).datatype = GetType(DateTime) row(2).caption = "Contact" row(2).datatype = GetType(String) row(3).caption = "Phone" row(3).datatype = GetType(String) row(3).editmask = "(999) ;*" row(4).caption = "Platform" row(4).datatype = GetType(String) row(4).combolist = " Windows XP Windows 2000 Windows ME Windows NT Windows 98 Windows 95" row(5).caption = "Error Code" row(5).datatype = GetType(Integer) row(6).caption = "Resolved" row(6).datatype = GetType(Boolean) C# row[1].caption = "Date"; row[1].datatype = typeof(datetime); row[2].caption = "Contact"; row[2].datatype = typeof(string); row[3].caption = "Phone"; row[3].datatype = typeof(string); row[3].editmask = "(999) ;*"; row[4].caption = "Platform"; row[4].datatype = typeof(string); row[4].combolist = " Windows XP Windows 2000 Windows ME Windows NT Windows 98 Windows 95"; row[5].caption = "Error Code"; row[5].datatype = typeof(int); row[6].caption = "Resolved"; row[6].datatype = typeof(bool); 产 品 网 站 : 咨 询 热 线 : of 269

248 4. 将 标 题 行 的 字 体 格 式 化 为 Tahoma, 9pt, Bold Visual Basic Me.C1FlexGrid1.Styles("Fixed").Font = New Font("Tahoma", 9, FontStyle.Bold) C# this.c1flexgrid1.styles["fixed"].font = new Font("Tahoma", 9, FontStyle.Bold); 5. 合 并 固 定 行 并 添 加 标 题 行 : Visual Basic Me.C1FlexGrid1.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly row(0).allowmerging = True Dim rng As C1.Win.C1FlexGrid.CellRange = C1FlexGrid1.GetCellRange(0, 1, 0, 4) rng.data = "Call Log" C# 本 主 题 演 示 如 下 : 标 题 行 将 会 出 现 在 第 一 列 并 且 每 一 行 将 会 被 格 式 化 为 它 自 己 拥 有 的 DataType 属 性 : this.c1flexgrid1.allowmerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly; row[0].allowmerging = true; C1.Win.C1FlexGrid.CellRange rng = c1flexgrid1.getcellrange(0,1,0,4); rng.data = "Call Log"; 产 品 网 站 : 咨 询 热 线 : of 269

249 产 品 网 站 : 咨 询 热 线 : of 269

250 7.27 为 行 或 者 列 设 置 背 景 色 要 为 列 和 行 设 置 背 景 色, 创 建 一 个 新 的 样 式 并 将 它 指 定 到 一 行 或 者 一 列 为 列 设 置 背 景 色 1. 为 这 一 列 创 建 一 个 新 的 样 式 在 设 计 器 中 : 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 点 击 Add 来 创 建 一 个 新 的 样 式 双 击 CustomStyle1 将 它 重 命 名 为 ColumnColor, 然 后 按 下 ENTER 不 要 退 出 C1FlexGrid 样 式 编 辑 器. 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Dim cc As C1.Win.C1FlexGrid.CellStyle cc = Me.C1FlexGrid1.Styles.Add("ColumnColor") C# C1.Win.C1FlexGrid.CellStyle cc = this.c1flexgrid1.styles.add("columncolor"); 2. 将 BackColor 颜 色 设 置 为 CornSilk 在 设 计 器 中 : 在 C1FlexGrid 样 式 编 辑 器 中, 在 右 侧 窗 格 中 找 到 BackColor 属 性 并 将 它 设 置 为 CornSilk 点 击 OK 来 关 闭 C1FlexGrid 样 式 编 辑 器. 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic cc.backcolor = Color.Cornsilk C# cc.backcolor = Color.Cornsilk; 3. 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中, 将 这 个 样 式 指 定 到 一 列 上 : 产 品 网 站 : 咨 询 热 线 : of 269

251 Visual Basic Me.C1FlexGrid1.Cols(2).Style = Me.C1FlexGrid1.Styles("ColumnColor") C# this.c1flexgrid1.cols[2].style = this.c1flexgrid1.styles["columncolor"]; 本 主 题 演 示 如 下 : Element 列 的 背 景 色 将 会 被 设 置 为 CornSilk 为 行 设 置 背 景 色 1. 为 这 一 行 创 建 一 个 新 的 样 式 在 设 计 器 中 : 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 点 击 Add 来 创 建 一 个 新 的 样 式 双 击 CustomStyle1 将 它 重 命 名 为 RowColor, 然 后 按 下 ENTER 不 要 退 出 C1FlexGrid 样 式 编 辑 器. 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Dim rs As C1.Win.C1FlexGrid.CellStyle rs = Me.C1FlexGrid1.Styles.Add("RowColor") C# 2. 将 背 景 色 设 置 为 PowderBlue. C1.Win.C1FlexGrid.CellStyle rs = this.c1flexgrid1.styles.add("rowcolor"); 在 设 计 器 中 : 在 C1FlexGrid 样 式 编 辑 器 中, 找 到 BackColor 属 性 并 将 它 设 置 为 PowderBlue 点 击 OK 来 关 闭 C1FlexGrid 样 式 编 辑 器. 在 代 码 中 : Visual Basic rs.backcolor = Color.PowderBlue C# 产 品 网 站 : 咨 询 热 线 : of 269

252 rs.backcolor = Color.PowderBlue; 2. 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中, 将 这 个 样 式 指 定 到 一 行 上 : Visual Basic Me.C1FlexGrid1.Rows(8).Style = Me.C1FlexGrid1.Styles("RowColor") C# this.c1flexgrid1.rows[8].style = this.c1flexgrid1.styles["rowcolor"]; 本 主 题 演 示 如 下 : 这 一 行 的 背 景 色 将 会 被 设 置 为 PowderBlue 注 意, 这 个 颜 色 将 会 替 代 该 行 本 身 的 颜 色 在 一 个 语 句 中 设 置 行 和 列 的 背 景 色 要 使 用 一 句 代 码 来 设 置 行 和 列 的 背 景 色, 请 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 : Visual Basic Me.C1FlexGrid1.Cols(2).StyleNew.BackColor = Color.Cornsilk Me.C1FlexGrid1.Rows(8).StyleNew.BackColor = Color.PowderBlue C# 产 品 网 站 : 咨 询 热 线 : of 269

253 本 主 题 演 示 如 下 : 这 一 行 代 码 所 带 来 的 结 果 和 创 建 一 个 新 样 式 并 指 定 到 行 上 是 一 样 的 然 而, 使 用 单 独 一 句 只 改 变 它 指 定 的 那 一 行 或 者 一 列 要 想 将 样 式 应 用 到 多 行 或 者 多 列, 创 建 一 个 新 样 式 并 将 它 设 置 到 列 上 或 者 行 上, 请 看 为 行 或 者 列 设 置 背 景 色 章 节 this.c1flexgrid1.cols[2].stylenew.backcolor = Color.Cornsilk; this.c1flexgrid1.rows[8].stylenew.backcolor = Color.PowderBlue; 7.28 为 单 一 单 元 格 设 置 字 体 上 要 想 为 单 一 单 元 格 设 置 字 体, 请 创 建 一 个 新 的 样 式 并 指 定 到 一 个 单 元 格 1. 创 建 一 个 新 样 式 在 设 计 器 中 : 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 点 击 Add 来 创 建 一 个 新 的 样 式 双 击 CustomStyle1 并 将 它 重 命 名 为 mystyle, 完 成 后 按 下 ENTER 键 不 要 退 出 C1FlexGrid 样 式 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Dim cs As C1.Win.C1FlexGrid.CellStyle cs = Me.C1FlexGrid1.Styles.Add("myStyle") 产 品 网 站 : 咨 询 热 线 : of 269

254 C# C1.Win.C1FlexGrid.CellStyle cs = this.c1flexgrid1.styles.add("mystyle"); 2. 将 字 体 设 置 为 Tahoma, 10 pt, Bold 在 设 计 器 中 : 在 C1FlexGrid 样 式 编 辑 器, 在 右 侧 窗 格 中 找 到 Font 属 性 并 点 击 旁 边 的 省 略 号 按 钮 Font 对 话 框 将 会 弹 出 设 置 Font 为 Tahoma 设 置 Font style 为 Bold 设 置 Size 为 10 点 击 OK 来 关 闭 Font 对 话 框 但 是 不 要 退 出 C1FlexGrid 样 式 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic cs.font = New Font("Tahoma", 10, FontStyle.Bold) C# cs.font = new Font("Tahoma", 10, FontStyle.Bold); 3. 将 字 体 颜 色 设 置 为 Blue 在 设 计 器 中 : 在 C1FlexGrid 样 式 编 辑 器 中, 在 右 侧 窗 格 中 找 到 ForeColor 属 性 并 将 它 设 置 为 Blue 点 击 OK 来 关 闭 C1FlexGrid 样 式 编 辑 器. 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic cs.forecolor = Color.Blue C# cs.forecolor = Color.Blue; 4. 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中, 来 讲 这 个 样 式 指 定 到 一 个 单 元 格 上 : 产 品 网 站 : 咨 询 热 线 : of 269

255 Visual Basic Me.C1FlexGrid1.SetCellStyle(6, 2, "mystyle") C# this.c1flexgrid1.setcellstyle(6, 2, "mystyle"); 本 主 题 演 示 如 下 : Carbon 将 会 显 示 为 蓝 色 粗 体 10 pt Tahoma 字 体 7.29 在 C1FlexGrid 中 设 置 文 本 分 隔 符 要 在 C1FlexGrid 中 设 置 文 本 分 隔 符, 使 用 Split 方 法 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 来 设 置 文 本 分 隔 符 为 分 号 : Visual Basic Dim cols As String = "Product;Region;Salesperson;Sales;Bonus" Dim colnames As String() = cols.split(";") Me.C1FlexGrid1.Cols.Count = 5 Me.C1FlexGrid1.Cols.Fixed = 0 Dim i% For i = 0 To Me.C1FlexGrid1.Cols.Count - 1 Me.C1FlexGrid1(0, i) = colnames(i) Me.C1FlexGrid1.Cols(i).Name = colnames(i) Next 产 品 网 站 : 咨 询 热 线 : of 269

256 C# string cols = "Product;Region;Salesperson;Sales;Bonus"; string[] colnames = cols.split(new char[] ';' ); this.c1flexgrid1.cols.count = 5; this.c1flexgrid1.cols.fixed = 0; for (int i = 0; i <= this.c1flexgrid1.cols.count - 1; i++) this.c1flexgrid1[0, i] = colnames[i]; this.c1flexgrid1.cols[i].name = colnames[i]; 本 主 题 演 示 如 下 : 在 Split 中 的 字 符 串 确 定 了 分 隔 符 将 字 符 串 和 Split 方 法 中 的 分 号 换 为 逗 号 将 会 和 使 用 分 号 有 一 样 的 效 果 7.30 多 列 排 序 行 排 序 想 要 对 多 个 列 排 序, 将 每 一 列 的 Sort 属 性 都 设 置 并 使 用 Sort 方 法 来 对 列 进 1. 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 来 设 置 第 二 排 序 列 为 升 序, 第 三 排 序 列 为 降 序 Visual Basic Me.C1FlexGrid1.Cols(1).Sort = C1.Win.C1FlexGrid.SortFlags.Ascending Me.C1FlexGrid1.Cols(2).Sort = C1.Win.C1FlexGrid.SortFlags.Descending C# this.c1flexgrid1.cols[1].sort = C1.Win.C1FlexGrid.SortFlags.Ascending; this.c1flexgrid1.cols[2].sort = C1.Win.C1FlexGrid.SortFlags.Descending; 2. 将 下 面 的 代 码 添 加 到 Sort 方 法 中 来 进 行 第 二 和 第 三 列 的 升 序 排 列 Visual Basic Me.C1FlexGrid1.Sort(C1.Win.C1FlexGrid.SortFlags.UseColSort, 1, 2) C# this.c1flexgrid1.sort(c1.win.c1flexgrid.sortflags.usecolsort, 1, 2); 本 主 题 演 示 如 下 : 你 的 表 格 将 会 看 起 来 如 下 图 所 示, 第 二 列 为 升 序 排 列, 第 三 列 为 降 序 排 产 品 网 站 : 咨 询 热 线 : of 269

257 列 在 本 例 中, 表 格 中 的 的 StandardState 列 如 果 升 序 排 列 Element 列 如 果 降 序 排 列 的 话,Element 列 中 的 Neon 将 会 出 现 在 Argon 前 面 产 品 网 站 : 咨 询 热 线 : of 269

258 7.31 取 消 排 序 要 在 C1FlexGrid 中 取 消 排 序, 当 这 个 表 格 绑 定 到 一 个 DataTable 时, 将 DefaultView 属 性 设 置 为 null 将 下 面 的 代 码 添 加 到 Button1_Click 事 件 中 : Visual Basic Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click CustTable.DefaultView.Sort = "" End Sub C# private void Button1_Click(object sender, System.EventArgs e) CustTable.DefaultView.Sort = ""; 注 意 :DataTable.DefaultView 将 会 返 回 DataTable 中 的 DataView, 并 将 排 序 字 段 设 置 为 null 来 强 制 DataView 取 消 之 前 的 排 序 本 主 题 演 示 如 下 : 点 击 Last Name 来 排 序 点 击 Undo 按 钮, 排 序 将 会 被 取 消 产 品 网 站 : 咨 询 热 线 : of 269

259 产 品 网 站 : 咨 询 热 线 : of 269

260 7.32 在 C1FlexGrid 中 使 用 密 码 项 要 在 单 元 格 中 输 入 密 码 时 显 示 占 位 符 (*), 请 使 用 SetupEditor 事 件 1. 在 表 格 中 创 建 一 列 密 码 列 并 设 置 它 的 绘 制 模 式 : Visual Basic Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.C1FlexGrid1.Cols(0).Width = Me.C1FlexGrid1.Rows(0).HeightDisplay Me.C1FlexGrid1.ShowCursor = True Me.C1FlexGrid1.Cols(1).Caption =((Me.C1FlexGrid1.Cols(1).Name) = "Password") Me.C1FlexGrid1.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw End Sub C# private void Form1_Load(object sender, System.EventArgs e) this.c1flexgrid1.cols[0].width = this.c1flexgrid1.rows[0].heightdisplay; this.c1flexgrid1.showcursor = true; this.c1flexgrid1.cols[1].caption = this.c1flexgrid1.cols[1].name = "Password"; this.c1flexgrid1.drawmode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw; 2. 将 下 面 的 代 码 添 加 到 SetupEditor 事 件 中 这 段 代 码 将 用 户 输 入 的 字 母 隐 藏 起 来 产 品 网 站 : 咨 询 热 线 : of 269

261 Visual Basic Private Sub C1FlexGrid1_SetupEditor(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.SetupEditor Dim tb As TextBox = Me.C1FlexGrid1.Editor If Not (tb Is Nothing) Then If Me.C1FlexGrid1.Cols(e.Col).Name = "Password" Then tb.passwordchar = "*"c Else tb.passwordchar = CChar(0) End If End If End Sub C# private void c1flexgrid1_setupeditor(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) TextBox tb = this.c1flexgrid1.editor as TextBox; if (tb!= null) if (this.c1flexgrid1.cols[e.col].name == "Password") tb.passwordchar = '*'; else tb.passwordchar = (char)0; 产 品 网 站 : 咨 询 热 线 : of 269

262 本 主 题 演 示 如 下 : 当 用 户 在 Password 列 中 键 入 密 码 时 之 后 并 按 下 ENTER, 文 本 内 容 将 会 自 动 的 被 隐 藏 起 来 隐 藏 已 经 输 入 的 字 符 要 想 隐 藏 已 经 输 入 并 且 不 需 要 编 辑 的 文 字, 请 使 用 OwnerDrawCell 事 件 1. 将 下 面 的 代 码 添 加 到 OwnerDrawCell 事 件 中 这 段 代 码 将 会 隐 藏 已 经 输 入 并 且 不 需 要 编 辑 的 文 字 Visual Basic Private Sub C1FlexGrid1_OwnerDrawCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles C1FlexGrid1.OwnerDrawCell If e.row >= Me.C1FlexGrid1.Rows.Fixed And Me.C1FlexGrid1.Cols(e.Col).Name = "Password" Then e.text = New String("*"c, e.text.length) End If End Sub C# private void c1flexgrid1_ownerdrawcell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e) if (e.row >= this.c1flexgrid1.rows.fixed && this.c1flexgrid1.cols[e.col].name == "Password") e.text = new string('*', e.text.length); 2. 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 Visual Basic C# 产 品 网 站 : 咨 询 热 线 : of 269

263 Me.C1FlexGrid1(1, this.c1flexgrid1[1,1] 1) = "123456"; 号 本 主 题 演 示 如 下 : 再 次 运 行 程 序, 请 注 意 Password 列 中 自 动 填 充 到 窗 体 上 的 的 数 字 被 变 为 星 产 品 网 站 : 咨 询 热 线 : of 269

264 7.33 在 列 头 或 者 固 定 行 换 行 要 想 在 列 头 或 者 固 定 行 换 行, 请 设 置 Height 和 WordWrap 属 性 1. 为 列 头 设 置 Caption 属 性 在 设 计 器 中 : 在 表 格 中 选 择 一 列, 这 将 会 打 开 这 一 列 的 列 任 务 菜 单 在 Column Caption 框 中, 输 入 Word Wrapping in Header 另 外, Caption 属 性 也 可 以 在 C1FlexGrid 列 编 辑 器 中 设 置 打 开 C1FlexGrid 列 编 辑 器. 打 开 C1FlexGrid 列 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 列 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 列 编 辑 器 章 节 ( 第 143 页 ) 在 右 侧 窗 格 中 选 择 一 列 并 在 左 侧 窗 格 中 将 它 的 Caption 属 性 设 置 为 Word Wrapping in Header 点 击 OK 来 关 闭 编 辑 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 Visual Basic Me.C1FlexGrid1.Cols(1).Caption = "Word Wrapping in Header" C# this.c1flexgrid1.cols[1].caption = "Word Wrapping in Header"; 2. 设 置 列 头 的 高 度 Visual Basic Me.C1FlexGrid1.Rows(0).Height = 3 * Me.C1FlexGrid1.Rows.DefaultSize C# this.c1flexgrid1.rows[0].height = 3 * this.c1flexgrid1.rows.defaultsize; 3. 允 许 固 定 单 元 格 的 换 行 在 设 计 器 中 : 打 开 C1FlexGrid 样 式 编 辑 器 想 要 了 解 更 多 关 于 如 何 访 问 C1FlexGrid 样 式 编 辑 器 的 信 息, 请 查 看 访 问 C1FlexGrid 样 式 编 辑 器 章 节 ( 第 143 页 ) 在 内 置 样 式 列 表 中 选 择 Fixed 在 右 侧 窗 格 中 找 到 WordWrap 属 性 并 将 它 设 置 为 True 产 品 网 站 : 咨 询 热 线 : of 269

265 点 击 OK 来 关 闭 设 计 器 在 代 码 中 : 将 下 面 的 代 码 添 加 到 Form_Load 事 件 中 去 : Visual Basic Me.C1FlexGrid1.Styles("Fixed").WordWrap = True C# this.c1flexgrid1.styles["fixed"].wordwrap = true; 本 主 题 演 示 如 下 : 在 本 例 中, 一 个 三 行 的 列 头 被 创 建 了, 文 字 是 自 动 折 行 的 产 品 网 站 : 咨 询 热 线 : of 269

I

I 机 电 一 级 注 册 建 造 师 继 续 教 育 培 训 广 东 培 训 点 网 上 报 名 操 作 使 用 手 册 (2013 年 1 月, 第 一 版 ) 第 一 章 个 人 注 册 与 个 人 信 息 管 理 1. 个 人 注 册 ( 请 每 人 只 申 请 一 个 注 册 号, 如 果 单 位 批 量 报 班 单 位 帮 申 请 注 册, 不 需 个 人 再 注 册 ) 首 次 报 班,

More information

修改版-操作手册.doc

修改版-操作手册.doc 职 称 信 息 系 统 升 级 指 南 须 使 用 IE9 及 其 以 上 版 本 浏 览 器 或 谷 歌 浏 览 器 登 录 www.njrs.gov.cn 南 京 市 职 称 ( 职 业 资 格 ) 工 作 领 导 小 组 办 公 室 2016 年 5 月 目 录 一 申 报 人 员 操 作 指 南...1 1.1 职 称 初 定 申 报...1 1.1.1 职 称 初 定 基 础 信 息 填

More information

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管 宝 汇 德 Turbocare 微 服 务 系 统 客 户 操 作 手 册 Version 2.0 北 京 宝 汇 德 技 术 服 务 器 有 限 公 司 技 术 研 发 部 目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理... 10 巡

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 52 5 天 通 过 职 称 计 算 机 考 试 ( 考 点 视 频 串 讲 + 全 真 模 拟 ) Word 2003 中 文 字 处 理 ( 第 2 版 ) 第 3 章 3 字 符 格 式 需 要 掌 握 的 考 点 字 体 字 形 和 字 号 的 设 置 ; 上 标 下 标 空 心 字 等 字 体 效 果 的 使 用 ; 字 符 间 距 的 调 整 ; 改 变 字 符 颜 色 底 纹 添 加

More information

登录、注册功能的测试用例设计.doc

登录、注册功能的测试用例设计.doc 注 册 登 陆 测 试 用 例 和 修 改 密 码 测 试 用 例 完 整 版 摘 自 网 络, 狗 狗 整 理 zqh139@126.com 修 改 历 史 日 期 版 本 作 者 修 改 内 容 评 审 号 变 更 控 制 号 2010-11-25 1.0 初 稿 2011-09-17 2.0 整 理 一 注 册 测 试 用 例 序 号 : 1 控 件 名 称 : 功 能 描 述 : 注 册 编

More information

世华财讯模拟操作手册

世华财讯模拟操作手册 第 一 部 分 : 股 票 模 拟 操 作 部 分 1. 登 录 与 主 界 面 1.1 登 录 学 生 在 桌 面 上, 打 开 世 华 文 件 夹, 直 接 双 击 文 件 夹 中 的 快 捷 图 标, 系 统 弹 出 世 华 财 讯 模 拟 股 票 交 易 系 统 ( 客 户 端 ) 窗 口, 如 图 1.1 所 示 图 1.1 请 输 入 登 录 名 称 及 密 码, 单 击 确 认 登 录

More information

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知 第 卷 第 期 年 月 开 放 教 育 研 究 何 秋 琳 张 立 春 华 南 师 范 大 学 未 来 教 育 研 究 中 心 广 东 广 州 随 着 图 像 化 技 术 和 电 子 媒 体 的 发 展 视 觉 学 习 也 逐 步 发 展 为 学 习 科 学 的 一 个 研 究 分 支 得 到 研 究 人 员 和 教 育 工 作 者 的 广 泛 关 注 基 于 此 作 者 试 图 对 视 觉 学 习

More information

Excel basics

Excel basics Excel 基 础 知 识 Excel 是 功 能 强 大 的 电 子 表 格 和 数 据 分 析 应 用 程 序, 然 而 若 要 最 有 效 地 使 用 它, 必 须 首 先 了 解 这 些 基 础 知 识 本 教 程 介 绍 一 些 可 以 在 所 有 工 作 薄 中 使 用 的 任 务 和 功 能 开 设 之 前... 1 1. 创 建 新 空 白 工 作 薄... 2 2. 浏 览 Excel

More information

<433A5C446F63756D656E747320616E642053657474696E67735C41646D696E6973747261746F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

<433A5C446F63756D656E747320616E642053657474696E67735C41646D696E6973747261746F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63> ( 一 ) 系 统 整 体 操 作 流 程 简 述 3 ( 二 ) 系 统 中 各 角 色 操 作 功 能 说 明 5 1. 学 院 管 理 员 5 2. 教 学 院 长 8 3. 指 导 教 师 10 4. 答 辩 组 组 长 12 5. 学 生 12 6. 系 统 管 理 员 15 ( 一 ) 论 文 系 统 常 见 问 题 16 ( 二 ) 论 文 查 重 常 见 问 题 22 1 2 主

More information

第2章 数据类型、常量与变量

第2章  数据类型、常量与变量 第 2 章 数 据 类 型 常 量 与 变 量 在 计 算 机 程 序 中 都 是 通 过 值 (value) 来 进 行 运 算 的, 能 够 表 示 并 操 作 值 的 类 型 为 数 据 类 型 在 本 章 里 将 会 介 绍 JavaScript 中 的 常 量 (literal) 变 量 (variable) 和 数 据 类 型 (data type) 2.1 基 本 数 据 类 型 JavaScript

More information

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用 水 路 运 输 建 设 综 合 管 理 信 息 系 统 - 门 户 系 统 用 户 手 册 二 零 一 五 年 十 一 月 目 录 一 系 统 访 问... 1 二 门 户 首 页... 1 1. 申 报 用 户... 1 2. 审 核 用 户... 2 三 系 统 登 录... 4 1. 用 户 名 密 码 登 录... 4 1.1 新 用 户 注 册... 4 1.2 用 户 登 录... 7

More information

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页, 网 络 教 育 新 平 台 教 师 使 用 简 易 手 册 一 登 录 教 师 工 作 室 1 打 开 西 南 科 技 大 学 网 络 教 育 教 学 教 务 新 平 台 主 页 面 :http://www.swust.net.cn/ 2 在 主 页 面 左 边 的 登 陆 区 中, 用 户 名 和 密 码 处 分 别 输 入 自 己 的 用 户 名 ( 教 师 ID 号 ) 和 密 码 ( 初 始

More information

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用 Visual Basic 程 序 设 计 A 级 分 级 班 教 学 大 纲 ( 供 计 算 机 与 信 息 技 术 基 础 课 程 分 级 教 学 A 级 班 使 用 ) I 前 言 Visual Basic 程 序 设 计 课 程 是 一 门 计 算 机 语 言 基 础 课 程 通 过 对 该 课 程 的 学 习, 使 学 生 初 步 掌 握 Visual Basic 的 语 言 特 点, 掌

More information

Microsoft Word - 第7章 图表反转形态.doc

Microsoft Word - 第7章 图表反转形态.doc 第 七 章 图 表 反 转 形 态 我 们 知 道 市 场 趋 势 共 有 三 种 : 上 升 趋 势 下 降 趋 势 和 横 向 整 理 市 场 的 价 格 波 动 都 是 运 行 在 这 三 种 趋 势 中, 所 有 的 走 势 都 是 这 三 种 趋 势 的 排 列 组 合 如 图 市 场 趋 势 结 构 示 意 图 7-1 所 示 市 场 趋 势 结 构 示 意 图 7-1 图 市 场 趋

More information

全国教师资格认定管理信息系统

全国教师资格认定管理信息系统 操 作 说 明 一 教 师 资 格 认 定 申 请 人 1 : 1. 未 参 加 全 国 统 考 申 请 人 2.1 登 录 未 参 加 全 国 统 考 申 请 人 网 上 报 名 系 统 登 录 中 国 教 师 资 格 网 (http://www.jszg.edu.cn), 未 参 加 全 国 统 考 申 请 人 有 两 种 途 径 进 入 报 名 系 统 第 一 种 途 径 : 点 击 网 站

More information

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 (http://nc.tju.edu.cn) 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 (http://g.tju.edu.cn) 首 页

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 (http://nc.tju.edu.cn) 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 (http://g.tju.edu.cn) 首 页 校 园 网 认 证 计 费 系 统 变 更 说 明 及 使 用 帮 助 为 提 高 校 园 网 的 可 靠 性 和 可 用 性, 提 升 用 户 的 上 网 体 验, 同 时 也 为 解 决 近 期 校 园 网 无 法 认 证 或 登 录 页 面 弹 出 缓 慢 的 问 题, 信 网 中 心 于 近 期 对 校 园 网 认 证 计 费 系 统 进 行 升 级 切 换 现 将 升 级 后 新 系 统

More information

教师上报成绩流程图

教师上报成绩流程图 教 务 管 理 系 统 使 用 说 明 学 生 端 用 户 1 在 校 内 任 何 一 台 连 接 校 园 网 的 计 算 机 上 登 录 教 务 处 主 页 教 务 处 主 页 地 址 : http://jw.stdu.edu.cn/homepage 随 后 点 击 按 钮 ( 见 下 图 所 示 ), 即 可 进 入 综 合 教 务 管 理 系 统 2 在 综 合 教 务 管 理 区 域 内 键

More information

目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱 发 布 信 件 查 看 个 人 信 件... 7 二. 公 共 留 言 发 布 公 共 留 言 查 看 公 共 留 言... 9 三. 校 长 荐

目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱 发 布 信 件 查 看 个 人 信 件... 7 二. 公 共 留 言 发 布 公 共 留 言 查 看 公 共 留 言... 9 三. 校 长 荐 思 库 网 Centricity2 目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱... 4 1.1 发 布 信 件... 4 1.2 查 看 个 人 信 件... 7 二. 公 共 留 言... 8 2.1 发 布 公 共 留 言... 8 2.2 查 看 公 共 留 言... 9 三. 校 长 荐 读... 9 3.1 发 布 校 长 荐 读... 9 3.2

More information

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单 评 委 : 李 炎 斌 - 个 人 清 标 评 审 明 细 表 评 审 因 素 序 号 投 标 单 位 清 标 评 审 1 深 圳 市 创 捷 科 技 有 限 合 格 2 四 川 川 大 智 胜 软 件 股 份 有 限 合 格 3 北 京 航 天 长 峰 科 技 工 业 集 团 有 限 公 司 合 格 4 深 圳 中 兴 力 维 技 术 有 限 合 格 5 深 圳 键 桥 通 讯 技 术 股 份 有

More information

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63> 浙 江 职 业 能 力 建 设 信 息 系 统 职 业 技 能 鉴 定 考 务 管 理 用 户 操 作 手 册 二 〇 一 五 年 八 月 目 录 0. 系 统 概 述...3 0.0. 简 要 概 述...3 0.1. 业 务 流 程 图... 3 1. 考 生 网 上 报 名... 3 1.0. 考 生 用 户 注 册 登 录... 5 1.1. 报 名 及 下 载 打 印 报 名 申 请 表...7

More information

《C语言基础入门》课程教学大纲

《C语言基础入门》课程教学大纲 C 语 言 开 发 入 门 教 程 课 程 教 学 大 纲 课 程 编 号 :201409210011 学 分 :5 学 分 学 时 :58 学 时 ( 其 中 : 讲 课 学 时 :39 学 时 上 机 学 时 :19 学 时 ) 先 修 课 程 : 计 算 机 导 论 后 续 课 程 :C++ 程 序 设 计 适 用 专 业 : 信 息 及 其 计 算 机 相 关 专 业 开 课 部 门 : 计

More information

第3章 创建数据库

第3章 创建数据库 第 3 章 创 建 数 据 库 要 点 3.1 Access 2002 开 发 环 境 3.2 数 据 库 的 创 建 3.3 创 建 表 3.4 字 段 操 作 3.5 设 定 表 关 系 3.6 操 作 记 录 3.7 数 据 的 导 入 和 导 出 3.1 Access 2002 开 发 环 境 Access 与 许 多 常 用 的 数 据 库 管 理 系 统, 如 Access 常 用 的

More information

全国艺术科学规划项目

全国艺术科学规划项目 全 国 艺 术 科 学 规 划 项 目 网 上 申 报 常 见 问 题 及 解 决 方 法 目 录 一 申 报 流 程...4 二 立 项 流 程...5 三 常 见 问 题 与 处 理...6 (1). 如 何 注 册...6 (2). 系 统 中 没 有 我 的 单 位 怎 么 办?...7 (3). 在 注 册 时 写 错 身 份 证 号 名 字 而 系 统 中 不 能 修 改 怎 么 办?...

More information

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基 内 部 资 料 东 北 师 范 大 教 运 行 基 本 状 态 据 报 告 2015 年 春 季 期 教 务 处 2015 年 10 月 27 日 说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度,

More information

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单 评 委 : 徐 岩 宇 - 个 人 清 标 评 审 明 细 表 评 审 因 素 序 号 投 标 单 位 清 标 评 审 1 深 圳 市 创 捷 科 技 有 限 合 格 2 四 川 川 大 智 胜 软 件 股 份 有 限 合 格 3 北 京 航 天 长 峰 科 技 工 业 集 团 有 限 公 司 合 格 4 深 圳 中 兴 力 维 技 术 有 限 合 格 5 深 圳 键 桥 通 讯 技 术 股 份 有

More information

生产支援功能 使用说明书(IP-110 篇)

生产支援功能 使用说明书(IP-110 篇) 生 产 支 援 功 能 使 用 说 明 书 (IP-110 篇 ) 目 录!. 前 言...1 1. 概 要...1 2. 基 本 操 作 方 法...3 2-1. 信 息 模 式 和 通 常 缝 制 模 式 的 变 换...3 2-2. 信 息 模 式...4 2-3. 通 常 缝 制 模 式...5 @. 设 定 篇...6 1. 首 次 使 用 生 产 支 援 功 能 时 的 设 定 方 法...6

More information

引言

引言 教 育 网 络 视 频 播 控 平 台 用 户 手 册 第 1 页 共 78 页 修 订 记 录 序 号 变 更 日 期 变 更 理 由 变 更 内 容 版 本 编 制 / 修 改 1 2015-1-5 初 稿 初 稿 1.0 代 盈 第 2 页 共 78 页 目 录 修 订 记 录... 2 目 录... 3 1. 引 言... 4 1.1 编 写 目 的... 4 1.2 项 目 背 景...

More information

操作手册

操作手册 企 业 网 上 银 行 使 用 手 册 ( 智 信 版 ) 中 国 农 业 银 行 股 份 有 限 公 司 重 庆 市 分 行 目 录 使 用 网 上 银 行 前 务 必 了 解 的 信 息... 3 1. 基 本 功 能... 3 2. 网 银 操 作 员... 3 3. 登 录 方 式... 3 4. 特 别 提 醒... 3 快 速 使 用 指 南... 4 1. 注 册 用 户... 4 2.

More information

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量 0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 3 无 轻 伤 责 任 事 故 目 标 30 及 事 无 重 大 质 量 工 作 过 失 故 管 无 其 他 一 般 责 任 事 故 理 在 公 司 文 明 环 境 创 建 中, 无 工 作 过 失 及 被 追 究 的

More information

国债回购交易业务指引

国债回购交易业务指引 附 件 1 上 海 证 券 交 易 所 新 质 押 式 国 债 回 购 交 易 业 务 指 引 一 总 述 根 据 上 海 证 券 交 易 所 债 券 交 易 实 施 细 则, 上 证 所 将 于 2006 年 5 月 8 日 起 推 出 新 质 押 式 国 债 回 购 新 质 押 式 回 购 与 现 行 质 押 式 回 购 相 比 区 别 主 要 在 以 下 几 个 方 面 :1 新 质 押 式

More information

深圳市新亚电子制程股份有限公司

深圳市新亚电子制程股份有限公司 证 券 代 码 :002388 证 券 简 称 : 新 亚 制 程 公 告 编 号 :2016-053 深 圳 市 新 亚 电 子 制 程 股 份 有 限 公 司 2016 年 第 二 次 临 时 股 东 大 会 决 议 公 告 本 公 司 及 董 事 会 全 体 成 员 保 证 公 告 内 容 真 实 准 确 和 完 整, 不 存 在 虚 假 记 载 误 导 性 陈 述 或 者 重 大 遗 漏 特

More information

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语 新 汉 语 水 平 考 试 HSK 为 使 汉 语 水 平 考 试 (HSK) 更 好 地 服 务 于 汉 语 学 习 者, 中 国 国 家 汉 办 组 织 中 外 汉 语 教 学 语 言 学 心 理 学 和 教 育 测 量 学 等 领 域 的 专 家, 在 充 分 调 查 了 解 海 外 实 际 汉 语 教 学 情 况 的 基 础 上, 吸 收 原 有 HSK 的 优 点, 借 鉴 近 年 来 国

More information

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化?... 11 五 如 何 向 教 师 发 送 通 知?... 13 六

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化?... 11 五 如 何 向 教 师 发 送 通 知?... 13 六 一 刻 校 园 足 球 管 理 平 台 使 用 说 明 ( 学 校 管 理 员 版 ) 一 刻 软 件 科 技 有 限 公 司 目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化?... 11 五 如 何 向 教 师 发 送

More information

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以 2015 年 考 研 数 学 二 考 试 大 纲 考 试 科 目 : 高 等 数 学 线 性 代 数 考 试 形 式 和 试 卷 结 构 一 试 卷 满 分 及 考 试 时 间 试 卷 满 分 为 150 分, 考 试 时 间 为 180 分 钟. 二 答 题 方 式 答 题 方 式 为 闭 卷 笔 试. 三 试 卷 内 容 结 构 高 等 教 学 约 78% 线 性 代 数 约 22% 四 试 卷

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 48 第 3 章 格 式 设 置 第 3 章 格 式 设 置 需 要 掌 握 的 考 点 字 体 字 形 字 号 颜 色 下 划 线 和 其 他 效 果 的 设 置 ; 字 符 边 框 底 纹 间 距 缩 放 和 位 置 升 降 的 设 置 ; 段 落 的 缩 进 对 齐 方 式 行 间 距 段 间 距 和 段 落 的 边 框 与 底 纹 的 设 置 ; 项 目 符 号 和 编 号 的 设 置 与

More information

云信Linux SSH认证代理用户手册

云信Linux SSH认证代理用户手册 Windows 主 机 登 录 保 护 (RDP) 管 理 员 配 置 手 册 V1.0 云 信 事 业 部 飞 天 诚 信 科 技 股 份 有 限 公 司 www.cloudentify.com 章 节 目 录 第 1 章 管 理 平 台 配 置 说 明... 1 1.1 注 册... 1 1.2 登 录... 3 1.3 添 加 应 用... 4 1.4 添 加 用 户... 7 1.5 激 活

More information

乐视云视频发行平台 操作手册 V1.1

乐视云视频发行平台            操作手册 V1.1 乐 视 云 视 频 发 行 平 台 操 作 手 册 V1.1 1 登 录 视 频 发 行 用 户 可 通 过 浏 览 器 访 问 http://vrp.lecloud.com/ 即 可 快 速 进 入 视 频 发 行 一 内 容 商 平 台 : 1 首 页 在 首 页 中, 您 可 以 查 看 视 频 播 放 总 数 被 订 购 商 品 数 订 单 总 数 拥 有 商 品 拥 有 内 容 默 认 查

More information

微软用户

微软用户 学 生 空 间 用 户 操 作 手 册 目 录 前 言... 2 一 登 录 学 生 空 间... 2 二 学 生 空 间 页 面... 3 三 功 能 区... 3 3.1 课 程 学 习... 5 3.2 学 务 管 理... 7 3.3 学 习 档 案... 7 3.4 资 料 管 理... 8 3.7 课 程 班 级... 11 3.8 我 要 评 价... 11 四 交 流 互 动...

More information

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和 语 音 语 篇 语 感 语 域 林 大 津 毛 浩 然 改 革 开 放 以 来 的 英 语 热 引 发 了 大 中 小 学 英 语 教 育 整 体 规 划 问 题 在 充 分 考 虑 地 区 学 校 和 个 体 差 异 以 及 各 家 观 点 的 基 础 上 遵 循 实 事 求 是 逐 级 定 位 逐 层 分 流 因 材 施 教 的 原 则 本 研 究 所 倡 导 的 语 音 语 篇 语 感 语 域

More information

Cybozu Garoon 3 管理员手册

Cybozu Garoon 3 管理员手册 附 录 D 数 据 的 输 入 样 式 数 据 的 种 类 和 输 入 字 符 的 值 等, 在 Garoon3 的 页 面 输 入 的 数 据 样 式 如 下 所 示 基 本 系 统 客 户 信 息 法 人 姓 名 字 符 串 ( 00 法 人 姓 名 ( 拼 音 ) 字 符 串 ( 00 图 标 (URL) 字 符 串 ( 255 应 用 程 序 新 名 称 字 符 串 ( 00 用 户 姓 名

More information

Microsoft Word - Disclose.doc

Microsoft Word - Disclose.doc 三 甲 金 融 委 托 终 端 港 股 使 用 说 明 - 1 - 1. 基 本 功 能 介 绍 1.1 登 录 界 面 简 介 1.1.1 登 录 模 式 (1) 嵌 入 行 情 软 件 中 运 行 模 式 : 点 击 大 智 慧 行 情 软 件 顶 端 的 委 托 菜 单 选 项 或 者 登 录 新 一 代 行 情 软 件 后 按 F12 快 捷 键 弹 出 委 托 登 录 窗 口 如 图 1-1

More information

如 何 开 始 使 用 Excel 2010 如 果 您 长 期 以 来 一 直 在 使 用 Microsoft Excel 2003, 则 对 于 在 Excel 2010 中 的 哪 些 地 方 可 找 到 Excel 2003 命 令 和 工 具 栏 按 钮, 肯 定 心 存 疑 问 我 们

如 何 开 始 使 用 Excel 2010 如 果 您 长 期 以 来 一 直 在 使 用 Microsoft Excel 2003, 则 对 于 在 Excel 2010 中 的 哪 些 地 方 可 找 到 Excel 2003 命 令 和 工 具 栏 按 钮, 肯 定 心 存 疑 问 我 们 本 指 南 内 容 Microsoft Microsoft Excel 2010 的 外 观 与 Excel 2003 差 别 很 大, 因 此, 我 们 编 写 了 本 指 南 以 帮 助 您 最 大 限 度 地 缩 短 学 习 曲 线 请 继 续 阅 读 以 了 解 新 界 面 的 主 要 组 成 部 分, 查 看 免 费 的 Excel 2010 培 训, 查 找 诸 如 打 印 预 览 或

More information

四川省农村义务教育学生

四川省农村义务教育学生 四 川 省 农 村 义 务 教 育 学 生 营 养 改 善 计 划 协 调 小 组 办 公 室 川 学 生 营 养 办 函 2015 7 号 关 于 填 报 2015 年 农 村 义 务 教 育 学 生 营 养 改 善 计 划 受 益 学 生 数 据 的 通 知 各 相 关 市 ( 州 ) 学 生 营 养 办 : 为 了 贯 彻 落 实 国 务 院 办 公 厅 关 于 实 施 农 村 义 务 教 育

More information

第 一 部 分 MagiCAD for Revit 安 装 流 程

第 一 部 分 MagiCAD for Revit 安 装 流 程 MagiCAD 软 件 安 装 流 程 MagiCAD v2015.4 for Revit 广 联 达 软 件 股 份 有 限 公 司 BIM 中 心 编 写 2015 年 06 月 第 一 部 分 MagiCAD for Revit 安 装 流 程 一 安 装 前 需 要 确 认 的 内 容 安 装 MagiCAD 程 序 之 前, 请 您 先 确 定 以 下 事 宜 1. 当 前 用 户 账 户

More information

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :, : 周 晓 虹 : - -., - - - -. :( ), -,.( ),,, -. - ( ).( ) ', -,,,,, ( ).( ),,, -., '.,, :,,,, :,,,, ,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,,

More information

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决 上 海 市 公 共 卫 生 硕 士 专 业 学 位 论 文 基 本 要 求 和 评 价 指 标 体 系 ( 试 行 ) 上 海 市 学 位 委 员 会 办 公 室 二 O 一 二 年 三 月 一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创

More information

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使 校 务 系 统 使 用 步 骤 说 明 手 册 简 介 此 手 册 是 配 合 校 务 系 统 使 用 手 册 编 辑 的, 因 此 必 须 同 时 参 考 校 务 系 统 使 用 手 册, 以 获 知 更 详 细 的 使 用 说 明 此 手 册 主 要 记 载 几 项 较 为 复 杂 事 务 的 处 理 步 骤 及 说 明, 以 让 使 用 者 更 容 易 掌 握 及 使 用 校 务 系 统 其

More information

(2015-2016-2)-0004186-04205-1 140242 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 37 37 1 教 203 17 周 2016 年 06 月 13 日 (08:00-09:35) (2015-2016-2)-0004186-04205-1 141011

(2015-2016-2)-0004186-04205-1 140242 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 37 37 1 教 203 17 周 2016 年 06 月 13 日 (08:00-09:35) (2015-2016-2)-0004186-04205-1 141011 关 于 2015-2016 学 年 第 二 学 期 期 末 周 内 考 试 时 间 地 点 安 排 选 课 课 号 班 级 名 称 课 程 名 称 课 程 性 质 合 考 人 数 实 际 人 数 考 试 教 室 考 试 段 考 试 时 间 (2015-2016-2)-0006178-04247-1 130101 测 试 技 术 基 础 学 科 基 础 必 修 课 35 35 1 教 401 17 周

More information

注 意 : 如 上 图 所 示, 网 上 缴 费 (12 月 3 日 至 10 日 ) 与 春 季 高 考 现 场 确 认 工 作 (12 月 3 日 至 6 日 ) 同 时 进 行, 没 有 经 过 现 场 确 认 和 确 认 信 息 没 有 上 传 到 服 务 器 的 考 生 不 能 网 上 缴

注 意 : 如 上 图 所 示, 网 上 缴 费 (12 月 3 日 至 10 日 ) 与 春 季 高 考 现 场 确 认 工 作 (12 月 3 日 至 6 日 ) 同 时 进 行, 没 有 经 过 现 场 确 认 和 确 认 信 息 没 有 上 传 到 服 务 器 的 考 生 不 能 网 上 缴 山 东 省 2016 年 普 高 报 名 网 上 缴 费 使 用 说 明 1 概 述 2016 年 我 省 普 高 报 名 工 作 继 续 推 进 网 上 缴 费, 增 加 了 高 水 平 专 项 测 试 费 ( 已 完 成 ) 体 育 专 业 测 试 费 以 及 青 岛 市 考 生 各 类 报 考 费 也 全 部 网 上 缴 纳, 并 启 用 了 山 东 财 政 非 税 收 入 新 缴 费 平 台

More information

系统设计文档_样稿管理模块 V1.1_.doc

系统设计文档_样稿管理模块 V1.1_.doc 系 统 设 计 文 档 生 产 资 料 管 理 系 统 (Production Material Management System, PMMS) 样 稿 ( 样 件 ) 管 理 模 块 ( 第 1 期 ) 文 档 版 本 :1.1 文 档 日 期 : 2012-08-30 文 档 作 者 : 曾 勇 松 其 它 参 与 人 : 第 1 页 / 共 16 页 文 档 修 订 记 录 修 订 记 录

More information

目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍... 4 2.1 系 统 管 理 员 登 陆... 4 2.2 班

目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍... 4 2.1 系 统 管 理 员 登 陆... 4 2.2 班 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 使 用 说 明 书 制 作 : 北 京 博 导 前 程 信 息 技 术 有 限 公 司 目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍... 4 2.1

More information

目 录 页 1. 欢 迎 使 用 网 上 预 约 面 谈 访 问 系 统... 3 2. 新 用 户... 4 2.1 新 用 户 登 入 帐 户 程 序... 4 2.2 启 动 网 上 预 约 面 谈 访 问 帐 户... 5 2.2.1 核 对 帐 户 的 地 址 资 料... 5 2.2.2

目 录 页 1. 欢 迎 使 用 网 上 预 约 面 谈 访 问 系 统... 3 2. 新 用 户... 4 2.1 新 用 户 登 入 帐 户 程 序... 4 2.2 启 动 网 上 预 约 面 谈 访 问 帐 户... 5 2.2.1 核 对 帐 户 的 地 址 资 料... 5 2.2.2 网 上 预 约 面 谈 访 问 使 用 指 南 香 港 特 别 行 政 区 政 府 统 计 处 目 录 页 1. 欢 迎 使 用 网 上 预 约 面 谈 访 问 系 统... 3 2. 新 用 户... 4 2.1 新 用 户 登 入 帐 户 程 序... 4 2.2 启 动 网 上 预 约 面 谈 访 问 帐 户... 5 2.2.1 核 对 帐 户 的 地 址 资 料... 5 2.2.2 阅

More information

学位论文文档编辑与提交

学位论文文档编辑与提交 学 位 论 文 文 档 编 辑 与 提 交 江 苏 师 范 大 学 图 书 馆 2015.11.05 一 WORD 文 档 编 辑 二 论 文 提 交 及 注 意 事 项 一 文 档 编 辑 word 文 档 的 合 成 1 通 过 添 加 分 节 符 创 建 文 档 章 节 2 在 章 节 中 创 建 不 同 的 页 眉 和 页 脚 3 目 录 创 建 一 文 档 编 辑 word 文 档 的 合

More information

文 化 记 忆 传 统 创 新 与 节 日 遗 产 保 护 根 据 德 国 学 者 阿 斯 曼 的 文 化 记 忆 理 论 仪 式 与 文 本 是 承 载 文 化 记 忆 的 两 大 媒 体 在 各 种 仪 式 行 为 中 节 日 以 其 高 度 的 公 共 性 有 组 织 性 和 历 史 性 而 特 别 适 用 于 文 化 记 忆 的 储 存 和 交 流 节 日 的 文 化 功 能 不 仅 在 于

More information

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类 全 国 计 算 机 等 级 考 试 调 整 方 案 2011 年 7 月, 教 育 部 考 试 中 心 组 织 召 开 了 第 五 届 全 国 计 算 机 等 级 考 试 (NCRE) 考 委 会 会 议, 会 议 完 成 NCRE 考 委 会 换 届 选 举, 并 确 定 了 下 一 步 改 革 和 发 展 的 目 标 在 新 的 历 史 时 期,NCRE 将 以 保 持 稳 定 为 前 提 以

More information

目 录 版 本 更 新 说 明... 3 1 导 读... 4 1.1 读 者 对 象... 4 1.2 手 册 内 容 简 介... 4 1.3 软 件 简 介... 4 1.4 基 本 术 语... 5 1.5 技 术 支 持... 6 2 基 本 流 程... 6 3 操 作 步 骤... 8

目 录 版 本 更 新 说 明... 3 1 导 读... 4 1.1 读 者 对 象... 4 1.2 手 册 内 容 简 介... 4 1.3 软 件 简 介... 4 1.4 基 本 术 语... 5 1.5 技 术 支 持... 6 2 基 本 流 程... 6 3 操 作 步 骤... 8 地 质 调 查 项 目 统 计 信 息 子 系 统 用 户 手 册 V2.0(2016 简 明 版 ) 技 术 支 持 : 中 国 地 质 调 查 局 发 展 研 究 中 心 http://www.drc.cgs.gov.cn 资 料 版 本 :DRC-CGSTJ-20160619 1 目 录 版 本 更 新 说 明... 3 1 导 读... 4 1.1 读 者 对 象... 4 1.2 手 册

More information

工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录... 1 2 企 业 基 本 信 息 查 看... 3 3 企 业 人 员 信 息 查 看... 4 4 企 业 基 本 信 息 操 作... 5 4.1 企 业 简 介... 5 4.2 企 业 章

工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录... 1 2 企 业 基 本 信 息 查 看... 3 3 企 业 人 员 信 息 查 看... 4 4 企 业 基 本 信 息 操 作... 5 4.1 企 业 简 介... 5 4.2 企 业 章 工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 工 程 造 价 咨 询 企 业 管 理 系 统 ( 造 价 企 业 ) 用 户 手 册 工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录... 1 2 企 业 基 本 信 息 查 看... 3 3 企 业 人 员 信 息 查 看... 4 4 企 业 基 本 信 息 操 作... 5 4.1

More information

Excel 使 用 简 单 说 明 组 别 : 第 六 小 组 成 员 : 李 希 张 潇 康 卫 诗 宜 李 旭 东 时 间 :2014.04.23 目 录 1 Excel 概 述... 2 2 Excel 的 基 本 使 用... 2 2.1 认 识 excel 的 界 面... 2 2.2 输 入 和 编 辑 数 据... 3 2.2.1 删 除 和 更 改 数 据... 4 2.2.2 复

More information

<4D6963726F736F667420576F7264202D2032303133C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

<4D6963726F736F667420576F7264202D2032303133C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3> 工 程 硕 士 数 学 考 试 大 纲 与 要 求 ( 包 括 高 等 数 学 和 线 性 代 数 ) 一 函 数 极 限 与 连 续 第 一 部 分 : 高 等 数 学 考 试 内 容 函 数 的 概 念 及 表 示 法 函 数 的 有 界 性 单 调 性 周 期 性 和 奇 偶 性 复 合 函 数 反 函 数 分 段 函 数 和 隐 函 数 基 本 初 等 函 数 的 性 质 及 其 图 形 初

More information

火车浏览器脚本制作教程

火车浏览器脚本制作教程 火 车 浏 览 器 脚 本 管 理 器 操 作 文 档 火 车 浏 览 器 的 脚 本 管 理 器 是 生 成 具 体 执 行 的 各 种 脚 本, 然 后 由 项 目 管 理 器 进 行 调 用 脚 本 管 理 器 中 定 义 了 执 行 脚 本 的 细 节 和 流 程, 项 目 管 理 器 可 以 通 过 修 改 脚 本 运 行 时 的 参 数 变 量, 实 现 批 量, 自 动 化 的 运 行

More information

目 录 第 一 章 : 登 陆 平 台 概 述 登 陆 平 台 的 步 骤 第 二 章 : 免 费 实 习 账 号 概 述 创 建 实 习 账 号 第 三 章 : 商 品 价 格 概 述 查 看 价 格 选 择 图 表 快 速 开 立 订 单 详 细 订 单 输 入 第 四 章 : 开 仓 部 位

目 录 第 一 章 : 登 陆 平 台 概 述 登 陆 平 台 的 步 骤 第 二 章 : 免 费 实 习 账 号 概 述 创 建 实 习 账 号 第 三 章 : 商 品 价 格 概 述 查 看 价 格 选 择 图 表 快 速 开 立 订 单 详 细 订 单 输 入 第 四 章 : 开 仓 部 位 流 动 交 易 平 台 Ipad 和 Android 平 板 电 脑 使 用 说 明 ipad 是 Apple Inc. 的 商 标, 已 于 美 国 及 其 他 国 家 注 册 Android 乃 Google Inc. 的 商 标 目 录 第 一 章 : 登 陆 平 台 概 述 登 陆 平 台 的 步 骤 第 二 章 : 免 费 实 习 账 号 概 述 创 建 实 习 账 号 第 三 章 : 商

More information

张 荣 芳 中 山 大 学 历 史 系 广 东 广 州 张 荣 芳 男 广 东 廉 江 人 中 山 大 学 历 史 系 教 授 博 士 生 导 师 我 们 要 打 破 以 前 学 术 界 上 的 一 切 偶 像 以 前 学 术 界 的 一 切 成 见 屏 除 我 们 要 实 地 搜 罗 材 料 到 民 众 中 寻 方 言 到 古 文 化 的 遗 址 去 发 掘 到 各 种 的 人 间 社 会 去

More information

党建评估

党建评估 Word 电 使 影 用 人 方 我 法 隔 与 天 技 海 巧 报 主 要 内 容 1. Word 使 用 时 出 现 的 问 题 2. 问 题 解 析 3. Word 模 板 的 使 用 4. Word 使 用 时 的 技 巧 1 问 题 在 写 毕 业 论 文 的 时 候 需 要 清 楚 学 位 论 文 规 定 论 文 装 订 相 关 下 载 http://library.bfa.edu.cn/downloads1.html

More information

标题

标题 甘 肃 政 务 服 务 网 三 张 清 单 录 入 审 核 发 布 人 员 操 作 手 册 甘 肃 省 人 民 政 府 办 公 厅 2015 年 6 月 目 录 三 张 清 单 录 入 审 核 发 布 总 体 介 绍 3 页 权 责 清 单 信 息 录 入 初 审 终 审 和 发 布 16 页 公 共 服 务 事 项 信 息 录 入 初 审 终 审 和 发 布 38 页 省 政 府 共 性 权 责

More information

 编号:

 编号: 编 号 : 企 业 内 高 技 能 人 才 培 养 评 价 实 施 方 案 ( 仅 适 用 于 企 业 特 有 行 业 特 有 工 种 ) 实 施 单 位 ( 公 章 ) 申 报 日 期 年 _ 月 日 1 企 业 内 高 技 能 人 才 培 养 评 价 项 目 实 施 方 案 申 报 表 项 目 名 称 等 级 项 目 性 质 课 时 申 报 单 位 联 系 人 通 讯 地 址 电 话 手 机 电

More information

<4D6963726F736F667420576F7264202D20D3A5D2EDC6DABBF5D6FACAD6CFB5CDB356312E302DD3C3BBA7CAB9D3C3CBB5C3F7CAE9>

<4D6963726F736F667420576F7264202D20D3A5D2EDC6DABBF5D6FACAD6CFB5CDB356312E302DD3C3BBA7CAB9D3C3CBB5C3F7CAE9> 上 海 柔 为 信 息 技 术 有 限 公 司 - 鹰 翼 期 货 助 手 系 统 V1.0 1 1. 系 统 介 绍 鹰 翼 期 货 助 手 系 统 用 户 使 用 说 明 书 鹰 翼 期 货 助 手 系 统 是 用 于 进 行 期 货 交 易 的 系 统, 该 系 统 除 了 期 货 交 易 所 需 的 订 阅 行 情, 查 看 账 号 资 金 委 托 持 仓 成 交 等, 进 行 手 工 委

More information

幻灯片 1

幻灯片 1 2013 年 4 月 一. 准 备 工 作 5. 脚 注 尾 注 参 考 文 献 1. 格 式 要 求 6. 页 码 页 眉 ( 分 节 分 页 2. 保 存 和 备 份 页 眉 页 脚 ) 3. 建 立 Word 文 档 7. 生 成 目 录 4. Word 版 本 四. Word 其 他 技 巧 二. Word 2007 简 介 1. 批 注 与 修 订 三. Word 长 文 档 基 本 应

More information

øÕªß∂À≤Ÿ◊˜ ÷≤·

øÕªß∂À≤Ÿ◊˜ ÷≤· 用 户 使 用 手 册 ( 版 本 号 :4.0) 目 录 第 一 章 软 件 安 装... 1 第 二 章 软 件 的 运 行... 4 第 三 章 新 建 文 档... 7 3.1 第 一 部 分 简 表... 7 3.1.1 基 本 信 息... 7 3.1.2 从 事 专 业 关 键 词... 8 3.1.3 教 育 经 历... 8 3.1.4 工 作 经 历... 9 3.1.5 教 育

More information

珠江钢琴股东大会

珠江钢琴股东大会 证 券 代 码 :002678 证 券 简 称 : 珠 江 钢 琴 公 告 编 号 :2015-038 广 州 珠 江 钢 琴 集 团 股 份 有 限 公 司 2015 年 年 度 股 东 大 会 决 议 公 告 本 公 司 及 董 事 会 全 体 成 员 保 证 信 息 披 露 的 内 容 真 实 准 确 完 整, 没 有 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏 特 别 提 示 :

More information

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论 李 伟 李 庆 祥 江 志 红 使 用 插 值 方 法 对 已 经 过 质 量 控 制 和 均 一 化 的 年 月 年 月 中 国 全 部 基 本 基 准 站 气 温 资 料 逐 月 进 行 空 间 插 值 通 过 站 点 的 实 际 序 列 与 插 值 后 格 点 序 列 进 行 比 较 针 对 相 关 系 数 和 线 性 趋 势 等 多 个 量 来 检 验 方 法 对 气 候 资 料 插 值 的

More information

上海证券交易所会议纪要

上海证券交易所会议纪要 附 件 上 海 市 场 首 次 公 开 发 行 股 票 网 下 发 行 实 施 细 则 第 一 章 总 则 第 一 条 为 规 范 拟 在 上 海 证 券 交 易 所 ( 以 下 简 称 上 交 所 ) 上 市 的 公 司 首 次 公 开 发 行 股 票 网 下 发 行 业 务, 提 高 首 次 公 开 发 行 股 票 网 下 申 购 及 资 金 结 算 效 率, 根 据 证 券 发 行 与 承 销

More information

1600 1000 40 50 2030 2000 采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

1600 1000 40 50 2030 2000 采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2 简 略 版 本 :2015 3 10 2016 2021 全 球 卫 生 部 门 病 毒 性 肝 炎 战 略 2016 2021 2015 3 12 2012 2010 2014 2015 2016 2021 140 55% 35% 5 15% 5 20% 2.4 1.3 1.5 1 1600 1000 40 50 2030 2000 采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路

More information

2) 注 册 内 容 填 写, 阅 读 注 册 协 议, 完 成 注 册 字 段 标 示 有 符 号 的, 为 下 拉 选 择,* 为 必 填 项 2. 厦 钨 B2B 加 入 线 上 供 应 商 申 请 1) 系 统 显 示 已 注 册 用 户 信 息, 可 打 开 左 列 供 应 商 管 理 条

2) 注 册 内 容 填 写, 阅 读 注 册 协 议, 完 成 注 册 字 段 标 示 有 符 号 的, 为 下 拉 选 择,* 为 必 填 项 2. 厦 钨 B2B 加 入 线 上 供 应 商 申 请 1) 系 统 显 示 已 注 册 用 户 信 息, 可 打 开 左 列 供 应 商 管 理 条 厦 钨 供 应 链 平 台 注 册 报 价 操 作 手 册 目 录 一 新 厂 商 办 理 线 上 注 册 申 请... 1 1. 厦 门 钨 业 B2B 注 册... 1 2. 厦 钨 B2B 加 入 线 上 供 应 商 申 请... 2 二 登 陆 厂 商 注 册 用 户 及 子 用 户 报 价 时 登 陆 平 台... 4 三 密 码 找 回 -- 用 于 厂 商 注 册 用 户 的 密 码

More information

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学 1 安 排 组 织 全 国 网 络 统 考 九 月 批 次 网 上 考 前 辅 导 第 一 学 期 第 一 周 统 考 考 前 半 个 月 2 下 发 全 国 网 络 统 考 九 月 批 次 准 考 证 第 一 学 期 第 一 周 导 出 下 半 年 成 人 本 科 学 士 学 位 英 语 统 一 考 试 报 考 3 信 息 第 一 学 期 第 一 周 4 教 学 计 划 和 考 试 计 划 上 网,

More information

第二讲 数列

第二讲   数列 Togisu XueD Persolized Eduio Developme Ceer 高 考 中 不 等 式 问 题 的 解 决 方 法 通 润 达 久 王 力 前 言 : 近 年 来 不 等 式 问 题 正 越 来 越 多 的 出 现 在 调 研 题 和 高 考 试 题 中 而 且 大 多 出 现 在 江 苏 高 考 的 填 空 压 轴 题 中 是 高 考 考 察 的 重 点 和 难 点 由 于

More information

科 学 出 版 社 科 学 出 版 社 前 言 本 书 是 针 对 普 通 高 等 院 校 经 济 类 和 工 商 管 理 类 本 科 专 业 财 务 管 理 学 的 教 学 需 求, 结 合 教 育 部 经 济 管 理 类 本 科 财 务 管 理 学 课 程 教 学 大 纲 编 写 而 成 的 本 书 执 笔 者 都 是 长 期 工 作 在 财 务 管 理 教 学 一 线 的 专 业 教 师,

More information

超 级 玛 丽 JAVA 小 游 戏 测 试 报 告 1. 导 言 1.1 编 写 目 的 该 文 档 的 目 的 是 描 述 超 级 玛 丽 JAVA 小 游 戏 的 系 统 测 试 的 总 结 报 告, 其 主 要 内 容 包 括 : 系 统 环 境 的 介 绍 功 能 的 实 现 的 测 试

超 级 玛 丽 JAVA 小 游 戏 测 试 报 告 1. 导 言 1.1 编 写 目 的 该 文 档 的 目 的 是 描 述 超 级 玛 丽 JAVA 小 游 戏 的 系 统 测 试 的 总 结 报 告, 其 主 要 内 容 包 括 : 系 统 环 境 的 介 绍 功 能 的 实 现 的 测 试 超 级 玛 丽 游 戏 测 试 报 告 目 录 1. 导 言... 2 1.1 编 写 目 的... 2 1.2 项 目 范 围... 2 1.3 参 考 资 料... 2 1.4 缩 写 说 明... 2 1.5 术 语 定 义... 2 1.6 版 本 更 新 信 息... 3 2. 测 试 设 计... 3 2.1 测 试 要 点... 3 2.2 测 试 时 间 地 点 人 员... 3 2.3

More information

2 2015 年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公

2 2015 年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公 证 券 代 码 :300017 证 券 简 称 : 网 宿 科 技 公 告 编 号 :2016-053 网 宿 科 技 股 份 有 限 公 司 关 于 调 整 公 司 2015 年 股 票 期 权 激 励 计 划 激 励 对 象 股 票 期 权 数 量 和 行 权 价 格 的 公 告 本 公 司 及 董 事 会 全 体 成 员 保 证 公 告 内 容 真 实 准 确 和 完 整, 没 有 虚 假 记

More information

第 9 章 如 果 打 印 机 通 过 FireWire 连 接, 则 HP 建 议 使 用 FireWire 模 块 添 加 打 印 机, 以 充 分 利 用 FireWire 打 印 的 各 项 功 能, 并 且 仅 使 用 IP over Firewire 访 问 打 印 机 的 内 嵌 式

第 9 章 如 果 打 印 机 通 过 FireWire 连 接, 则 HP 建 议 使 用 FireWire 模 块 添 加 打 印 机, 以 充 分 利 用 FireWire 打 印 的 各 项 功 能, 并 且 仅 使 用 IP over Firewire 访 问 打 印 机 的 内 嵌 式 9 如 何 访 问 内 嵌 式 Web 服 务 器? 内 嵌 式 Web 服 务 器 允 许 您 使 用 运 行 在 任 意 计 算 机 上 的 普 通 Web 浏 览 器 远 程 管 理 打 印 机 和 打 印 作 业 注 意 要 使 用 内 嵌 式 Web 服 务 器, 打 印 机 必 须 是 TCP/IP 连 接 如 果 您 的 打 印 机 是 Appletalk Novell 连 接 或 非

More information

Template BR_Rec_2005.dot

Template BR_Rec_2005.dot ITU-R BT.1789 建 议 书 1 ITU-R BT.1789 建 议 书 在 分 组 视 频 传 输 中 利 用 传 输 误 码 信 息 重 建 接 收 视 频 的 方 法 (ITU-R 44/6 和 ITU-R 109/6 课 题 ) (2007 年 ) 范 围 本 建 议 书 对 业 务 提 供 商 重 建 接 收 视 频 的 方 法 做 了 详 细 介 绍, 以 便 利 用 传 输

More information

第2部分 操作系统实验

第2部分  操作系统实验 第 2 部 分 操 作 系 统 实 验 实 验 1 Windows XP 的 基 本 操 作 一 实 验 目 的 1. 掌 握 Windows XP 的 启 动 和 退 出 2. 了 解 Windows XP 的 桌 面 组 成 3. 掌 握 窗 口 基 本 操 作 和 菜 单 的 操 作 方 法 4. 掌 握 中 文 输 入 法 的 选 择 5. 掌 握 Windows 帮 助 信 息 的 使 用

More information

安达发SYS系统管理用户操作手册.doc

安达发SYS系统管理用户操作手册.doc 安 达 发 SYS 系 统 管 理 用 户 操 作 手 册 7.0 版 安 达 发 公 司 版 权 所 有 网 址 :www.andafa.com 第 1 页 共 47 页 目 录 一 系 统 简 介...4 二 功 能 说 明...5 2.1 多 语 言 管 理 器...5 2.1.1 新 增 编 辑...5 2.2 自 定 义 语 言 管 理 器...6 2.2.1 新 增 编 辑...6 2.3

More information

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc - 1 - - 2 - 附 件 全 国 建 筑 市 场 注 册 执 业 人 员 不 良 记 录 认 定 标 准 ( 试 行 ) 说 明 为 了 完 善 建 筑 市 场 注 册 执 业 人 员 诚 信 体 系 建 设, 规 范 执 业 和 市 场 秩 序, 依 据 相 关 法 律 法 规 和 部 门 规 章, 根 据 各 行 业 特 点, 我 部 制 订 了 全 国 建 筑 市 场 注 册 执 业 人

More information

《深圳市场首次公开发行股票网上按市值申购实施办法》.doc

《深圳市场首次公开发行股票网上按市值申购实施办法》.doc 深 圳 市 场 首 次 公 开 发 行 股 票 网 上 按 市 值 申 购 实 施 办 法 深 证 上 2014 158 号 第 一 章 总 则 第 一 条 为 规 范 投 资 者 按 持 有 的 深 圳 市 场 非 限 售 A 股 股 份 市 值 ( 以 下 简 称 市 值 ) 参 与 首 次 公 开 发 行 股 票 网 上 资 金 申 购 业 务, 根 据 证 券 发 行 与 承 销 管 理 办

More information

<4D6963726F736F667420576F7264202D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE32303132C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

<4D6963726F736F667420576F7264202D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE32303132C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378> 上 海 德 载 中 怡 律 师 事 务 所 关 于 昂 华 ( 上 海 ) 自 动 化 工 程 股 份 有 限 公 司 二 〇 一 二 年 年 度 股 东 大 会 法 律 意 见 书 上 海 德 载 中 怡 律 师 事 务 所 上 海 市 银 城 中 路 168 号 上 海 银 行 大 厦 1705 室 (200120) 电 话 :8621-5012 2258 传 真 :8621-5012 2257

More information

电信系教学大纲的基本规范

电信系教学大纲的基本规范 兰 州 大 学 信 息 科 学 与 工 程 学 院 Java 语 言 程 序 设 计 实 验 教 学 大 纲 一. 课 程 基 本 信 息 : 实 验 课 程 编 号 : 课 程 名 称 : Java 语 言 程 序 设 计 实 验 课 课 程 性 质 : 非 单 列 实 验 课 课 程 类 型 : 必 做 课 程 负 责 人 : 马 俊 等 适 用 专 业 : 计 算 机 科 学 与 技 术 专

More information

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc)

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc) 川 教 考 院 2013 21 号 全 国 计 算 机 等 级 考 试 调 整 方 案 2011 年 7 月, 教 育 部 考 试 中 心 组 织 召 开 了 第 五 届 全 国 计 算 机 等 级 考 试 NCRE 考 委 会 会 议, 会 议 完 成 NCRE 考 委 会 换 届 选 举, 并 确 定 了 下 一 步 改 革 和 发 展 的 目 标 在 新 的 历 史 时 期,NCRE 将 以

More information

中国石化油品销售企业CRM调研报告

中国石化油品销售企业CRM调研报告 中 国 石 化 化 工 销 售 CRM 电 子 超 市 客 户 操 作 手 册 编 写 : CRM 项 目 组 适 用 范 围 : 化 工 销 售 有 限 公 司 华 北 分 公 司 版 本 : 1.1 日 期 : 2015.04 目 录 1. 会 员 服 务... 3 1.1 会 员 注 册... 3 1.2 会 员 登 陆... 6 1.3 用 户 信 息... 6 1.4 销 售 中 心...

More information

moza_ctc_64021.pdf

moza_ctc_64021.pdf 访 问 CTC 的 多 个 Java 插 件 安 装 目 录 简 介 先 决 条 件 要 求 使 用 的 组 件 规 则 背 景 信 息 多 Java 插 件 版 本 浏 览 器 信 息 Mozilla 安 装 Java 插 件 安 装 与 ONS15454 和 15327 的 JRE 兼 容 性 J2SE JRE 设 置 J2SE JRE 版 本 2 J2SE JRE 版 本 3.1 J2SE JRE

More information

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起 县 乡 两 级 的 政 治 体 制 改 革 如 何 建 立 民 主 的 合 作 新 体 制 县 乡 人 大 运 行 机 制 研 究 课 题 组 引 言 一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起 二 密 县 在 周 初 是 两 个 小 国 密 国 和 郐 国 三 密 县 的 第 一 任 县 令 卓 茂 四 明 清 时 代 的 密 县 二 从 集 中 的 动 员 体

More information

Microsoft Word - 文件汇编.doc

Microsoft Word - 文件汇编.doc 北 京 市 中 医 管 理 局 二 一 五 年 四 月 ... 1... 18 2015... 30 京 中 医 政 字 [2014]160 号 1 2 一 充 分 认 识 中 医 健 康 乡 村 建 设 工 作 的 重 要 意 义 二 建 立 健 全 工 作 保 障 机 制 2014 12 15 三 做 好 工 作 启 动 的 准 备 事 宜 1 2014 12 15 5-10 2014 12 15

More information

Microsoft Word - 内容提要.doc

Microsoft Word - 内容提要.doc InDesign CS6 入 门 知 识 本 章 介 绍 InDesign CS6 中 文 版 的 操 作 界 面, 对 工 具 面 板 面 板 文 件 视 图 和 窗 口 的 基 本 操 作 等 进 行 详 细 的 讲 解 通 过 本 章 的 学 习, 读 者 可 以 了 解 并 掌 握 InDesign CS6 的 基 本 功 能, 为 进 一 步 学 习 InDesign CS6 打 下 坚

More information

2006年顺德区高中阶段学校招生录取分数线

2006年顺德区高中阶段学校招生录取分数线 2014 年 顺 德 区 高 中 阶 段 学 校 考 试 提 前 批 第 一 批 第 二 批 学 校 录 取 根 据 佛 山 市 办 提 供 的 考 生 数 据, 现 将 我 区 2014 年 高 中 阶 段 学 校 考 试 提 前 批 第 一 批 第 二 批 学 校 的 录 取 公 布 如 下 : 一 顺 德 一 中 录 取 分 第 1 志 愿, 总 分 585, 综 合 表 现 评 价 A, 考

More information

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位 新 股 网 上 网 下 发 行 实 施 细 则 问 答 上 交 所 2016-01-05 一 网 上 发 行 业 务 问 答 1. 本 次 修 改 的 主 要 内 容 是 什 么? 答 : 本 次 修 改 的 主 要 内 容 包 括 : 一 是 取 消 了 投 资 者 在 申 购 委 托 时 应 全 额 缴 纳 申 购 资 金 的 规 定, 明 确 了 投 资 者 应 根 据 最 终 确 定 的 发

More information

用节点法和网孔法进行电路分析

用节点法和网孔法进行电路分析 运 用 节 点 法 和 网 孔 法 进 行 电 路 分 析 众 所 周 知, 运 用 基 尔 霍 夫 定 律 和 欧 姆 定 律, 我 们 可 以 对 任 何 一 个 电 路 进 行 分 析, 以 确 定 其 运 行 条 件 ( 电 流 和 电 压 值 ) 一 般 电 路 分 析 的 难 点 在 于 用 最 少 的 联 立 方 程 描 述 电 路 的 运 行 特 性 在 这 一 讲 里, 我 们 将

More information

证券代码:000066 证券简称:长城电脑 公告编号:2014-000

证券代码:000066         证券简称:长城电脑        公告编号:2014-000 证 券 代 码 :000066 证 券 简 称 : 长 城 电 脑 公 告 编 号 :2016-092 中 国 长 城 计 算 机 深 圳 股 份 有 限 公 司 2016 年 度 第 三 次 临 时 股 东 大 会 决 议 公 告 本 公 司 及 其 董 事 会 全 体 成 员 保 证 信 息 披 露 内 容 的 真 实 准 确 完 整, 没 有 虚 假 记 载 误 导 性 陈 述 或 重 大 遗

More information

国际财务报告准则第13号——公允价值计量

国际财务报告准则第13号——公允价值计量 附 件 : 企 业 会 计 准 则 第 39 号 公 允 价 值 计 量 第 一 章 总 则 第 一 条 为 了 规 范 公 允 价 值 的 计 量 和 披 露, 根 据 企 业 会 计 准 则 基 本 准 则, 制 定 本 准 则 第 二 条 公 允 价 值, 是 指 市 场 参 与 者 在 计 量 日 发 生 的 有 序 交 易 中, 出 售 一 项 资 产 所 能 收 到 或 者 转 移 一

More information

第6章 PowerPoint 演示文稿制作软件

第6章 PowerPoint 演示文稿制作软件 第 6 章 PowerPoint 演 示 文 稿 制 作 软 件 教 学 目 标 和 要 求 1 掌 握 利 用 PowerPoint 2003 创 建 演 示 文 稿 的 基 本 过 程 ; 2 掌 握 演 示 文 稿 的 基 本 编 辑 和 操 作 技 巧 3 掌 握 演 示 文 稿 的 动 画 设 置 ; 4 理 解 超 链 接 的 概 念, 掌 握 演 示 文 稿 中 超 链 接 的 应 用

More information

合 并 计 算 配 售 对 象 持 有 多 个 证 券 账 户 的, 多 个 证 券 账 户 市 值 合 并 计 算 确 认 多 个 证 券 账 户 为 同 一 配 售 对 象 持 有 的 原 则 为 证 券 账 户 注 册 资 料 中 的 账 户 持 有 人 名 称 有 效 身 份 证 明 文 件

合 并 计 算 配 售 对 象 持 有 多 个 证 券 账 户 的, 多 个 证 券 账 户 市 值 合 并 计 算 确 认 多 个 证 券 账 户 为 同 一 配 售 对 象 持 有 的 原 则 为 证 券 账 户 注 册 资 料 中 的 账 户 持 有 人 名 称 有 效 身 份 证 明 文 件 深 圳 市 场 首 次 公 开 发 行 股 票 网 下 发 行 实 施 细 则 ( 征 求 意 见 稿 ) 第 一 章 总 则 第 一 条 为 规 范 深 圳 市 场 首 次 公 开 发 行 股 票 网 下 发 行 行 为, 根 据 证 券 发 行 与 承 销 管 理 办 法 及 相 关 规 定, 制 定 本 细 则 第 二 条 本 细 则 所 称 网 下 发 行 是 指 首 次 公 开 发 行 股

More information