1. 初识Windows Forms

1,用C#编程

using System.Windows.Forms;

 

[assembly: System.Reflection.AssemblyVersion("1.0")]

 

namespace MyNamespace

{

public class MyForm : Form

{

public MyForm()

{

this.Text = "Hello Form";

}

[System.STAThread]

public static void Main()

{

Application.EnableVisualStyles();

Application.Run(new MyForm());

}

}

}

Application类

Application类用于管理应用程序、线程和Windows消息所需要的静态方法,这个类被声明为密封的(sealed),也就是说无法被继承。

公共静态属性

AllowQuit

是否退出了应用程序

CommonAppDataRegister

获取所有用户共享的应用程序数据的注册表键(HKLM)

CurrentCulture

获取或设置当前线程的本地化设置

OpenForms

获取这个应用程序活动Form对象的合集

ProductName

获取应用程序产品名

ProductVersion

获取应用程序的版本

StartupPath

启动应用程序的可执行文件路径

UserAppDataRegister

获取当前用户指定的应用程序数据的注册表键(HK_USER)

公共静态方法

AddMessageFilter

安装一个IMessageFilter接口,对当前线程的窗口消息进行监视。它可以用于拦截到达这个窗口的消息

DoEvents

处理当前位于消息队列中的任何Windows消息

EnableVisualStyles

允许应用程序的可视化风格

Exit

停止应用程序中所有的消息循环,并关闭这个应用程序的所有窗口。注意,它可能无法强制应用程序退出。

ExitThread

只停止当前线程中的消息循环,并关闭当前线程的所有窗口

Run

在当前线程中启动一个标准的消息循环。如提供一个Form,就使用它。

公共静态事件

ApplicationExit

当应用程序将要关闭时发生

Idle

当应用程序将要进入空闲状态时发生

ThreadException

当一个线程中出现一个未捕获异常时发生

ThreadExit

当应用程序中的一个线程将要关闭时发生

 

2,添加控件

using System;

using System.Drawing;

using System.Windows.Forms;

 

[assembly: System.Reflection.AssemblyVersion("1.3")]

 

namespace MyNamespace

{

public class MyForm : Form

{

private Button btnLoad;

private PictureBox pbxPhoto;

 

public MyForm()

{

this.Text = "Hello Form 1.2";

 

//create and configure a button

btnLoad = new Button();

btnLoad.Text = "&load";

btnLoad.Left = 10;

btnLoad.Top = 10;

 

//create and configure a picture box

pbxPhoto = new PictureBox();

pbxPhoto.BorderStyle = BorderStyle.Fixed3D;

pbxPhoto.Width = this.Width / 2;

pbxPhoto.Height = this.Height / 2;

pbxPhoto.Left = (this.Width - pbxPhoto.Width) / 2;

pbxPhoto.Top = (this.Height - pbxPhoto.Height) / 2;

 

//add our new controls to the form

this.Controls.Add(btnLoad);

this.Controls.Add(pbxPhoto);

}

 

 

[System.STAThread]

public static void Main()

{

Application.EnableVisualStyles();

Application.Run(new MyForm());

}

}

}

 

当一个控件被添加到窗体后,它位于这个窗体控件堆栈Z序的最后。

 

3,加载文件

using System;

using System.Drawing;

using System.Windows.Forms;

 

[assembly: System.Reflection.AssemblyVersion("1.3")]

 

namespace MyNamespace

{

public class MyForm : Form

{

private Button btnLoad;

private PictureBox pbxPhoto;

 

public MyForm()

{

this.Text = "Hello Form 1.2";

 

//create and configure a button

btnLoad = new Button();

btnLoad.Text = "&load";

btnLoad.Left = 10;

btnLoad.Top = 10;

btnLoad.Click += new EventHandler(this.HandleLoadClick);

//create and configure a picture box

pbxPhoto = new PictureBox();

pbxPhoto.BorderStyle = BorderStyle.Fixed3D;

pbxPhoto.Width = this.Width / 2;

pbxPhoto.Height = this.Height / 2;

pbxPhoto.Left = (this.Width - pbxPhoto.Width) / 2;

pbxPhoto.Top = (this.Height - pbxPhoto.Height) / 2;

pbxPhoto.SizeMode = PictureBoxSizeMode.Zoom;

 

//add our new controls to the form

this.Controls.Add(btnLoad);

this.Controls.Add(pbxPhoto);

}

 

private void HandleLoadClick(object sender, EventArgs e)

{

OpenFileDialog dlg = new OpenFileDialog();

dlg.Title = "Open Photo";

dlg.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";

 

if (dlg.ShowDialog() == DialogResult.OK)

{

pbxPhoto.Image = new Bitmap(dlg.OpenFile());

}

 

dlg.Dispose();

}

 

[System.STAThread]

public static void Main()

{

Application.EnableVisualStyles();

Application.Run(new MyForm());

}

}

}

