没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
条款 1 如何生成可执行文件.EXE
您可以采用下列两种方式来生成可执行文件.EXE:
方法一:在 Visual Studio 2005 的集成开发环境中,从“生成”菜单中选择“生成解决方案”,
即会在项目的\bin 文件夹中产生.EXE 文件。
方式二:在 SDK 命令提示符窗口下,执行 csc 命令来编译.EXE 文件。
条款 2 如何指定.EXE 的输出位置
虽然可执行文件.EXE 默认会保存在项目的\bin 文件夹中,但是您可以依下列步骤来指定
其输出位置:
将您的 Visual C# 2005 项目在 Visual Studio 2005 的集成开发环境中启动。
在“解决方案资源管理器”中执行下列操作之一:
用鼠标左键双击 Properties 选项。
在资源管理器窗口中单击鼠标右键,在快捷菜单中选中“属性”选项。
鼠标单击左侧的“生成”索引标签。在“输出路径”文字框中键入您所希望的输出位置,或是
单击“浏览”按钮来选择其他输出位置。值得一提的是,如果您希望将 .EXE 输出至项目的根
目录下,可以将此文字框中的内容置空。 单击右上角的“关闭”按钮。
条款 3 如何设定启动对象
启动对象就是当加载应用程序时所要调用的进入点(Entry Point)。一般来说,我们会将启动
对象设定成应用程序的主窗体,或是当应用程序激活时所会执行的 Main 程序。值得注意的
是,类库项目与 ASP.NET Web 应用程序项目都没有进入点,因此没有启动对象。
第 1 章应用程序的基础设置技巧要给一个 Visual C# 2005 的 Windows 应用程序项目设定启
动对象,您必须修改 Programcs 文件,基本的程序代码如下所示:using System;
using SystemCollectionsGeneric;
using SystemWindowsForms;
namespace CH1
{
staticclass Program
{
///<summary>/// 应用程序的主要进入点。
///</summary>
[STAThread]
staticvoid Main()
{
ApplicationEnableVisualStyles();
ApplicationSetCompatibleTextRenderingDefault(false);
ApplicationRun(new StartUpForm());
}
}
}
条款 4 关闭窗体与结束应用程序
如果您只是要关闭窗体,请调用该窗体的 Close 方法。因此我们经常在窗体中的“关闭”按钮
的 Click 事件处理函数中编写下列程序代码:
this.Close();
如果您将应用程序项目的启动窗体设定成某一个窗体,则调用该启动窗体的 Close 方法时
就会结束应用程序。
一般来说,无论在何时结束应用程序,仅调用 ApplicationExit 方法即可。ApplicationExit
方法会结束所有处在运行状态的进 程,并关闭应用程序的所有窗口。ApplicationExit 方法
并不一定会强制结束应用程序。ApplicationExit 方法一般是在消息队 列中调用,并强制
ApplicationRun 返回。若只是要结束当前线程,则调用 ApplicationExitThread 方法即可。
ApplicationExit 方法会引发下列事件,并执行与之相关联的条件动作:
每一个以 OpenForms 属性表示的窗体都会引发 FormClosing 事件。您可以通过将事件的
FormClosingEventArgs 参数的 Cancel 属性设定为 True,取消这个事件。
如果是一个或多个处理例程取消事件,就会传回 ApplicationExit 而不再执行进一步动作。
否则,每一个处于活动状态的窗体都会引发 FormClosed 事件,然后关闭所有正在运行的消
息循环和窗体。
条款 117 如何在窗体加载时让某一个控件取得焦点
在此我们将说明如何在窗体加载时,让某一个控件取得焦点(Focus)——即使该控件成为作
用控件。我们将示范如何使用下列 3 种方式来完成此项操作。
窗体的 ActiveControl 属性能够用来取得或设定窗体上的作用控件。因此,您只需将窗体的
ActiveControl 属性设定成 窗体上的某一个控件,该控件就会成为活动控件。如图 8.1 所示
是 程 图 8.1 使 Text 属 性 为 空 字 符 串 的 TextBox 控 件 成 为 作 用 控 件 序 范 例
CH8_DemoForm001.cs 的 运行 画 面 , 它 会在 窗 体 加 载后 , 将 Text 属 性为 空 字 符 串的
TextBox 控件设定成活动控件(也就是取得焦点)。 程序代码列示如下:
图 8.1 使 Text 属性为空字符串的 TextBox 控件
privatevoid CH4_DemoForm054_Load(object sender, EventArgs e)
{
int nCount =this.Controls.Count;
for (int i =0; i <= nCount -1; i++)
{
if (this.Controls[i] is System.Windows.Forms.TextBox)
{
// 找出 Text 属性为空字符串的 TextBox 控件。if (this.Controls[i].Text =="")
{
// 使没有任何文字的 TextBox
// 控件成为作用控件。this.ActiveControl =this.Controls[i];
// 跳离 For 循环。break;
}
}
}
}
调用控件的 Select 方法即可启动该控件并使其取得焦点。程序范例 CH8_DemoForm002.cs
的功能与上一个程序范例 CH8_DemoForm001cs 完全相同,只不过它如下所示,改用
Select 方法来使控件取得焦点:
this.Controls[i].Select();
调用控件的 Focus 方法即可使该控件取得焦点。不过由于我们是在窗体加载时要使控件取
得焦点,因此您必须先将窗体的 Visible 属性设定成 True。 程序范例 CH7_DemoForm003.cs
的功能与前面两个程序范例完全相同,只不过它如下所示,改用 Focus 方法来使控件取得
焦点:
this.Visible =true;
...
this.Controls[i].Focus();
...
条款 118 如何在控件中捕捉按键
如何于 Windows Form 控件中捕捉按键向来是许多程序设计师所关心的课题,基本上,标
准的 KeyUp、KeyDown 与 KeyPress 事件就足以去捕捉并处理按键。然而问题在于,并非
所有的控件会在所有的情况下为所有的按键操作产生这些事件。
图 8.2CH8_DemoForm004.cs 运行画面
第 8 章探讨重要的人机界面设计技巧如果您希望不管控件的状况如何,都能够顺利地捕捉
WindowsForm 控 件 中 的 按 键 , 必 须 根 据 该 控 件 的 类 派 生 出 一 个 新 的 类 并 重 写
ProcessCmdKey 方法,并在此重写方法中编写程序代码来捕捉并处理您所需的按键。系统
会传递两个参数给 ProcessCmdKey 方法: msg 与 keyData。msg 参数含有所要处理的窗口
信息(例如:WM_KEYDOWN),此窗口信息是以传址方式传递的。keyData 参数则会含有
被按下的按键的按键码,也就是其中一个 Keys 值(注意,keyData 参数的类型是 Keys 枚举
类型)。如果 CTRL 或 ALT 键也被按下, keyData 参数还会含有辅助按键(Modifier Key)信息。
您并非一定要使用 msg 参数,也就是说,您可以忽略它。不过利用 msg 参数来检测窗口信
息 倒 是 一 项 不 错 的 选 择 。 在 稍 后 的 程 序 范 例 中 , 我 们 会 去 检 测 窗 口 信 息 是 否 为
WM_KEYDOWN,以便确认这是一个按键事件。此外,我们也会去检测窗口信息是否为
WM_SYSKEYDOWN,以便确认按键组合是否包含辅助 按键。
由于 DataGridView 控件的状况最为复杂,因而在此我们就要示范如何在 DataGridView 控件
中捕捉按键,请切记,您可以将同样的方法应用 在其他的控件中。图 82 所示是程序范例
CH8_DemoForm004.cs 的运行画面,从窗体的标题栏变化可以看出,只要 DataGridView 控
件取得焦点,不论它是否显示数据,都能够捕捉用户在 DataGridView 控件中的按键。显而
易见地,本程序范例的关键在于必须根据 DataGridView 控件派生出一个新的类并重写其
ProcessCmdKey 方 法 。这 里 将 派 生 类 MyDataGridView 的 程 序代 码 列 示 如下 ( 编 写 在
MyDataGridView.cs 中):
publicpartialclass MyDataGridView :
System.Windows.Forms.DataGridView
{
...
...
protectedoverridebool ProcessCmdKey(
ref Message msg, Keys keyData)
{
constint WM_KEYDOWN =0x100;
constint WM_SYSKEYDOWN =0x104;
if ((msg.Msg == WM_KEYDOWN) ||
(msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Down:
this.Parent.Text ="向下键已经被捕捉";
break;
case Keys.Up:
this.Parent.Text ="向上键已经被捕捉";
剩余56页未读,继续阅读
luoye007001
- 粉丝: 1
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Android的学生信息管理2.rar
- 3e9ef566-ba13-47b0-a252-77aa9e4b040f8412130.apk
- 毕业设计基于SSM的房屋租赁系统源【源码+lw+部署+讲解】
- 基于Android男装出口管理系统的app.rar
- 工资表生成工资条Excel模版
- 位运算、状态压缩、枚举子集汇总.html
- C++毕业设计快递分拣机器人系统源码+论文文件+资料.zip
- 锐龙处理器 体质分析工具,体质越好越稳定,越容易超频 tool1007/Win V/F
- IOS Swift3 四种单例模式详解及实例《PPT文档》
- Swin-Unet网络预训练模型,swin-tiny-patch-window7-224.pth
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5