【笔记-C#】winform

  1. 程序结构

Properties中包含版本信息,资源等的属性,可以进行修改。

引用目录下包含using引入的命名空间

Program.cs中(不需要修改):

[STAThread]

static void Main()

{

 Application.EnableVisualStyles();

 Application.SetCompatibleTextRenderingDefault(false);

 Application.Run(new Form1());

扫描二维码关注公众号,回复: 2727025 查看本文章

}

Application是应用程序类,进行初始化,然后使用方法Run运行窗体,窗体类名为Form1(在可视化窗口中修改窗口名,代码会相应自动变化)

双击Form1.cs可进入可视化的窗口编辑界面

右键菜单(查看代码)可进入主要代码Form1.cs

该层级下包含Form1.Designer.cs

Form1的class声明用了partial(说明Form1.Designer.cs和Form1.cs中定义的代码属于同一个类)。主要代码在Form1.cs中,Form1.Designer.cs包含一些可视化编辑后绑定的成员以及函数等。

可视化界面在设计中修改name属性,可以修改窗口类的类名。修改后,程序中相关代码处会自动修改。Text属性可以修改窗口显示名称。

使用时:解决方案界面,点击Form1在可视化窗口进行布局,右键菜单进入Form1的代码中进行编辑。(Program.cs中最后一句说明了一开始调用的是哪个form)

  1. ide代码提示
    1. 重载函数

类内写入 override 后空格,会自动提示可以重载的函数

    1. 事件处理

this.button1.Click +=然后使用tab键,直接生成对应事件的处理函数

    1. 消息代码生成

在设计界面中,属性页里事件按钮显示事件列表,可选择添加消息的事件,输入函数名,回车键确认后,可以进入相应函数中可写入代码。

自动生成的代码包括Form1.Designer.cs中的声明代码,如:

this.Load += new System.EventHandler(this.load);

以及Form1.cs中的实现代码,如:

private void load(object sender, EventArgs e){ }

  1. 窗体
    1. 创建

