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. Delphi无边框Form拖动

    用Delphi做登陆窗口,如果使用无边框Form,想要拖动窗口,可以在某个控件的OnMouseDown事件中写下以下代码 ReleaseCapture; Perform(WM_SYSCOMMAND, ...

  2. 树莓派 raspberry系统 VNC View 连接 Cannot currently show the desktop 错误解决

    https://www.raspberrypi.org/forums/viewtopic.php?t=216737 我是因为空间不够

  3. 车道线识别/Opencv/传统方法

    车道检测(Advanced Lane Finding Project) 实现步骤: 使用提供的一组棋盘格图片计算相机校正矩阵(camera calibration matrix)和失真系数(disto ...

  4. D3.js和three.js

    D3.js是一个数据可视化的库,看看他们的DEMO就可以知道,技术基础是SVG.兼容性是IE9+. three.js是以webgl为基础的库,封装了一些3D渲染需求中重要的工具方法与渲染循环.

  5. 20155230 2016-2017-2《Java程序设计》第二周学习总结

    20155230 2016-2017-2 <Java程序设计>第er周学习总结 教材学习内容总结 JAVA编程风格 1.命名变量时不可以使用数字及特殊字符作为开头. 2.变量名称不可以与J ...

  6. 20155318Java课堂实践20170510

    20155318Java课堂实践20170510 修改教材P98 Score2.java 让执行结果数组填充是自己的学号:提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的不给成绩 代码 p ...

  7. [2016北京集训试题7]thr-[树形dp+树链剖分+启发式合并]

    Description Solution 神仙操作orz. 首先看数据范围,显然不可能是O(n2)的.(即绝对不是枚举那么简单的),我们考虑dp. 定义f(x,k)为以x为根的子树中与x距离为k的节点 ...

  8. Java中如何创建一个确保唯一的名字,文件名

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客要讲的有,如何创建一个唯一的文件名,创建一个唯一的String字符串 为什么要创建唯一呢?再很多情况下 ...

  9. Mysql 5.5从零开始学阅读笔记

    第一章 1.什么是数据库? 数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术. 2.表 行被称为记录,列被称为字段 3.主键 primary key,用于唯一标识表中的每一条记录,主键 ...

  10. Zigbee系列(概览)

    Zigbee技术特点 低速率: 数据传输速率只有20~250kb/s, 2.4GHZ提供250kb/s, 915MHz对应40kb/s, 868Mhz对应20kb/s 低功耗:睡眠模式设备使用电池供电 ...