WinForm——窗体总结

简介: 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赋值。


           }


       }


}


结果:

tt.png

功能:实现字幕在窗体中滚动

 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;


      }

tt.png

窗体的调用

根据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的项目文件上右键选择属性-》选择应用程序-》图标和清单-》图标,选择相应的图片。



tt.png

目录
相关文章
|
Shell C++ C语言
38【WinForm】WinForm常见窗体技术汇总
- 窗体调用外部程序与渐变窗体 - 按回车键跳转窗体中的光标焦点 - 剪切板操作
85 0
|
C# 容器
在WPF中使用winform控件WebBrowser
在WPF中使用winform控件WebBrowser
|
Windows
WinForm——MDI窗体
WinForm——MDI窗体
387 0
WinForm——MDI窗体
|
C#
WPF实现窗体中的悬浮按钮
原文:WPF实现窗体中的悬浮按钮 WPF实现窗体中的悬浮按钮,按钮可拖动,吸附停靠在窗体边缘。 控件XAML代码: ...
2359 0
|
C#
C#或者WPF中让某个窗体置顶
原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶。
2106 0
|
前端开发 C#
WPF 窗体显示最前端
原文:WPF 窗体显示最前端 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jjx0224/article/details/8782845 ...
1164 0
|
C# 容器
在WPF中使用WinForm控件方法
原文:在WPF中使用WinForm控件方法 1、      首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,System.Windows.Forms.dll。
1267 0
|
C#
在Winform窗体中使用WPF控件(附源码)
原文:在Winform窗体中使用WPF控件(附源码) 今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在Winform中使用WPF控件。原有是我在百度上搜索相关信息无果,遂干脆动手自己实现。 WPF控件的漂亮是Winform无法匹及的,本文主旨是在Winform工程中如何使用WPF控件。
1938 0