右键工程,”添加”->”windows窗体”。(假设Name为form2

Form2  f=new Form2();

f.Show(); //第一次调用该函数时,窗体才会创建

f.Hide();

窗口必须在ui线程创建

ff.Show();          非模式对话框,需要在ui线程创建

ff.ShowDialog();  模式对话框,自带ui线程

    1. 屏蔽关闭按钮

override窗口的OnFormClosing事件

e.Cancel = true;

this.Hide();

可以使alt+F4与关闭按钮都失效,并隐藏窗体

    1. 屏蔽最大化按钮

this.MaximizeBox = false;

    1. 屏蔽所有系统按钮

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;  

最大化、最小化、关闭按钮都消失,alt+f4失效,上面出现一个红色×用来隐藏窗口

  1. 定时器

资源中,所有windows窗体内,可以找到定时器控件,将控件加入到窗体。在定时器控件的属性设置中,Name代表定时器的名字(如timer1),Interval代表定时器的间隔时间(1000代表1s),在属性的事件里,可以设置定时器响应函数的名字,并且回车生成函数,也可以直接点击定时器,生成并进入函数。使用时,timer1.Start();开启定时器,timer1.Stop();取消定时器。

  1. 屏幕大小

//获取工作区大小

Rectangle rect = new Rectangle();

rect = Screen.GetWorkingArea(this);

///获取整个屏幕大小,如果需要全屏,设置ResizeMode为NoResize;

Rectangle rect = System.Windows.Forms.SystemInformation.VirtualScreen;

  1. 控件大小/位置

this.**.Left = 0;

this.**.Top = 0;

this.**.Width = 1000;

this.**.Height = 500;

  1. 消息
    1. 截获消息

protected override void DefWndProc(ref Message m)

{

     switch (m.Msg)

     {

         case 0x0400 + 1:

                  

             break;

         default:

            base.DefWndProc(ref m);

            break;

    }

}

    1. 鼠标消息

string s = string.Format("{0},{1}", e.X, e.Y);

MessageBox.Show(s, "鼠标位置"); //弹出消息盒子

    1. 键盘消息

if (e.KeyCode == Keys.A && e.Control){  同时按下control和a  }

Keys类定义了所有的按键,对于control,alt这类的键,只能用e.Control这种布尔值进行判断,不能用KeyCode和Keys进行比较。

  1. 窗口设置

设置属性即可

    1. 顶层窗口

TopMost

    1. 去除标题和边框

WindowStyle  none

ResizeMode  NoResize

    1. 全屏

WindowState  Maximized

    1. 设置窗口位置

this.Left = 0;

this.Top = 0;

this.Width = 1000;

this.Height = 500;

  1. 控件
    1. 线程中访问控件

delegate void SetTextBoxCallBack(string txt);

void SetTextBox(string txt){this.textBox1.Text = txt;}

线程中使用:

this.Invoke(new SetTextBoxCallBack(SetTextBox), new object[] { i.ToString() });

    1. Anchor

该属性可以让控件在保持与边界的位置,即设置了四个方向,则窗口拉伸时,控件会按照比例进行拉伸。

    1. 可见性

**.Visibility = System.Windows.Visibility.Hidden;

    1. Button

可以在属性中设置图案

在消息响应函数中可以使用参数获取对象

((Button)sender).Text = "xx";

动态创建

Button btn = new Button();

btn.Text = "xx";

btn.Click += new EventHandler(btn_Click);

Controls.Add(btn);

    1. Label

this.label1.Text = "xx";

label1是在窗体中的Label控件的名称(可以通过属性Name进行修改)

    1. TextBox

string s=this.textBox1.Text;

string s = "xx";

this.textBox1.AppendText(s);

    1. ListBox

listBox1.Items.Add(s);

listBox1.SelectedIndex = 1;

    1. listView
      1. 创建

            listView1.GridLines = true;

            listView1.FullRowSelect = true;

            listView1.View = View.Details;

            listView1.Scrollable = true;

            listView1.MultiSelect = true;

            listView1.BackColor = Color.HotPink;//背景颜色

            listView1.ForeColor = Color.Yellow;//文字颜色

            //创建表头

            listView1.Columns.Add("ID", 100, HorizontalAlignment.Center);

            listView1.Columns.Add("Name", 100, HorizontalAlignment.Center);

            

            //加入一行数据

            ListViewItem item = new ListViewItem();

            item.SubItems.Clear();

            //ID列

            item.UseItemStyleForSubItems = false;

            item.SubItems[0].Text = "0";

            item.SubItems[0].BackColor = Color.Red;

            //Name列

            item.SubItems.Add(new ListViewItem.ListViewSubItem());

            item.SubItems[1].Text = "ABC";

            item.SubItems[1].BackColor = Color.Green;

            //数据加入控件

            listView1.Items.Add(item);

            //加入一行数据

            listView1.Items.Add(new ListViewItem(new string[] { "1","DEF"}));

      1. 删除

            //删除第一行数据

            listView1.Items[0].Remove();

            //删除所有数据

            while (listView1.Items.Count != 0)

            {

                listView1.Items[0].Remove();

            }

    1. pictureBox

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

//pictureBox1.Load("D:\\1.jpg");

pictureBox1.Image = Bitmap ;

    1. progress

progressBar1.Value = 100;//最大位置为100

    1. menuStrip

点击栏目,可以键入文字,下拉可以选择键入类型(如分割线等)。

在键入时,&可以增加alt的热键。

每个栏目都有属性,可以在属性中ShortCutKeys中增加快捷键,在事件中增加click属性可以添加回调函数。

    1. 工具栏
      1. ToolStrip

选择该控件,会在控件右上角出现一个小箭头,可以点击出一个菜单:选择插入标准项,可以插入打开,打印等标准的图标。选择编辑项,可以打开一个对话框,可以在其中为工具栏增加项目,包括按钮,文字等类型。

每个栏目都有属性,可以在属性中增加click事件。

      1. toolStripContainer

dock属性设置为fill

this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);

Controls.Add(this.toolStripContainer1);

    1. statusStrip

在加入项目的对话框中,增加项目后,为Name属性填写合适的名称如abc。在程序中,则可以abc.text=”xx”;

  1. FLASH

工具栏,空白处右键,选择项,COM组件

播放

this.axShockwaveFlash1.LoadMovie(0, "d:\\1.swf");//必须使用全路径

接收命令

控件属性,FSCOMMAND

string s = e.command;

  1. MDI

假设主窗口Name属性为默认的Form1

1)设置主窗口IsMdiContain属性为true

2)创建新的winform窗口(form2),在代码中修改构造函数

public Form2(Form1 parent)

{

            InitializeComponent();

            this.MdiParent = parent;

}

3)使用

Form2 child = new Form2(this);

child.Show();

猜你喜欢

转载自blog.csdn.net/jiyanglin/article/details/81582979