Windows Forms编程实战学习:第一章 初识Windows Forms
- 初识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的更多相关文章
- C语言编程入门之--第一章初识程序
第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...
- Windows Forms编程实战学习:第三章 菜单
第三章 菜单 1,控件和容器 所有的Windows Forms控件都是从System.Windows.Forms.Control类继承的,相关类的层次结构如下图所示: MarshalByRefObje ...
- Windows Forms编程实战学习:第二章 欢迎使用Visual Studio
第二章 欢迎使用Visual Studio 1,AssemblyInfo文件 包含程序集的属性,向应用程序添加元数据 [assembly:<attribute>(<setting&g ...
- 第一章 初识windows程序
window 操作系统中,处处是窗体 简单 强大 方便 灵活 步骤 新建项目 项目类型 visual C#项目 模板 window应用程序 用partial 将同一个窗体的代码分开放在两个文件中: 一 ...
- 【java并发编程实战】第一章笔记
1.线程安全的定义 当多个线程访问某个类时,不管允许环境采用何种调度方式或者这些线程如何交替执行,这个类都能表现出正确的行为 如果一个类既不包含任何域,也不包含任何对其他类中域的引用.则它一定是无状态 ...
- Java 面向对象编程——第一章 初识Java
第一章 初识Java 1. 什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...
- 《Go并发编程实战》读书笔记-初识Go语言
<Go并发编程实战>读书笔记-初识Go语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在讲解怎样用Go语言之前,我们先介绍Go语言的特性,基础概念和标准命令. 一. ...
- web学习第一章
web学习第一章 我是大概9月10日开始走上IT之路的,一开始学习了小段时间的自动化办公软件, 昨天我开始学习客户端网页编程,我了解什么是WEB,一些比较老古董的计算模式和发展历史,印象最让我深刻 ...
- 【翻译习作】 Windows Workflow Foundation程序开发-第一章04
1.2.3 Windows Workflow运行时 从Windows Workflow的角度看,可以将工作流活动当成是交给一个工作流处理器去执行的一系列指令或操作码.在Windows Workflo ...
随机推荐
- restframework序列化字段和字段构造方式
- Ubuntu 16.04LTS 安装 Node.js stable
更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties software-properti ...
- ARMCC中$Super$$和$Sub$$的使用
代码: extern int $Super$$main(void); /* re-define main function */ int $Sub$$main(void) { rt_hw_interr ...
- 深入浅出MFC学习笔记 第三章 MFC六大关键技术之仿真
0:MFC类层次结构 1:MFC程序的初始化过程CWinApp::InitApplication()CMyWinApp::InitInstance()CMyFrameWnd::CMyFrameWnd( ...
- 数据结构与算法之排序(1)冒泡排序 ——in dart
最经典的入门排序算法,冒泡排序,dart语言实现.数组仍然采用随机生成的数组,使用dart内置的List 的generate方法,排序前后分别打印出数组,以观察效果. import 'dart:mat ...
- HTML页面参数的传递与获取
传递的页面: $("#btn").click(function () { window.location.href="diancan.html?a=1"; }) ...
- 20155239 2016-2017-2 《Java程序设计》第9周学习总
教材学习内容 JDBC 简单功能 连接数据源,如数据库 传给数据库查询和更新指令 获取并处理数据库返回结果(对查询等的响应) public void connectDBAndQuery(String ...
- #20155319 2016-2017-2 《Java程序设计》第3周学习总结
20155319 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第三周的学习量还是很大的,需要学习的内容更难了而且 量也变多了,所以投入了更多的时间到Jav ...
- sqoop 数据迁移
sqoop 数据迁移 1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HIVE.H ...
- logstash处理@timestamp时区
input { stdin { } } filter { #ruby { # code => "event.set('timestamp', event.get('@timestamp ...