1、Visual C#.NET清 华 大 学 出 版 社第 1 章 常 用 控 件 使 用 详 解控 件 是 Visual C#编 程 的 基 础 , 也 是 重 要 的 可 视 化 编 程 工 具 。 在 Windows 对 话 框 中 经 常 会 遇 到 按 钮 、 列 表 框 这 样 的 控 件 , Microsoft 将 这 些 流 行 控 件 作 为 Windows 95/98/2000/XP 操 作 系 统 的 一 部 分 , 使 Windows 程 序 员 不 必 再 白 手 起 家 来 创 建 这 些 控 件 。Control 类 是 所 有 窗 体 控 件 ( 包 括 窗 体 )
2、 的 基 类 , 因 此 它 的 属 性 、 方 法 和 事 件 也 适 用 于 所 有 窗 体 控 件 ( 除 非 被 重 载 ) 。 需 要 注 意 的 是 , 控 件 类 中 定 义 的 属 性 和 属 性 窗 口 中 显 示 的 属 性 名 称 即 属 性 值 选 项 并 不 一 定 完 全 相 同 。 例 如 , 控 件 类 中 定 义 的 TextAlign 属 性 , 在 属 性 窗 口 中 将 显 示 为 Text Align。 但 这 两 者 之 间 的 关 系 还 是 显 而 易 见 的 。 因 此 本 章 虽 然 主 要 介 绍 控 件 类 中 的 属 性 定 义 形 式
3、 , 但 读 者 仍 然 能 容 易 地 在 属 性 窗 口 中 找 到 对 应 项 。 本 章 中 , 将 向 大 家 介 绍 Visual C#中 常 用 控 件 的 使 用 方 法 。本 章 要 点 : 控 件 基 础 功 能 支 持 常 用 控 件 的 属 性 、 方 法 和 事 件 常 用 控 件 的 使 用 方 法 窗 体 控 件 集 合 的 管 理1.1 控 件 基 础 功 能 支 持Control 类 定 义 了 控 件 ( 具 有 可 视 化 外 观 的 组 件 ) 的 基 类 。 本 类 实 现 了 类 需 要 向 用 户 显 示 的 基 本 功 能 。 例 如 , 处 理
4、 键 盘 和 鼠 标 输 入 ; 管 理 消 息 发 送 和 安 全 ; 定 义 控 件 的 位 置 和 大 小( 虽 然 没 有 实 现 绘 制 ) ; 提 供 Windows 句 柄 ( hWnd) 等 。 Control 类 的 构 造 的 函 数 定 义 如 下 :public Control();public Control(string text);public Control(Control parent,string text);public Control(string text,int left,int top,int width,int height);public Co
5、ntrol(Control parent,string text,int left,int top,int width,int height);参 数 : text控 件 文 本 。 parent本 控 件 的 父 控 件 。left在 控 件 容 器 中 , 控 件 左 上 角 的 x 坐 标 ( 以 像 素 为 单 位 ) 。Visual C#高 级 编 程 - 2 -top在 控 件 容 器 中 , 控 件 左 上 角 的 y 坐 标 ( 以 像 素 为 单 位 ) 。 width控 件 的 宽 度 ( 以 像 素 为 单 位 ) 。 height控 件 的 高 度 ( 以 像 素 为
6、单 位 ) 。Control 类 是 Windows 窗 体 应 用 程 序 中 使 用 的 所 有 控 件 的 基 类 。 由 于 该 类 一 般 不 用 于 创 建 实 例 , 因 此 构 造 函 数 通 常 由 派 生 类 调 用 。1 . 1 . 1 基 础 控 件 属 性Control 类 中 定 义 的 基 础 控 件 属 性 如 下 ( 需 要 注 意 的 是 , 这 些 属 性 与 其 属 性 窗 口 中 的 名 称 并 不 完 全 一 致 , 但 期 间 依 然 存 在 明 显 的 对 应 关 系 , 例 如 AllowDrop 属 性 对 应 于 Allow Drop) :
7、AllowDrop 属 性使 用 AllowDrop 属 性 , 以 确 定 控 件 是 否 可 接 受 用 户 拖 拽 于 其 中 的 数 据 。 如 果 本 控 件 允 许 拖 拽 , 则 本 属 性 的 值 为 true, 否 则 为 fasle( 默 认 值 ) 。 对 于 RichTextBox 控 件 , 本 属 性 总 是 为 false。 因 为 , 该 控 件 不 允 许 执 行 拖 拽 操 作 。Anchor 属 性使 用 Anchor 属 性 , 以 获 取 或 设 置 控 件 的 哪 个 边 缘 停 靠 在 容 器 边 缘 。 本 属 性 的 值 为AnchorStyl
8、es 枚 举 值 之 一 。BackColor 属 性使 用 BackColor 属 性 , 以 获 取 或 设 置 本 控 件 的 背 景 颜 色 。 本 属 性 为 环 境 属 性 , 因 此 总 是 返 回 非 空 值 。BackgroundImage 属 性使 用 BackgroundImage 属 性 , 以 获 取 或 设 置 控 件 中 显 示 的 背 景 图 片 。BindingContext 属 性使 用 BindingContext 属 性 , 以 获 取 或 设 置 对 象 的 BindingContext。 控 件 的 BindingContext 对 象 用 于 为
9、其 中 包 含 的 所 有 数 据 绑 定 控 件 返 回 一 个 BindingManagerBase 对 象 。BindingManagerBase 对 象 使 绑 定 到 同 一 数 据 源 的 所 有 控 件 保 持 同 步 。 例 如 , 通 过 设 置 该 对 象 的 Position 属 性 , 就 指 定 了 所 有 数 据 绑 定 控 件 指 向 的 底 层 列 表 项 。Bottom 属 性使 用 Bottom 属 性 , 以 获 取 本 控 件 下 边 缘 与 容 器 客 户 区 上 边 缘 之 间 底 距 离 。 本 属 性 的 值 等 于 Top 属 性 与 Heig
10、ht 属 性 值 之 和 。Bounds 属 性使 用 Bounds 属 性 , 以 获 取 或 设 置 本 控 件 的 边 界 矩 形 。CanFocus 属 性使 用 CanFocus 属 性 , 以 确 定 控 件 是 否 能 接 收 焦 点 。 如 果 控 件 可 以 接 收 焦 点 , 则 本 属 性 的 值 为 true, 否 则 为 fasle。 要 是 控 件 能 接 收 输 入 焦 点 , 控 件 必 须 具 有 句 柄 , 并 且 其 Visible 和 Enabled 属 性 必 须 为 true。CanSelect 属 性使 用 CanSelect 属 性 , 以 确
11、定 本 控 件 是 否 可 被 选 择 。 如 果 控 件 可 被 选 择 , 则 本 属 性 的 值- 3 - 第 1 章 常 用 控 件 使 用 详 解为 true, 否 则 为 false。 如 果 控 件 的 ControlStyles.Selectable 被 设 置 为 true, 并 且 它 的 容 器 控 件 和 所 有 父 控 件 都 可 见 并 且 被 启 用 , 则 本 属 性 将 返 回 true。下 面 给 出 CanSelect 属 性 为 false 的 Windows 窗 体 控 件 、 Panel、 GroupBox、 PictureBox、 Progress
12、Bar、 Splitter、 Label、 LinkLabel( 当 控 件 中 不 存 在 链 接 时 ) 。 需 要 注 意 的 是 , 派 生 自 这 些 控 件 的 控 件 也 不 能 被 选 择 。Capture 属 性使用 Capture 属 性 , 以 控 件 是 否 被 鼠 标 捕 获 。 如 果 控 件 被 鼠 标 捕 获 , 则 本 属 性 的 值 为 true, 否 则 为 fasle( 默 认 值 ) 。 当 控 件 被 鼠 标 捕 获 后 , 它 将 接 收 鼠 标 输 入 , 而 无 论 光 标 是 否 处 于 它 的 边 界 内 。CausesValidation
13、 属 性使 用 CausesValidation 属 性 , 以 确 定 进 入 控 件 是 否 会 导 致 所 有 需 要 校 验 的 控 件 都 被 校 验 。 如 果 进 入 控 件 会 导 致 所 有 需 要 校 验 的 控 件 都 被 校 验 , 则 本 属 性 的 值 为 true, 否 则 为 false( 默 认 值 ) 。对 于 “帮 助 ”按 钮 等 控 件 , 一 般 都 将 本 属 性 设 置 为 fasle。ClientRectangle 属 性使 用 ClientRectangle 属 性 , 以 获 取 代 表 控 件 客 户 区 的 矩 形 。 由 于 客 户
14、坐 标 是 相 对 于 控 件 客 户 区 的 左 上 角 的 , 因 此 由 本 属 性 返 回 的 矩 形 左 上 角 坐 标 为 (0,0)。 在 使 用 .NET 框 架 工 具 绘 制 控 件 表 面 时 , 需 要 使 用 本 属 性 以 确 定 绘 制 区 域 。ClientSize 属 性使 用 ClientSize 属 性 , 以 获 取 控 件 客 户 区 的 宽 度 和 高 度 。 返 回 的 Size 对 象 的 Width 属 性 代 表 客 户 区 的 宽 度 , Height 属 性 代 表 客 户 区 的 高 度 。CompanyName 属 性使 用 Comp
15、anyName 属 性 , 以 获 取 包 含 控 件 的 应 用 程 序 的 创 建 者 ( 公 司 ) 名 。ContainsFocus 属 性使 用 ContainsFocus 属 性 , 以 确 定 控 件 或 其 子 控 件 当 前 是 否 具 有 焦 点 。 如 果 控 件 或 其 子 控 件 当 前 具 有 焦 点 , 则 本 属 性 的 只 为 true, 否 则 为 false。 要 确 定 控 件 本 身 是 否 具 有 焦 点 , 则 应 使 用 Focusd 属 性 。 要 给 予 控 件 输 入 焦 点 , 则 应 使 用 Focus 或 Select 方 法 。Co
16、ntextMenu 属 性使 用 ContextMenu 属 性 , 以 获 取 或 设 置 与 本 控 件 相 关 的 快 捷 菜 单 。Controls 属 性使 用 Controls 属 性 , 以 获 取 或 设 置 控 件 中 包 含 的 控 件 集 合 。Created 属 性使 用 Created 属 性 , 以 确 定 控 件 是 否 已 被 创 建 。 如 果 控 件 已 被 创 建 , 则 本 属 性 的 值 为true, 否 则 为 fasle。CreateParams 属 性使 用 CreateParams 属 性 , 以 获 取 创 建 本 控 件 时 使 用 的 参
17、 数 。 本 属 性 的 值 为 控 件 句 柄 被 创 建 时 包 含 必 需 创 建 参 数 的 CreateParams 对 象 。 当 在 派 生 类 中 重 载 CreateParams 时 , 应 确 保 通 过 创 建 基 类 的 CreateParams 实 例 来 扩 展 CreateParams 对 象 添 加 或 修 改 属 性 值 。Cursor 属 性使 用 Cursor 属 性 , 以 获 取 或 设 置 当 用 户 将 鼠 标 移 动 到 控 件 上 方 时 光 标 的 形 状 。Visual C#高 级 编 程 - 4 -DataBindings 属 性使 用
18、DataBindings 属 性 , 以 获 取 控 件 的 数 据 绑 定 。 本 属 性 的 值 为 包 含 控 件 的 Binding 对 象 的 ControlBindingsCollection。 通 过 将 Binding 对 象 加 入 到 本 集 合 中 , 可 以 将 控 件 的 任 何 属 性 绑 定 到 对 象 属 性 上 。DefaultBackColor 属 性使 用 DefaultBackColor 属 性 , 以 获 取 控 件 的 默 认 背 景 色 。 本 属 性 的 默 认 值 为 SystemColors.Control。 但 在 派 生 类 中 可 指
19、定 其 他 默 认 颜 色 。DefaultFont 属 性使 用 DefaultFont 属 性 , 以 获 取 控 件 的 默 认 字 体 。 本 属 性 的 值 为 控 件 的 默 认 背 景 字 体 , 其 默 认 值 为 8 点 字 体 。 如 果 系 统 未 安 装 指 定 字 体 , 则 控 件 试 图 使 用 如 下 字 体 之 一 : CordiaUPC、 MS PGothic、 SimSun、 Gulim、 MingLiU 和 Arial。DefaultForeColor 属 性使 用 DefaultForeColor 属 性 , 以 获 取 控 件 的 默 认 前 景 色
20、 。 本 属 性 的 默 认 值 为SystemColors.ControlText。DefaultImeMode 属 性使 用 DefaultImeMode 属 性 , 以 获 取 本 控 件 支 持 的 默 认 输 入 法 编 辑 器 ( IME, Input Method Editor) 。 在 Control 类 中 , 本 属 性 将 总 是 返 回 ImeMode.Inherit。 这 表 示 指 定 的 IME 模 式 继 承 自 父 控 件 。DefaultSize 属 性使 用 DefaultSize 属 性 , 以 获 取 控 件 的 默 认 尺 寸 。DisplayRec
21、tangle 属 性使 用 DisplayRectangle 属 性 , 以 获 取 代 表 控 件 显 示 区 域 的 矩 形 。 对 于 基 础 控 件 类 , 本 属 性 等 于 客 户 矩 形 。 然 而 , 派 生 控 件 可 能 会 修 改 客 户 区 域 , 使 其 与 显 示 区 域 具 有 不 同 的 值 。Disposing 属 性使 用 Disposing 属 性 , 以 确 定 控 件 是 否 处 于 清 除 进 程 中 。 如 果 控 件 正 处 于 清 除 进 程 , 则 本 属 性 的 值 为 true, 否 则 为 false。 在 控 件 被 清 除 后 ,
22、它 就 不 能 再 作 为 有 效 的 Windows 控 件 引 用 了 。 虽 然 控 件 实 例 已 被 清 除 , 它 还 将 继 续 存 留 于 内 存 中 , 直 到 冗 码 收 集 器 将 其 删 除 。Dock 属 性使 用 Dock 属 性 , 以 获 取 或 设 置 控 件 停 靠 的 父 容 器 边 界 。 本 属 性 的 值 为 DockStyle 枚 举 值 之 一 , 其 默 认 值 为 None。 控 件 将 被 停 靠 到 父 容 器 中 的 指 定 边 界 。 例 如 , 如 果 将 本 属 性 设 置为 DockStyle.Left, 则 控 件 的 左 边
23、 界 将 被 停 靠 到 其 父 控 件 的 左 边 界 。 此 外 , 控 件 的 停 靠 边 界 还 将 重 置 以 匹 配 容 器 控 件 。Enabled 属 性使用 Enabled 属性,以确定控件是否被启用。如果控件当前被启用,则本属性的值为true, 否 则 为 fasle。Focused 属 性使 用 Focused 属 性 , 以 确 定 控 件 是 否 具 有 输 入 焦 点 。 如 果 控 件 具 有 输 入 焦 点 , 则 本 属 性 的 值 为 true, 否 则 为 false。Font 属 性使 用 Font 属 性 , 以 获 取 或 设 置 控 件 的 当 前
24、 字 体 。- 5 - 第 1 章 常 用 控 件 使 用 详 解FontHeight 属 性使 用 FontHeight 属 性 , 以 获 取 或 设 置 控 件 Font 属 性 的 高 度 。 本 属 性 的 值 为 控 件 字 体 的 像 素 高 度 。ForeColor 属 性使 用 ForeColor 属 性 , 以 获 取 或 设 置 控 件 的 前 景 色 。 本 属 性 的 默 认 值 为 DefaultForeColor。Handle 属 性使 用 Handle 属 性 , 以 获 取 绑 定 到 本 控 件 的 窗 口 句 柄 。HasChildren 属 性使 用 H
25、asChildren 属 性 , 以 确 定 控 件 中 是 否 包 含 子 控 件 。 如 果 控 件 中 包 含 子 控 件 , 则 本 属 性 的 值 为 true, 否 则 为 false。 如 果 控 件 集 合 的 Count 属 性 大 于 0, 则 HasChildren 属 性 将 返 回 true。Height 属 性使 用 Height 属 性 , 以 获 取 本 控 件 的 高 度 。ImeMode 属 性使 用 ImeMode 属 性 , 以 获 取 或 设 置 本 控 件 支 持 的 输 入 方 法 编 辑 器 。InvokeRequired 属 性使 用 Invo
26、keRequired 属 性 , 以 确 定 调 用 本 控 件 的 方 法 时 , 是 否 需 要 激 活 调 用 者 。 如 果 控 件 句 柄 与 方 法 调 用 不 在 同 一 线 程 中 , 则 标 识 应 通 过 激 活 方 法 来 调 用 其 他 方 法 , 此 时 本 属 性 的 值 为 true。Windows 窗 体 的 控 件 被 绑 定 到 指 定 线 程 ( 非 线 程 安 全 ) 。 因 此 , 如 果 从 其 他 线 程 调 用 控 件 方 法 时 , 必 须 使 用 控 件 的 激 活 方 法 , 来 将 调 用 配 置 到 正 确 的 线 程 上 。 本 属
27、性 可 用 于 确 定 是 否 需 要 调 用 激 活 方 法 , 这 当 不 知 道 控 件 属 于 哪 个 线 程 时 尤 其 有 用 。 控 件 有 4 个 方 法 可 由 任 何 线 程 调 用 : Invoke、 BeginInvoke、 EndInvoke 和 CreateGraphics。 对 于 所 有 其 他 方 法 调 用 , 都 应 使 用 激 活 方 法 。IsDisposed 属 性使 用 IsDisposed 属 性 , 以 确 定 控 件 是 否 已 被 清 除 。 如 果 控 件 已 被 清 除 , 则 本 属 性 的 值 为 true, 否 则 为 false
28、。在 控 件 被 清 除 后 , 它 就 不 能 再 作 为 有 效 的 Windows 控 件 引 用 了 。 虽 然 控 件 实 例 已 被 清 除 , 它 还 将 继 续 存 留 于 内 存 中 , 直 到 冗 码 收 集 器 将 其 删 除 。IsHandleCreated 属 性使用 IsHandleCreated 属 性 , 以 确 定 控 件 是 否 有 与 之 相 关 的 句 柄 。 如 果 控 件 有 与 之 相 关 的 句 柄 , 则 本 属 性 的 值 为 true, 否 则 为 false。Left 属 性使 用 Left 属 性 , 以 获 取 本 控 件 左 边 界
29、 的 x 坐 标 ( 以 像 素 为 单 位 ) 。Location 属 性使 用 Location 属 性 , 以 获 取 本 控 件 的 左 上 角 坐 标 ( 相 对 于 其 容 器 的 左 上 角 ) 。ModifierKeys 属 性使 用 ModifierKeys 属 性 , 以 确 定 Shift、 Ctrl 和 Alt 修 饰 符 的 当 前 状 态 。MouseButtons 属 性Visual C#高 级 编 程 - 6 -使 用 MouseButtons 属 性 , 以 确 定 鼠 标 键 的 当 前 状 态 。MousePosition 属 性使 用 MousePosi
30、tion 属 性 , 以 获 取 鼠 标 指 针 的 当 前 位 置 ( 屏 幕 坐 标 ) 。Name 属 性使 用 Name 属 性 , 以 获 取 或 设 置 控 件 的 名 称 。 本 属 性 的 默 认 值 为 空 字 符 串 。 在 运 行 时 , 可 使 用 Name 属 性 引 用 对 象 。 由 于 Name 属 性 为 String 类 型 , 因 此 它 能 用 于 分 支 逻 辑 语 句 中 。Parent 属 性使 用 Parent 属 性 , 以 获 取 或 设 置 本 控 件 的 父 对 象 。ProductName 属 性使 用 ProductName 属 性
31、, 以 获 取 包 含 控 件 的 应 用 程 序 的 产 品 名 。ProductVersion 属 性使 用 ProductVersion 属 性 , 以 获 取 包 含 控 件 的 应 用 程 序 的 版 本 。RecreatingHandle 属 性使 用 RecreatingHandle 属 性 , 以 控 件 是 否 正 在 重 新 创 建 它 的 句 柄 。 如 果 控 件 正 在 重 新 创 建 它 的 句 柄 , 则 本 属 性 的 值 为 true, 否 则 为 false。Region 属 性使 用 Region 属 性 , 以 获 取 或 设 置 与 本 控 件 相 关
32、 的 区 域 ( 椭 圆 或 多 边 形 ) 。 本 属 性 定 义 了 控 件 的 轮 廓 和 边 界 。ResizeRedraw 属 性使 用 ResizeRedraw 属 性 , 以 确 定 控 件 是 否 应 在 重 设 尺 寸 时 被 重 新 绘 制 。 如 果 控 件 在 重 设 尺 寸 时 应 被 重 新 绘 制 , 则 本 属 性 的 值 为 true, 否 则 为 fasle。Right 属 性使 用 Right 属 性 , 以 获 取 控 件 右 边 界 与 其 容 器 左 边 界 之 间 的 距 离 。RightToLeft 属 性使 用 RightToLeft 属 性
33、, 以 获 取 或 设 置 控 件 元 素 的 对 齐 方 式 是 否 能 被 颠 倒 , 从 而 支 持 使 用 从 有 到 左 字 体 的 地 区 。本属性由国际化应用程序使用,以适应以从右到左的顺序书写和阅读的语言。当本属 性 被 设 置 为 RightToLeft.Yes 时 , 包 含 文 本 的 控 件 元 素 将 被 反 向 以 从 右 向 左 显 示 , 例 如 在 使 用 希 伯 来 和 阿 拉 伯 字 体 时 。当 RightToLeft 属 性 被 设 置 为 RightToLeft.Yes 时 , 控 件 元 素 将 可 能 受 到 如 下 影 响 : 垂 直 滚 动
34、条 将 显 示 在 窗 体 、 多 行 文 本 框 等 控 件 的 左 侧 ; 水 平 滚 动 条 中 的 滑 块 出 现 在 最 右 侧 ; 复 选 框 将 显 示 在 与 CheckAlign 属 性 设 置 相 反 的 一 侧 ; 窗 体 标 题 栏 中 的 文 本 将 右 对 齐 显 示 。 不 过 图 标 和 控 件 框 将 依 然 保 持 它 们 的 原 位 ; 列 表 框 、 组 合 框 和 下 拉 控 件 中 的 条 目 将 右 对 齐 ; NumericUpDown 和 DomainUpDown 控 件 的 上 下 按 钮 将 出 现 在 控 件 的 左 侧 ; 菜 单 和
35、菜 单 项 将 右 对 齐 显 示 ; 工 具 栏 按 钮 不 会 受 到 RightToLeft 属 性 的 影 响 ; AxHost 支 持 从 右 到 左 的 对 齐 方 式 ; 然 而 对 ActiveX 控 件 的 影 响 , 则 取 决 于 开 发 者 实 现 的 程 度 。需 要 注 意 的 是 , 当 RightToLeft 属 性 被 设 置 为 RightToLeft.Yes 时 , 控 件 元 素 的 水 平 对 齐 方 式 将 反 向 , 但 对 应 的 属 性 值 却 不 会 改 变 。 例 如 , 在 TextAlign 属 性 为HorizontalAlignme
36、nt.Left TextBox 控 件 中 , 文 本 将 被 右 对 齐 显 示 , 但 是 TextAlign 属 性 的 值 将- 7 - 第 1 章 常 用 控 件 使 用 详 解依 然 为 HorizontalAlignment.Left。 但 是 , 如 果 RightToLeft 属 性 被 设 置 为 RightToLeft.Yes, 而 TextAlign 属 性 被 设 置 为 HorizontalAlignment.Right, 那 么 文 本 将 左 对 齐 显 示 。ShowFocusCues 属 性使 用 ShowFocusCues 属 性 , 以 确 定 用 户
37、界 面 是 否 处 于 显 示 或 隐 藏 焦 点 矩 形 的 状 态 。 如 果 用 户 界 面 处 于 显 示 或 隐 藏 焦 点 矩 形 的 状 态 , 则 本 属 性 的 值 为 true, 否 则 为 false。ShowKeyboardCues 属 性使 用 ShowFocusCues 属 性 , 以 确 定 用 户 界 面 是 否 处 于 显 示 或 隐 藏 键 盘 加 速 建 的 状 态 。 如 果 用 户 界 面 处 于 显 示 或 隐 藏 键 盘 加 速 建 的 状 态 , 则 本 属 性 的 值 为 true, 否 则 为 fasle。Size 属 性使 用 Size 尺
38、 寸 , 以 获 取 控 件 的 宽 度 和 高 度 。TabIndex 属 性使 用 TabIndex 属 性 , 以 获 取 本 控 件 在 容 器 中 的 Tab 键 顺 序 。 Tab 键 索 引 可 以 为 任 意 大 于 或 等 于 0 的 整 数 。 如 果 容 器 中 存 在 多 个 Tab 键 索 引 相 同 的 控 件 , 那 么 将 使 用 z 顺 序 确 定 选 择 控 件 的 顺 序 。TabStop 属 性使 用 TabStop 属 性 , 以 确 定 是 否 能 通 过 Tab 键 使 本 控 件 获 得 焦 点 。 如 果 使 用 Tab 键 能 使 Tab 键
39、 获 得 焦 点 , 则 本 属 性 的 值 为 true, 否 则 为 fasle。Tag 属 性使用 Tag 属 性 , 以 获 取 或 设 置 包 含 与 控 件 相 关 的 数 据 的 对 象 。 本 属 性 的 默 认 值 为 空 引 用 。 可 将 任 意 派 生 自 Object 的 对 象 赋 予 本 属 性 。 如 果 通 过 Windows 窗 体 设 计 器 设 置 本 属 性 , 则 只 能 为 其 赋 予 文 本 。Text 属 性使 用 Text 属 性 , 以 获 取 或 设 置 与 本 控 件 相 关 的 文 本 。Top 属 性使 用 Top 属 性 , 以
40、获 取 控 件 的 顶 坐 标 。TopLevelControl 属 性使 用 TopLevelControl 属 性 , 以 获 取 包 含 当 前 控 件 的 顶 层 控 件 。Visible 属 性使 用 Visible 属 性 , 以 确 定 控 件 是 否 可 见 。 如 果 控 件 可 见 , 则 本 属 性 的 值 为 true, 否 则 为 false。Width 属 性使 用 Width 属 性 , 以 获 取 本 控 件 的 宽 度 。1 . 1 . 2 基 础 控 件 方 法Control 类 中 定 义 的 基 础 控 件 方 法 如 下 :BeginInvoke 方
41、法调 用 BeginInvoke 方 法 , 以 执 行 控 件 基 础 句 柄 所 在 线 程 中 的 指 定 Delegate, 其 定 义 如下 :Visual C#高 级 编 程 - 8 -public IAsyncResult BeginInvoke(Delegate method);public IAsyncResult BeginInvoke(Delegate method,object args);参 数 :methodDelegate 方 法 。args代 表 指 定 方 法 参 数 的 Object 数 组 。 如 果 不 需 要 使 用 参 数 , 则 应 将 本 参 数
42、 设 置 为空 。返 回 值 :代 表 BeginInvoke 操 作 结 果 的 IAsyncResult 接 口 。Delegate 将 被 异 步 调 用 , 而 本 方 法 将 立 即 返 回 。 本 方 法 可 由 任 何 线 程 调 用 , 这 包 括 拥 有控 件 句 柄 的 线 程 。 如 果 控 件 句 柄 不 存 在 , 则 将 在 控 件 层 次 中 向 上 寻 找 , 直 到 找 到 一 个 有 句 柄 的 控 件 或 窗 体 。 如 果 找 不 到 合 适 的 句 柄 , 则 BeginInvoke 将 抛 出 异 常 。 Delegate 方 法 中 的 异 常 被
43、 看 作 是 未 被 捕 捉 的 , 并 将 会 发 送 给 应 用 程 序 的 异 常 处 理 函 数 。Control 类 中 有 4 个 可 从 任 何 线 程 调 用 的 方 法 : Invoke、 BeginInvoke、 EndInvoke 和 CreateGraphics。 对 于 所 有 其 他 方 法 调 用 , 都 应 使 用 某 个 激 活 方 法 以 将 调 用 配 置 到 控 件 线 程 中 。BringToFront 方 法调 用 BringToFront 方 法 , 以 将 本 控 件 置 于 z 顺 序 的 前 景 中 , 其 定 义 如 下 :public v
44、oid BringToFront();Contains 方 法调 用 Contains 方 法 , 以 确 定 指 定 控 件 是 否 为 本 控 件 的 子 项 , 其 定 义 如 下 :public bool Contains(Control ctl);参 数 : ctl将 检 测 的 控 件 。 返 回 值 :如 果 指 定 控 件 为 本 控 件 的 子 项 , 则 返 回 true, 否 则 返 回 false。CreateControl 方 法调 用 CreateControl 方 法 , 以 强 制 创 建 控 件 ( 这 包 括 创 建 句 柄 及 其 子 控 件 ) , 其
45、定 义 如下 :public void CreateControl();CreateControlsInstance 方 法调 用 CreateControlsInstance 方 法 , 以 创 建 本 控 件 的 新 Controls 集 合 , 其 定 义 如 下 :- 9 - 第 1 章 常 用 控 件 使 用 详 解protected virtual ControlCollection CreateControlsInstance();返 回 值 :赋 予 本 控 件 的 新 ControlCollection 实 例 。CreateGraphics 方 法调 用 CreateGra
46、phics 方 法 , 以 创 建 控 件 的 Graphics 对 象 , 其 定 义 如 下 :public Graphics CreateGraphics();public Graphics CreateGraphics(IntPtr dc);参 数 :dc将 为 其 创 建 Graphics 的 对 象 的 设 备 上 下 文 句 柄 。 返 回 值 :控 件 的 Graphics 对 象 。控 件 的 画 刷 、 字 体 、 前 景 色 和 背 景 色 成 为 Graphics 对 象 的 默 认 值 。 当 不 再 需 要 返 回 的Graphics 对 象 时 , 必 须 由 D
47、ipose 方 法 清 除 。 Graphics 对 象 只 在 当 前 Windows 消 息 中 有 效 。CreateHandle 方 法调 用 CreateHandle 方 法 , 以 创 建 本 控 件 的 句 柄 , 其 定 义 如 下 :protected virtual void CreateHandle();如 果 对 象 处 于 清 除 状 态 , 则 方 法 将 抛 出 ObjectDisposedException 异 常 。 当 在 派 生 类 中 重 载 时 , 应 确 保 调 用 基 类 的 CreateHandle 方 法 。DefWndProc 方 法调 用
48、DefWndProc 方 法 , 以 向 默 认 的 窗 口 进 程 发 送 消 息 , 其 定 义 如 下 :protected virtual void DefWndProc(ref Message m);参 数 :mWin32 消 息 。DestroyHandle 方 法调 用 DestroyHandle 方 法 , 以 销 毁 与 本 控 件 相 关 的 句 柄 , 其 定 义 如 下 :protected virtual void DestroyHandle();当 在 派 生 类 中 重 载 时 , 应 确 保 调 用 基 类 的 DestroyHandle 方 法 。Dispos
49、e 方 法调 用 Dispose 方 法 , 以 释 放 由 控 件 使 用 的 非 受 控 资 源 , 并 选 择 性 释 放 受 控 资 源 。 该 方 法 的 定 义 如 下 :Visual C#高 级 编 程 - 10 -protected override void Dispose(bool disposing);参 数 :disposing如 果 为 true, 则 将 同 时 释 放 受 控 和 非 受 控 资 源 ; 否 则 , 将 只 释 放 非 受 控 资源 。本 方 法 由 公 共 型 Dispose()和 Finalize 方 法 调 用 。 Dispose()激 活 了 保 护 型 Dispose(Boolean)方 法 , 并 将 disposing 参 数 设 置 为 true。 Finalize 调 用 Dispose 方 法 时 , 将 disposing 参 数 设 置 为 false。当 disposing 参 数 为 true 时 , 本 方 法 将 释 放 由 本 Control 引 用 的 所 有 受