• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
口口念念
博客园    首页    新随笔    联系   管理    订阅  订阅
读书笔记之Windows窗体

一、控制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();

 


 

posted on 2012-02-16 11:25  口口念念  阅读(382)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3