Winform总结
1, windows窗体设计:
1),Windows窗体是用于Microsoft Windows应用程序开发的、基于.NET Framework的新平台。
2)System.Windows.Form命名空间包含用于创建基于Windows的应用程序的类,此命名空间中提供了Controls类:提供各种控件类和CommonDialogBoxes类:提供许多对话框,执行诸如操作字体、颜色或打印之类的任务
2.,Form类
Form是应用程序中所显示的任何窗口的表示形式。一种特殊类型的窗体,即多文档界面窗体可包含其他成为MDI子窗体的窗体。通过将IsMdiContainer属性设置为true来创建Mdi窗体。通过将属性设置为将包含MDI子窗体的MDI父窗体来创建MDI字窗体。
Form主要属性:text,WindowState,Ico,IsMidContainer,MainMenuStrip:与他关联的菜单,FormBorderStyle
Form主要方法:Close,Hide,Show,ShowDialog
3, 基础控件
Button:主要属性:Anchor容器大小改变时Button被绑定到某个特定的位置。Dock
主要方法:Click,
TextBox:主要属性:Multiline,PasswordChar。主要事件:TextChanged,Click,Enter
ComboBox:可编辑的文本框,有下拉菜单。主要属性:DataSource,Items,DrawMode,
主要事件:TextChanged,TextUpdate,SelectedIndexChanged
picturesBox
picturesBox中图片路径:pictureBox.Image=Image.FromFiele(path);
Dock属性:可以让控件停靠在固定的位置
SizeMode:决定图片与原图的关系
4, 复杂控件
ToolStrip:工具栏。Menustrip:菜单栏,contextMenustrip:激右键显示的信息StatusStrip:状态栏,ImageList:图片列表
Treeview:主要属性:Nodes,selectdeNodes,CheckBoxes:指示是否在节点旁显示复选框,事件:AfterSelect
progressBar:进度条
5,模式窗口与非模式窗口
showDialog模式窗口:showDialog()是非独占资源,关闭该窗体后对象不释放
show模式窗口:show()是独占资源,关闭该窗体后,对象资源释放
面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样我们还有花费时间寻找我们要用的窗口,而且,一但出现问题,窗口的顺序也有可能被再次打乱,很是不顺手,那么我们怎么办呢?
我们可以将show方法转化为showdialog方法,顾名思义,showdialog是一个进行路经绑定的show方法,他是不可以自由切换的,换言之,就是,当你没有关闭你当前页的前提下,你是无法关闭该页面后面的任一页面的,它是当前唯一(路经打开)为true的。
而show方法由于未进行绑定,它所显示的各个窗口、对话框是可以相互切换,而不需要关闭当前窗口、对话框。但是他由于未进行绑定,所以每个由show方法打开的窗口的顺序是非固定的,如果遇到什么问题,由show方法打开的窗口的顺序可能会有很大的改变!
6自定义控件
1, 创建用户自定义控件。把需要用到的属性定义出来例如:
  int Pictureheight;
        public int Height1
        {
            get
            {
                return pictureBox1.Height;
            }
            set
            {
                pictureBox1.Height = value;
            }
        }
定义用到的事件:例如:
  public event EventHandler Button_click;
        private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
            }
            Button_click(sender, e);
        }
