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 ...
随机推荐
- jquery.ajax的方法使用
$.ajax({ type: 'post', url:"{:U('Admin/Shop')}", data:{id:id}, dataType: "json", ...
- Delphi XE10.1 引用计数
以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持. 现在Delphi XE10.1 Berlin终于 ...
- 需求:加一个下拉框选择条件改变饼图内外环 饼图:百度echarts提供
1.1:下拉框条件:后台取得ViewBag传给前台 MonitorController: public ActionResult BigData(): //下拉框筛选条件 var result = M ...
- java.io.FileNotFoundException:file:\D:\code\xml-load\target\XX.jar!\XXX(文件名、目录名或卷标语法不正确。)
1.当使用Spring Boot将应用打成jar时,需要读取resources目录下配置文件时,通常使用ClassLoader直接读取,通常建议使用这种方式,直接将xml文件读成流传入 // 加载xm ...
- Jlink-10 pin 的定义(stm32使用)官方定义
因为在网上找了好久才找到正确的接法,所以专门记载了下来,因为stm32芯片这几个功能引脚会内置上拉电阻,所以不需要再外接电阻了.
- Python调用time模块设置当前时间-指定时间
import datetimeimport time#新建元旦时间#将程序打包def A(): # 设定时间 newyear =datetime.datetime(2033,10,1) #调用当前时间 ...
- BurpSuite系列(一)----Proxy模块(代理模块)
一.简介 Proxy代理模块作为BurpSuite的核心功能,拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流. Burp 代理 ...
- <c:out />的理解
<c:out value="<string>" default="<string>" escapeXml="<tr ...
- 2017-2018-1 20155330《信息安全技术》实验二——Windows口令破解
2017-2018-1 20155330<信息安全技术>实验二--Windows口令破解 姓名:朱玥 学号:20155330 班级:201553 日期:2017.10.24 实验环境 系统 ...
- 20145234黄斐《网络对抗技术》PC平台逆向破解
Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址. ...