OpenFileDialog类允许用户选择一个需要打开的文件。

Filter字符串每部分使用|分隔,每一对值分别表示在对话框中所显示的字符串以及显示文件时所用的正则表达式。

 

公共属性

AddExtension

如果用户省略扩展名,这个属性获取或设置文件对话框是否会自动添加文件扩展名。

CheckFileExists

如果指定的文件不存在,这个属性获取或者设置文件对话框是否显示警告信息。

DefaultExt

获取或设置默认的文件扩展名

FileName

获取或设置包含了被选择文件名的字符串

FileNames

获取一个字符串数组,包含了被选择的文件名集合

Filter

获取或设置文件名过滤字符串

InitialDirectory

获取或显示文件对话框所显示的初始目录

RestoreDirectory

获取或设置文件对话框在关闭前是否把目录恢复到原先的值

ShowHelp

获取或设置文件对话框是否出现帮助按钮

Title

获取或者设置文件对话框标题栏字符串

公共方法

Dispose

释放对话框所使用的资源

Reset

将对话框属性重设为默认值

ShowDialog

显示一个常用对话框,并返回用户所选所选择按钮的DialogResult枚举值

公共事件

HelpRequest

点击"帮助"按钮时发生

 

4,更改窗体大小

using System;

using System.Drawing;

using System.Windows.Forms;

 

[assembly: System.Reflection.AssemblyVersion("1.4")]

 

namespace MyNamespace

{

public class MyForm : Form

{

private Button btnLoad;

private PictureBox pbxPhoto;

 

public MyForm()

{

this.Text = "Hello Form 1.4";

 

//create and configure a button

btnLoad = new Button();

btnLoad.Text = "&load";

btnLoad.Left = 10;

btnLoad.Top = 10;

btnLoad.Click += new EventHandler(this.HandleLoadClick);

btnLoad.Anchor = AnchorStyles.Top | AnchorStyles.Left;

 

//create and configure a picture box

pbxPhoto = new PictureBox();

pbxPhoto.BorderStyle = BorderStyle.Fixed3D;

pbxPhoto.Width = this.Width / 2;

pbxPhoto.Height = this.Height / 2;

pbxPhoto.Left = (this.Width - pbxPhoto.Width) / 2;

pbxPhoto.Top = (this.Height - pbxPhoto.Height) / 2;

pbxPhoto.SizeMode = PictureBoxSizeMode.Zoom;

pbxPhoto.Anchor = AnchorStyles.Top | AnchorStyles.Bottom

| AnchorStyles.Left | AnchorStyles.Right;

 

//add our new controls to the form

this.Controls.Add(btnLoad);

this.Controls.Add(pbxPhoto);

}

 

private void HandleLoadClick(object sender, EventArgs e)

{

OpenFileDialog dlg = new OpenFileDialog();

dlg.Title = "Open Photo";

dlg.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";

 

if (dlg.ShowDialog() == DialogResult.OK)

{

pbxPhoto.Image = new Bitmap(dlg.OpenFile());

}

 

dlg.Dispose();

}

 

[System.STAThread]

public static void Main()

{

Application.EnableVisualStyles();

Application.Run(new MyForm());

}

}

}

所有控件都支持Anchor属性,属性值是AnchorStyles枚举的值

枚举值

Bottom

被锚定到底部边缘

Left

被锚定到左侧边缘

None

没被锚定,当容器大小改变时,控件在各个方向移动的距离是容器各个方向所改变幅度的一般。

Right

被锚定到右侧边缘

Top

被锚定到顶部边缘

锚定:保持距离不变

 

Dock:固定到边缘

Control类中均可使用。如果控件设定了Dock属性None以外的属性值,Anchor值被锚定到顶部和左侧。

枚举值

Bottom