7,容器控件
FlowLayoutPannel:放在里面的控件都会被自动布局
GroupBox:具有标题的容器
SplitContainer:运行时可对容器的大小进行变换
TableLayoutPanel:对容器进行分块
TabControl:选项卡
8,对话框
operFileDialog:打开文件对话框,folderBrowserDialog:打开文件夹对话框,fontDialog:字体对话框,saveFileDialog:保存对话框,pringDialog:打印对话框,ColorDialog:颜色对话框,每个对话框都可以show出来,例如openFileDialog1.show()=ResultDialog.ok打开文件对话框的过滤Filter属性中输入:PDF|*PDF|所有文件|*.*
9,画图
GDI+是 Microsoft® Windows® XP 操作系统的子系统,负责在屏幕和打印机上显示信息
Graphics类 Graphics类是 GDI+的核心,用来封装一个GDI+绘图表面。提供将对象绘制到显示设备上的方法
Clear( )方法:     清除整个绘图面并以指定背景色填充。
DrawLine( )方法:绘制一条连接由坐标对指定的两个点的线条。
DrawPath( )方法:绘制一系列连接一组 Point结构的线段。
DrawPolygon( )方法:绘制由一组 Point结构定义的多边形。
DrawRectangle( )方法:绘制由坐标对、宽度和高度指定的矩形。
DrawString( )方法:在指定位置并且用指定的 Brush和Font对象绘制指定的文本字符串。
DrawArc( )方法:绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。
DrawImage( )方法:在指定位置并且按原始大小绘制指定的 Image对象。
画图的步奏: 1,定义Graphics类的画板2,定义画笔或刷子3,定义的Graphics对象画图
StartCap 和 EndCap 属性:使您可以将预设或自定义的形状添加到线条的开始或结尾。
DashStyle 属性:使您可以在实线、虚线、点划线或自定义点划线之间进行选择。
使用阴影笔刷代码:
HatchBrush myHatchBrush = new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
纹理阴影笔刷:
Image myImage = Image.FromFile("MyTexture.bmp");      
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
渐变笔刷:
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(myRectangle,
Color.Blue,Color.Green,LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
绘制文本:1,获取对将拥有绘图的图形对象的引用 Graphics g = e.Graphics;
2,创建绘制文本要使用的画笔实例:
System.Drawing.Drawing2D.LinearGradientBrush myBrush = new
   System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle,
   Color.Red, Color.Yellow, System.Drawing.Drawing2D.
   LinearGradientMode.Horizontal);
3,创建显示文本要使用的字体: Font myFont = new Font("Times New Roman", 24);
绘制图像:
1 创建一个 Graphics 对象,该对象表示要使用的绘图表面
Graphics g = Button1.CreateGraphics();
2,创建一个对象该对象表示要显示的图像,该对象必须是从Image(如Bitmap或MetaFile)继承的类成员如
3, Bitmap myBitmap = new Bitmap(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyPictures));
4, 或者
Image img=Image.FromFile(filePath);
具体例子:
Graphics g = e. Graphics;
Image img=Image.FromFile("C:\\a.jpg",true);// 将图片放到指定目录下C
g.DrawImage(img,0,0);
画图并导出图片:
Bitmap b = new Bitmap(100, 100); 
Graphics g = Graphics.FromImage(b);
Pen p = new Pen(Color.Green ,4);
g.FillRectangle(new SolidBrush(Color.White), 0, 0, 100, 100);
g.DrawLine(p, new Point(0, 0), new Point(100, 100));
b.Save(@"f:\a.png",ImageFormat.Png ); 
10, Windows打印
在.NET框架中,提供了对Windows的打印和打印预览的支持,其主要的支持类都包含在命名空间System.Drawing.Printing中。
打印主要通过PrintDocument类来完成
PrintDocument类共有3个与打印有关的属性:1,DefaultPageSettings属性:这个属性保存了打印文档的默认页面设置,如大小,方向,是一个pageSettings类型的变量。
使用PrintDocument类来创建打印作业过程:1,创建类实例 2,设置类实例的属性3,为该类的打印时间添加事件处理函数4,调用该类的Print函数进行打印
例如:
private System.Drawing.Printing.PrintDocument pd;
private void Form1_Load(object sender, System.EventArgs e)
{
//创建实例
this.pd=new System.Drawing.Printing.PrintDocument();
      
//触发事件
this.pd.PrintPage+=new
System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage);     
}
 
private void pd_PrintPage(object sender, ystem.Drawing.Printing.PrintPageEventArgs e)
{
//打印”QingHua IT”
e.Graphics.DrawString(“QingHua IT”,
new Font("宋体",30, FontStyle.Regular), Brushes.Black, 0, 0);
}
打印预览:
PrintPreviewDialog类只包含两个和预览有关的Document属性和PrintPreviewControl属性。
Document 获取或设置要预览的文档
PrintPreviewControl属性则用来访问该对话框所包含的预览控件。
打印预览的实例:
private System.Drawing.Printing.PrintDocument pd;
private System.Windows.Forms.PrintPreviewControl ppc;
private System.Windows.Forms.PrintPreviewDialog ppd;
private void Form1_Load(object sender, System.EventArgs e)
{
this.pd=new System.Drawing.Printing.PrintDocument();
this.ppc=new PrintPreviewControl();
this.ppd=new PrintPreviewDialog();
ppc.Document=pd;
ppc.StartPage=1;
ppc.Columns=2;
ppc.Rows=2;
ppd.Document=pd;
ppd.ShowDialog();
}