一、控制Windows窗体应用程序
Application类提供 static 方法和属性以管理应用程序,例如启动和停止应用程序、处理 Windows 消息的方法和获取应用程序信息的属性。无法继承此类。
1.启动应用程序
窗体应用程序通过调用Application.Run()方法启动,如下:
Application.Run(new Form1());
Run方法在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见。
此外Run方法还有个不带参的,如下:
Application.Run();
2.关闭应用程序
在默认情况下,主窗体关闭就会自动退出应用程序。Application类提供了可用来初始化应用程序退出的方法,Exit
Application.Exit();
Exit不会立即关闭应用程序,而是关闭所有的消息泵,返回Run方法。
一般不要直接调用Exit方法,因为它会直接关闭所有的当前打开的窗体,关闭应用程序较好的方式是使用主窗体的Close方法。
为了在退出时进行一些处理,比如释放资源等等,可以添加一个ApplicationExit事件来处理应用程序,
如下:
Form1()
{
Application.ApplicationExit+=new EventHandler(Application_ApplicationExit);
}
private void Application_ApplicationExit(object sender,EventArgs e)
{
//释放资源等等
connections.Close();
stream.Close();
}
此时在没有窗体的情况下,在当前线程上开始运行标准应用程序消息循环。如果要稍后显示或者压根就不显示,则这种方式很有用。
窗体是以窗口、对话框等形式显示表面的,可用来向用户显示信息并接收用户的输入。
二、Windows窗体的常用属性、事件和方法
重要属性:
Name:窗体对象的名字,类似于变量的名字
BackColor:窗体的背景色
ShowInTaskBar:设置窗体是否出现在任务栏
Text:窗体标题栏显示的文字
WindowState:窗体出现时最初的状态
事件:
Load:用户加载窗体时发生
MouseClick:用鼠标单击控件时发生
MouseMove:鼠标指针移过组件时发生
方法:
Show():用来显示窗体
Hide():用来隐藏窗体
Active():用来激活窗体并将焦点设置在它上面
Close():用来关闭窗体
三、MDI应用程序
创建MID窗体程序的步骤
1.设置父窗体(设置窗体Form的IsMDIContainer为true)
2.创建子窗体的对象
3.设置子窗体的父窗体 (子窗体.MDIParent)
4.调用Show()方法(子窗体.Show())
MDI子窗体排列方式
层叠(Cascade)
水平(TileHorizontal)
垂直(TileVertical)
最小化(ArrangeIcons)
例如: this.LayoutMdi(MdiLayout.Cascade);
Windows系统通过事件处理来相应用户的请求
四、菜单/工具栏/状态栏/状态栏(容器控件)
菜单MenuStrip
工具栏 ToolStrip
常用属性:
ImageScalingSize:设置工具栏图片缩放比例
工具栏按钮属性:
DisplayStyle:工具栏是以什么形式显示的
Image:用于设置工具栏按钮的图片
状态栏 StatusStrip 容器控件
属性:
Items查看父子控件的关系
选项卡 TabControl
TabControl的子控件为TabPage
属性:
TabPages:存放TabPage控件
Mutiline:设置是否允许多行显示选项卡
状态栏 StatusStrip

四、控件——工具箱

实例1:
View Code
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//定义两个字符串变量
private String strGender = "";
private String strLike = "";
//单击Button事件
private void btnLike_Click(object sender, EventArgs e)
{
lblNull.Text = "你的姓名是:" + txtName.Text + "," + "爱好是:" + strLike +
"," + "性别是:" + strGender;
}
//Radio的CheckChanged事件
private void rdomale_CheckedChanged(object sender, EventArgs e)
{
strGender = "男";
}
private void rdoFemale_CheckedChanged(object sender, EventArgs e)
{
strGender = "女";
}
//上网
private void chk1_CheckedChanged(object sender, EventArgs e)
{
if (chk1.Checked)
{
strLike = strLike + chk1.Text;
}
else
{
strLike.Replace(chk1.Text + " </br>","");
strLike.Trim();
}
}
//阅读
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (chk2.Checked)
{
strLike = strLike + chk2.Text;
}
else
{
strLike.Replace(chk2.Text + " </br>", "");
strLike.Trim();
}
}
private void chk3_CheckedChanged(object sender, EventArgs e)
{
if (chk3.Checked)
{
strLike = strLike + chk3.Text;
}
else
{
strLike.Replace(chk3.Text + " </br>", "");
strLike.Trim();
}
}
}
运行结果:

五、其他
总结C#中窗体间传递数据的几种方法
在编写C#windows应用程序的时候我们经常会碰到这种题目,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在碰到一个实际题目:在 form1中打开一个form2窗口作为录进界面,将录进的值经转换后在form1中显示。采用了委托的方法,可以实现。(与VC的回调的应用相似)
1. 可以通过委托的方法来解决
2. 假如主框架为Form1,打开的搜索对话框是Form2.直接在Form2类中申明一个Form1实例:Form1 f1=new Form1();然后就可以通过f1来调用Form1中的域和函数了。实在不是这样的,你申明的新的Form1实例不是原来的那个Form1对象了,这样操纵的是新的Form1中的域和函数,和最先打开的Form1是没有关系的。
3. 实在C#中提供了窗体间进行通讯的现成的属性,呵呵,我们能想到的,微软也想到了,他们创造的语言实在确实可以说是人性化了。
4. 使用静态类,这个也是我们经常要用到的一种数据交互方法。
定时器 Timer
属性:
Enabled:启用定时器,默认值为false不启用
Interval:指定定时器的时间(单位:毫秒)
事件:
Tick:每隔制定的时间将被执行的内容
模式对话框
使用窗体对象的ShowDialog()方法可以打开一个模式对话框
例如:ModeWindow mw = new ModeWindow();
mw.ShowDialog();


浙公网安备 33010602011771号