WinForm——窗体总结
- 常用属性
- StartPosition属性
用来获取或设置运行时窗体的起始位置。
语法格式:public FormStartPosition StartPosition { get; set; }
属性值:FormStartPosition的枚举值之一,表示窗体的起始位置。说明如下:
枚举值 |
说明 |
CenterParent |
窗体在其父窗体中居中。 |
CenterScreen |
窗体在当前显示窗口中居中,其尺寸在窗体大小中指定。 |
Manual |
窗体的位置由 Location 属性确定。 |
WindowsDefaultBounds |
窗体定位在 Windows 默认位置,其边界也由 Windows 默认决定。 |
WindowsDefaultLocation |
窗体定位在 Windows 默认位置,其尺寸在窗体大小中指定。 |
例:
private void Form1_Load(object sender, EventArgs e)
{
this.StartPosition = FormStartPosition.CenterScreen;//设置窗体剧中显示
}
- Left属性
该属性用来获取或设置窗体的左边缘与其容器的工作区左边缘之间的距离,以像素为单位。
语法格式:public int Left { get; set; }
- Top属性
用来获取或设置窗体的上边缘的 y 坐标(以像素为单位)。
private void Form1_Load(object sender, EventArgs e)
{
this.Left = 100;
this.Top = 200;
}
- Name属性
用来获取或设置窗体的名称。
语法格式:public string Name { get; set; }
- Location属性
获取或设置窗体的左上角相对桌面的左上角坐标。
语法格式:public Point Location { get; set; }
例:this.Location = new Point(16, 16);
- TopMost属性
用来获取或设置一个值,指示该窗体是否显示为最顶层窗体。如果将窗体显示为最顶层则为True,反之为False。
- Width属性
用来获取或设置窗体的宽度。语法格式:public int Width { get; set; }
- FormBorderStyle属性
表示要为窗体显示的边框样式。 默认值为 FormBorderStyle.Sizable。
语法格式:public FormBorderStyle FormBorderStyle { get; set; }
FormBorderStyle枚举值如下:
属性 |
值 |
意义 |
FormBorderStyle.None |
0 |
无边框 |
FormBorderStyle.FixedSingle |
1 |
固定的单行边框 |
FormBorderStyle.Fixed3D |
2 |
固定的三维样式边框 |
FormBorderStyle.FixedDialog |
3 |
固定的对话框样式的粗边框 |
FormBorderStyle.Sizable |
4 |
可调整大小的边框 |
FormBorderStyle.FixedToolWindow |
5 |
不可调整大小的工具窗口边框 |
FormBorderStyle.SizableToolWindow |
6 |
可调整大小的工具窗口边框 |
注:使用FixedToolWindow和SizableToolWindow时,还需要将ShowInTaskbar属性设置为false。例:this.ShowInTaskbar=false;
- ShowInTaskbar属性
该属性用来获取或设置一个值,该值指示是否在 Windows 任务栏中显示窗体。
- ControlBox属性
用来获取或设置一个值,该值指示在该窗体中是否显示最大化、最小化和关闭按钮。。
- MaximumBox属性
用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。
- MinimizeBox属性
用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。
- WindowState属性
用来获取或设置窗体的窗口状态。语法格式:public FormWindowState WindowState { get; set; }
枚举值 |
描述 |
Maximized |
最大化窗口 |
Minimized |
最小化窗口 |
Normal |
默认大小的窗口 |
- RightToLeft属性
用来回去或设置一个值,该值指示是否将控件的元素对齐,以支持从右到左的字体的区域设置。语法格式:public virtual RightToLeft RightToLeft { get; set; }
枚举值 |
描述 |
No |
文本从左至有读取,默认设置。 |
Yes |
文本从右到左读取。 |
Inherit |
文本的读取方法从父控件继承 |
- BackColor属性
用来获取或设置窗体的背景色。语法格式:public override Color BackColor { get; set; }
默认为DefaultBackColor属性的值。
- BackgroundImage属性
用来获取或设置窗体的背景图像。例:
private void Form1_Load(object sender, EventArgs e)
{
this.BackgroundImage = Image.FromFile("test.jpg");
}
注:上面代码的test.jpg需要放置在程序的Debug文件夹中。
- BackgroundImageLayout属性
用来获取或设置在ImageLayout枚举中定义的背景图像布局。语法格式如下:
public virtual ImageLayout BackgroundImageLayout { get; set; }
ImageLayout枚举值说明:
枚举值 |
说明 |
None |
图像沿控件工作区顶部左对齐 |
Tile |
图像沿控件的矩形工作区平铺 |
Center |
图像沿控件的矩形工作区居中显示 |
Stretch |
图像沿空间的矩形工作区拉伸 |
Zoom |
图像在空间的矩形工作区中放大 |
- AcceptButton属性
该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按 ENTER 键时就相当于单击了窗体上的该按钮。
- CancelButton属性
该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按ESC键时就相当于单击了窗体上的该按钮。
- Text属性
该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。
- Heigth属性
用来获取或设置窗体的高度。
- Opacity属性
获取或设置窗体的不透明级别
- ActiveControl属性
用来获取或设置容器控件中的活动控件。
- AutoScroll属性
用来获取或设置一个值,该值指示窗体是否实现自动滚动。
- Enabled属性
用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。
- Font属性
用来获取或设置控件显示的文本的字体。
- ForeColor属性
用来获取或设置控件的前景色。
- IsMdiChild属性
获取一个值,该值指示该窗体是否为多文档界面 (MDI) 子窗体。
- IsMdiContainer属性
获取或设置一个值,该值指示窗体是否为多文档界面 (MDI) 中的子窗体的容器。
- KeyPreview属性
该属性用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。
- Visible属性
该属性获取或设置一个值,该值指示是否显示该窗体或控件。
- Capture属性
如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。
注:窗体是线程启动测窗体,在主程序关闭时,窗体不能随着主程序关闭时,在主程序的Close()加上Enviroment.Exit(0);
- 使用举例:
- 功能:窗体背景色渐变
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void OnPaintBackground(PaintEventArgs e)
{
int intLocation, intHeight;
intLocation = this.ClientRectangle.Location.Y;
intHeight = this.ClientRectangle.Height / 200;
for (int i = 255; i >= 0; i--)
{
Color color = Color.FromArgb(1, i, 111);//给Color赋值
SolidBrush solid = new SolidBrush(color);//实例化一个单色的画笔类对象。
Pen pen = new Pen(solid, 2);//实例化一个用于绘制直线和曲线的对象pen
e.Graphics.DrawRectangle(pen, this.ClientRectangle.X, intLocation, this.Width, intLocation + intHeight);
intLocation = intLocation + intHeight; //重新为变量inLocation赋值。
}
}
}
结果:
- 功能:实现字幕在窗体中滚动
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Left -= 2;//设置Label1左边缘与其容器的工作区左边缘之间的距离。
if (label1.Right < 0)//当Label1右边缘与其工作区的左边缘自检的距离小于0时,
{
label1.Left = this.Width;//设置lable1左边缘与其容器的工作区左边缘之间的距离为该窗体的宽度。
}
}
private void btnGo_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void btnStop_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
结果:
- 功能:设置闪烁的标题栏
在Windows系统中,当程序在后台运行时,如果某个窗体的提示信息要用户浏览,该窗体不停的闪烁,这样就会吸引用户的注意,本实例实现主要用到API函数。
API函数FlashWindow可以使窗体闪烁以下语法格式:
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool FlashWindow(IntPtr handle, bool bInvert);
参数说明:handle表示要闪烁的窗体,bInvert表示是否恢复状态。
注:利用FalshWidow函数只能时窗体闪烁一下,如果让窗体不停的闪烁就需要使用一个Timer控件每隔一段时间调用该函数。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
public static extern bool FlashWindow(IntPtr handle, bool bInvert);
private void btnGo_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void btnStop_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
FlashWindow(this.Handle, true);//启动闪烁函数。
}
}
- 显示窗体的属性信息
显示窗体的属性信息时通过PropertyGrid控件实现的,控件的SelectedObject属性用于获取或设置在网格中显示属性的对象。例:
private void Form1_Load(object sender, EventArgs e)
{
propertyGrid1.SelectedObject = this;
}
- 窗体的调用
根据Windows窗体显示的状态,分为模式窗体和无模式窗体。
模式窗体使用ShowDialog方法调用,该窗体为当前窗体时,其他窗体不可用,只有当模式窗体关闭时,其他的窗体才可以恢复到可用状态。
无模式窗体使用Show方法调用,单击任何其他窗体,则选中的窗体为当前窗体并且显示在屏幕的最前面。
模式窗体举例:
Frm2 frm=new Frm2();
Frm.ShowDialog();
非模式窗体的调用:
Frm2 frm=new Frm2();
Frm.Show();
- 两个不相关的页面进行数据交换
此功能是在做餐博士的时候,有一个这样的需求,当菜品的信息发生改变时,将已经打开的页面信息自动更新。可以理解为观察者模式。
namespace CurrentReserving.Model
{
Public delegate void ModelReturnEventHander(object sender,ModelChangedEventArgs e);
public static class ReserveModel
{
public static event ModelReturnEventHandler ModelChanged;
private static GuestReserveInfo _model;
public static GuestReserveInfo Model
{
get{return _model;}
set{
_model=value;
if(ModelChanged!=null&& _model!=null)
{
ModelChangedEventArgs ex=new ModelChangedEventArgs(_model);
}
}
}
}
public class ModelChangedEventArgs:EventArgs
{
private GuestReserverInfo _model;
public ModelChangedEventArgs(GuestReserveInfo _Model)
{
_model=_Mode;
}
public GuestReserveInfo Model
{
get{ return _model;}
}
}
}
修改信息后,执行修改信息发送
private void btnChangeInfo_Click(object sender,EventArgs e)
{
ReserveModel.Model=table._reserveInfo;
}
接受信息的页面,订阅事件
public CurrentTableStatusPage()
{
InitializeComponent();
ReserveModel.ModelChanged+=new ModeReturnEventHander(ReserveModel_ModelChanged);
}
void Reservel_ModelChanged(object sender,ModelChangedEventArgs e)
{
GuestReserveInfo reserveInfo=ReserveModel.Model;
}
- 使用匿名方法防止窗体假死的现象
程序执行时,如果有大量的方法在主线程中等待执行,则或造成窗体出现假死的现象,本实例通过使用匿名的方法实现防止窗体出现假死的现象。
private void Form1_Load(object sender, EventArgs e)
{
Thread th = new Thread(() =>
{
Invoke((MethodInvoker)(() =>
{
long sun = 0;
for (long i = 0; i < 1000000000; i++)
{
sun += i;
}
label1.Text = sun.ToString();
}
));
});
th.IsBackground = true;
th.Start();
}
- 启动窗体的位置在上次关闭窗体的位置。
通过在注册表中读写窗体的Location属性来实现的。在窗体关闭前处理窗体的FormClosed时间,将窗体的Location属性值写入注册表,然后在窗体的Load事件中从注册表中读取保存的数据,设置窗体的Location属性值,从而实现了从上次关闭的位置启动窗体的功能。
读写注册表主要通过RegistryKey类的Get Value方法和Set Value方法来实现的。
private void Form1_Load(object sender, EventArgs e)
{
RegistryKey myReg1, myReg2;//声明之策表对象。
myReg1 = Registry.CurrentUser;//获取当前用户注册表项。
try
{
myReg2 = myReg1.CreateSubKey("Software\\MySoft");//在注册表中创建子项
this.Location = new Point(Convert.ToInt16(myReg2.GetValue("1")), Convert.ToInt16(myReg2.GetValue("2")));//设置窗体的显示位置。
}
catch
{
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
RegistryKey myReg1, myReg2;
myReg1 = Registry.CurrentUser;
myReg2 = myReg1.CreateSubKey("Software\\MySoft");
try
{
myReg2.SetValue("1", this.Location.X.ToString());
myReg2.SetValue("2", this.Location.Y.ToString());
}
catch
{ }
}
- 根据桌面的大小来调整窗体的大小
screen类便是单个系统上的一个或多个显示设备,其PrimaryScreen属性用来获取到主显示,概述信返回一个screen对象,而调用screen对象的WorkingArea属性可以获取显示器的工作区。
private void Form1_Load(object sender, EventArgs e)
{
int deskWidth = Screen.PrimaryScreen.WorkingArea.Width;
int deskHeight = Screen.PrimaryScreen.WorkingArea.Height;
this.Width = Convert.ToInt32(deskWidth * 0.8);
this.Height = Convert.ToInt32(deskHeight * 0.8);
}
- 如何在exe文件上加上图标
在exe的项目文件上右键选择属性-》选择应用程序-》图标和清单-》图标,选择相应的图片。
WinForm——窗体总结相关推荐
- 如何在多线程中调用winform窗体控件2——实例篇
如何在多线程中调用winform窗体控件2--实例篇 针对之前文章<如何在多线程中调用winform窗体控件>,下面举个我项目中的实际案例,这是一个我自定义控件在异步设置焦点时的代码.在新 ...
- 重绘Winform窗体
本文转载自:http://www.cnblogs.com/encoding/p/5603080.html 按照惯例,先来几张样例图(注:为了展示窗口阴影效果,截图范围向外扩展了些,各位凭想象吧). 还 ...
- C#:绘制Winform窗体
Winform窗体缺少左上角效果: public void SetWindowRegion(){System.Drawing.Drawing2D.GraphicsPath FormPath;FormP ...
- WinForm窗体缩放动画
WinForm自带的窗体大小发生改变的时候,当内存不够的时候,会出现界面停滞的现象,会出现许多的条条纹纹,给人很不好的感觉,这里提供一个WinForm窗体缩放时会有一个渐变的动画效果给大家. 思路是这 ...
- C#使用事件方式Winform窗体之间传值
[摘自:http://www.cnblogs.com/codeToUp/p/5371062.html] 工程的源代码地址:https://github.com/yes-or-no/WinFormTra ...
- c# groupbox大小_【已解决】C#中使得控件随着WinForm窗体的大小改变而自动变化
[问题] 想要使得一个C#中的一个窗体中的控件,DataGridView,自动随着WinForm窗体变化而变化,即: 中的显示数据的灰色部分, 另外还有上面那个"2.actions" ...
- C#Winform窗体实现服务端和客户端通信例子(TCP/IP)
Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...
- 透明的WinForm窗体
this.Location = new System.Drawing.Point(100, 100); this.Cursor = System.Windows.Forms.C ...
- winform窗体模板_如何验证角模板驱动的窗体
winform窗体模板 介绍 (Introduction) In this article, we will learn about validations in Angular template-d ...
- C# WinForm窗体四周阴影效果
一.起因 关于winform窗体无边框的问题很简单,只需要设置winform的窗体属性即可: FormBorderStyle = FormBorderStyle.None; 但是这中无边框窗口实现的效 ...
最新文章
- KS008基于SSM的新闻发布系统
- java mysql embedded,java-将MySQL Connector / MXJ用于应用程序的优点/缺点/替代品有哪些...
- C++课程设计,12306模拟写起来就是这么粗暴
- java 拼图_功能项目拼图将Java 9引入
- 鸿蒙os2.0开发者beta版,鸿蒙 OS 2.0 开发者beta版针对Mate 40系列设备开放
- SQL Server差异备份的备份/还原原理
- 使用Docker部署前端项目实战教程,该踩的坑我都帮你踩了!
- 关于android studio报错Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.
- 《数据挖掘概念与技术》第八章 分类:基本概念
- fastdb缩小初始生成文件
- ie vue报Unhandled promise rejection ReferenceError
- Android手机存储路径
- 三阶齐次线性方程求通解_三阶常系数线性微分方程特解的简单求法
- Android View的事件分发机制和滑动冲突解决方案
- 如何快速计算汉字笔画数
- Altium designer中文化设置
- 【计算机网络】Socket详解
- GStreamer appsrc 等插件实现视频音频混流,录制和推流
- python 乘法运算定律_乘法运算定律专项练习题
- 飞秋 飞秋2010 飞秋2010下载 飞秋下载2010正式版
热门文章
- 即时通讯开发用什么语言开发_如何开始开发者通讯
- 计算机网络 计算可分配的主机地址
- php 此网页包含重定向循环,打开浏览器网页提示此网页包含重定向循环解决方法...
- 一篇合格的新闻稿由哪5部分构成?
- 快速鲁棒的多模态遥感影像配准系统(可下载,支持大尺寸遥感影像),性能超越国际著名遥感商业软件ERDAS和ENVI
- 至程序猿 只有程序员才能看懂的笑话
- MATLAB如何画两个不同内切圆
- 计算机三级和四级能一块考,计算机三级和四级可以一起考吗
- 2021年G1工业锅炉司炉(新版)考试内容及G1工业锅炉司炉(新版)模拟考试系统
- 基于wemos的智能感应垃圾桶