停靠到底部边缘

Fill

停靠到所有边缘

Left

停靠到左侧边缘

None

没有停靠,由Anchor属性决定位置

Right

停靠到右侧边缘

Top

停靠到顶部边缘

Windows Forms编程实战学习:第一章 初识Windows Forms的更多相关文章

  1. C语言编程入门之--第一章初识程序

    第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...

  2. Windows Forms编程实战学习:第三章 菜单

    第三章 菜单 1,控件和容器 所有的Windows Forms控件都是从System.Windows.Forms.Control类继承的,相关类的层次结构如下图所示: MarshalByRefObje ...

  3. Windows Forms编程实战学习:第二章 欢迎使用Visual Studio

    第二章 欢迎使用Visual Studio 1,AssemblyInfo文件 包含程序集的属性,向应用程序添加元数据 [assembly:<attribute>(<setting&g ...

  4. 第一章 初识windows程序

    window 操作系统中,处处是窗体 简单 强大 方便 灵活 步骤 新建项目 项目类型 visual C#项目 模板 window应用程序 用partial 将同一个窗体的代码分开放在两个文件中: 一 ...

  5. 【java并发编程实战】第一章笔记

    1.线程安全的定义 当多个线程访问某个类时,不管允许环境采用何种调度方式或者这些线程如何交替执行,这个类都能表现出正确的行为 如果一个类既不包含任何域,也不包含任何对其他类中域的引用.则它一定是无状态 ...

  6. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...

  7. 《Go并发编程实战》读书笔记-初识Go语言

    <Go并发编程实战>读书笔记-初识Go语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在讲解怎样用Go语言之前,我们先介绍Go语言的特性,基础概念和标准命令. 一. ...

  8. web学习第一章

    web学习第一章   我是大概9月10日开始走上IT之路的,一开始学习了小段时间的自动化办公软件, 昨天我开始学习客户端网页编程,我了解什么是WEB,一些比较老古董的计算模式和发展历史,印象最让我深刻 ...

  9. 【翻译习作】 Windows Workflow Foundation程序开发-第一章04

    1.2.3  Windows Workflow运行时 从Windows Workflow的角度看,可以将工作流活动当成是交给一个工作流处理器去执行的一系列指令或操作码.在Windows Workflo ...

随机推荐

  1. C语言 编程练习22

    一.题目 1.编一个程序,输入x的值,按下列公式计算并输出y值: 2.已知数A与B,由键盘输入AB的值,交换它们的值,并输出. 3.给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位 ...

  2. uva 210 - Concurrency Simulator (并行程序模拟)

    from CSDN: https://blog.csdn.net/su_cicada/article/details/87898579 例题6-1 并行程序模拟( Concurrency Simula ...

  3. java入门---变量类型&类变量&局部变量&实例变量&静态变量

        在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下:     type identifier [ = value][, identifier [= value] ...] ; ...

  4. 20155318 2016-2017-2 《Java程序设计》第三周学习总结

    20155318 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 一.类与对象 Clothes c1 = new Clothes();将c1名称参考至新建对象 ...

  5. Drupal views 学习之初识

    1. 简介 用过Yii框架的同学,应该都会用到过GridView和ListView组件.可以很方便的用网格或列表展示内容. 例如淘宝: 网格显示 列表显示 2. 使用view可以方便的配出类似上面的展 ...

  6. 【redis的搭建】centos6.4下搭建redis

    说明:本文内容参考自一些资料,如有雷同,还请见谅. 部分参考: http://blog.csdn.net/su377486/article/details/51803616 http://blog.c ...

  7. linux设置定时任务调用接口

    1.设置目录 cd /var/spool/cron 2.编辑文件(当前登录用户,不一定是root) vim root 3.添加内容 0 0 * * * wget http://192.144.141. ...

  8. 记录阿里云ECS(Centos7.4)安装mysql 8.0.X服务

    #*.rpm介绍 大多数二进制rpm包都包含在名称中倒数第二个字段中编译rpm的体系结构..rpm软件包有那么几种 *.src.rpm 源程序包,要先通过编译才能安装 *.noarch.rpm 该包适 ...

  9. Python接口测试实战1(下)- 接口测试工具的使用

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  10. gtest命令行测试案例

    使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便.同时,gtest也为我们提供了一系列的运行参数(环境变量.命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的 ...