Winform 窗体控件使用1

Winform是什么?

.Net开发平台中对Windows Form的简称,基于.Net Framework平台 的客户端开发技术,一般使用C#编程。

优点:Windows 风格的控件,以及事件,直接使用,开发快速。

创建项目

创建新项目-->Windows桌面-->Windows窗体应用--->输入项目名称,选择路径、解决方案名称--->点击确定。

Program类

[STAThread]
static void Main()
{
   Application.EnableVisualStyles();

   Application.SetCompatibleTextRenderingDefault(false);

   Application.Run(new Form1());
}

常用控件罗列

公共控件

Label 标签
TextBox  文本框
Button 按钮
RadioButton 单选按钮
CheckBox  复选框
ComboBox 下拉框

CheckedListBox 带复选框的列表项
DateTimePicker 日期时间选择控件
ListBox 列表框
ListView 以五种不同视图显示项的集合
MaskedTextBox 格式化文本框
MonthCalendar  月历
NumbericUpDown  可以增减数值的显示框
PictureBox 图像控件
ProgressBar 进度条
RichTextBox  高级文本框 富文本框
TreeView 树形控件

容器

GroupBox 分组控件  可以设置标题
Panel 分组控件,可以显示滚动条
TabControl 选项卡控件
SplitContainer 面板控件

菜单

ContextMenuStrip 右键菜单  
MenuStrip 菜单栏

工具栏

ToolStrip  工具栏
StatusStrip  状态栏

数据

DataGridView  数据显示
DataSet 内存缓存

组件

Timer  计时器
ImageList 图像集合

常用属性

Name:获取或设置窗体的名称,在应用程序中可以通过Name属性值来引用窗体。
WindowState:窗体的窗口状态,有三种值,Normal(正常)  Minimized(最小化)  Maximized(最大化)
StartPosition:运行时窗体的起始位置,默认是WindowsDefaultLocation.
Text:窗体标题栏中显示的文本。
Width:窗体的宽度。
Height:窗体的高度。
Left:窗体左边缘的x坐标(以像素为单位)。
Top:窗体上边缘的y坐标(以像素为单位)。
ControlBox:bool值,指示标题栏中是否显示控制框。
MaximizeBox:是否在标题栏中显示最大化按钮。
MinimizeBox:是否在标题栏中显示最小化按钮。
AcceptButton:该值是一个按钮的名称,当按 Enter 键时就相当于单击了窗体上的该按钮。 
CancelButton:该值是一个按钮的名称,当按 Esc 键时就相当于单击了窗体上的该按钮。 
AutoScroll:该值指示窗体是否自动显示滚动条。
AutoSize:是否调整自身大小以适应其内容的大小。
BackColor:窗体背景色
BackgroundImage:窗体的背景图像
ContextMenuStrip:右击窗体时显示的快捷菜单
Enabled:是否启用该控件
Cursor:鼠标移到窗体时显示的光标
Font:窗体中显示的文本的字体
ForeColor:显示文本的颜色
FormBorderStyle:窗体的边框和标题栏的外观和行为
HelpButton:bool 标题栏中是否有帮助按钮
Icon:窗体左上角图标 ico 格式  在菜单框中和最小化时显示
IsMdiContainer:指示窗体是否是MDI容器
Location:窗体左上角相对于容器左上角的坐标。
ShowIcon:是否显示图标
Opacity:窗体的不透明度百分比
Size:窗体大小
TopMost:是否显示其他未设置这个属性为true的窗体之上

常用方法

Show():显示窗体
ShowDialog():窗体显示为模式对话框。
Hide():隐藏窗体
Activate():激活窗体并给予它焦点 
Close():关闭窗体

常用事件

 Load:加载窗体时发生
 Activated:窗体被激活时发生
 Deactivate:被停用时发生
 FormClosed:窗体已关闭时发生
 FormClosing:正在关闭时发生

注册事件

事件注册

注册方式:

1.双击控件,就会默认注册单击或其他事件。

2.选择要注册事件的控件,在属性面板里,点击闪电符号,进入事件列表,找到要注册的事件,然后双击事件右边的空白部分,即可注册事件,并在代码页生成相应的事件处理方法代码。

        private void FrmLogin_Load(object sender, EventArgs e)
        {
            txtUserName.Text= "";
            txtPwd.Text = "";

            //Label lblMessage = new Label();
            //lblMessage.AutoSize = true;
            //lblMessage.Location = new System.Drawing.Point(60, 130);
            //lblMessage.Name = "lblMessage";
            //lblMessage.Size = new System.Drawing.Size(100, 12);
            //lblMessage.Text = "信息:";
            注册事件的代码
            //lblMessage.Click += LblMessage_Click;
            把Label添加窗体控件集合中
            //this.Controls.Add(lblMessage);
        }

        private void LblMessage_Click(object sender, EventArgs e)
        {
            Label lbl = (Label)sender;
            MessageBox.Show(lbl.Text);
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            FrmMain fMain = new FrmMain();
            fMain.Show();
            
        }

标签、文本框、按钮控件

Label 一般显示不能编辑的文本或图像 

  • Name:lblUserName  
  • Text:设置或获取文本信息
  • Image:显示图像

ImageList 图片集控件 

  • Size  Width Height
  • Tag 与控件相关的自定义数据
  • Enabled 是否启用
  • Location 位置  坐标

TextBox 文本框  单行 多行    输入信息或获取信息

  • Name 控件名称  txtUserName  
  • Text 文本信息
  • MultiLine 是否多行  
  • WordWrap:是否可以自动换行。
  • PasswordChar :*

方法:AppendText 指定文本追加到文本框的末尾  Clear() 清除  Focus()获取焦点
      Select()  SelectAll()

事件:TextChanged   Click

单选按钮与复选框的介绍与使用

RadioButton  单选按钮   一组单选按钮中,只能选中其中一个,互相排斥

  • 属性:Name 名称  Text 文本  Checked 是否选中 
  • AutoCheck 自动更改其他RadioButton的选中状态  true
  • 事件:CheckedChanged 选中状态改变时发生
  • 只能选中一项的情况:角色选择登录,性别选择

CheckBox  复选框

  •  一组复选框中,可以选择多个项。 
  • Name 名称  Text 文本  Checked 选中状态  
  • AutoCheck单击时自动更改选中状态 true 不要去修改
  • CheckState
  • 三种选择状态:未选中  Checked 选中  Indeterminate 中间状态
  • ThreeState 控制checkbox是三种状态 还是两种
  • 事件:ChekedChanged   CheckStateChanged  

ListBox简介

  • 列表框   选择一项或多项
  • 属性 Name  Items   DataSource   DisplayMember  ValueMember
  • 事件  SelectedIndexChanged 选择项更改时发生
  • Items方法

ListBox绑定数据

常用的绑定方式 

  • DataSource  
  • DisplayMember  
  • ValueMember

设置选定项

  • 获取选定项   SelcectedIndex  SelectedItem    SelectedIndices  SelectedItems

设置了DataSource,无法修改项的集合,解决办法:把对项的修改转移到寻数据源集合的操作上

public partial class FrmListBox : Form
{
    public FrmListBox()
    {
        InitializeComponent();
    }

    private void FrmListBox_Load(object sender, EventArgs e)
    {
        //项的清除
        lbList.Items.Clear();

        #region MyRegion Items方法操作项

        避免控件闪烁的问题
        //lbList.BeginUpdate();//闪烁
        for  加载大量的项  

        //lbList.EndUpdate();
        添加项
        //lbList.Items.Add(12);
        //lbList.Items.Add("jason");
        //string[] list = { "adbc", "admin", "sqlserver" };
        //lbList.Items.AddRange(list);

        //lbList.Items.Insert(3, "micosoft");

        //int index = lbList.Items.IndexOf("admin");//获取索引
        //bool bl = lbList.Items.Contains("sqlserver");//存在
        //lbList.Items.Remove("admin");
        //lbList.Items.RemoveAt(3);
        #endregion

        {
            List<UserInfo> list = new List<UserInfo>();
            list.Add(new UserInfo()
            {
                Id = 1,
                Name = "admin"
            });
            list.Add(new UserInfo()
            {
                Id = 2,
                Name = "lycchun"
            });
            list.Add(new UserInfo()
            {
                Id = 3,
                Name = "lwb"
            });
            list.Add(new UserInfo()
            {
                Id = 4,
                Name = "Eleven"
            });
            list.Add(new UserInfo()
            {
                Id = 5,
                Name = "Jason"
            });
            //绑定数据 项的实际值一般来说,就会指定对应显示值的编号
            lbList.DataSource = list;//选项的来源
            lbList.DisplayMember = "Name";//项显示的文本对应属性名
            lbList.ValueMember = "Id";//项的实际值对应的属性名

            //BindingSource bs = new BindingSource();
            //bs.DataSource = list;
            //lbList.DataSource = bs;
            //lbList.DisplayMember = "Name";//项显示的文本对应属性名
            //lbList.ValueMember = "Id";//项的实际值对应的属性名

        }
    }

    private void btnAct_Click(object sender, EventArgs e)
    {
        //MessageBox.Show(lbList.SelectedValue.ToString());
        //选定项索引的集合  多项
        var indexes = lbList.SelectedIndices;
        foreach(int i in indexes)
        {
            textBox1.AppendText(i.ToString() + ",");
        }
        //获取选定项  多项
        var items = lbList.SelectedItems;
        foreach (var item in items)
        {
            
        }

        //单项
        int index = lbList.SelectedIndex;
        var item0 = lbList.SelectedItem;
        var val = lbList.SelectedValue;
        //lbList.Items.Add(new UserInfo()
        //{
        //    Id = 6,
        //    Name = "adbc"
        //});
        //lbList.Items.RemoveAt(2);
        
        //将对项集合的修改转换成对数据源集合的修改
        List<UserInfo> listNew = lbList.DataSource as List<UserInfo>;
        //listNew.Add(new UserInfo()
        //{
        //    Id = 6,
        //    Name = "adbc"
        //});
        listNew.RemoveAt(2);

        lbList.DataSource = null;
        lbList.DataSource = listNew;
        lbList.DisplayMember = "Name";//项显示的文本对应属性名
        lbList.ValueMember = "Id";//项的实际值对应的属性名
    }
}

ComboBox介绍

  • 1.简介  下拉框  组合框  只能选择一项  
  • 2.属性 Name  DropDownStyle Items DataSource DisplayMember ValueMember
  • 3.Items方法  与ListBox一样的
  • 4.事件 SelectedIndexChanged
  • 5.绑定数据  
public partial class FrmComboBox : Form
{
    public FrmComboBox()
    {
        InitializeComponent();
    }

    private void FrmComboBox_Load(object sender, EventArgs e)
    {
        //单项的添加
        cboList.Items.Clear();//清除
        //cboList.Items.Add(123);
        //cboList.Items.Add("admin");
        //cboList.Items.Add(23.45);
        //cboList.Items.AddRange(new string[] { "adddd", "bcdd" });

        可以随意修改项
        //cboList.Items.Remove("admin");
        //cboList.Items.RemoveAt(1);

        List<UserInfo> list = new List<UserInfo>();
        //添加项数量很大的情况,出现闪烁
        //cboList.BeginUpdate();
        添加操作
        //foreach (var item in list)
        //{
        //    cboList.Items.Add(item);
        //}
        //cboList.DisplayMember = "Name";
        //cboList.ValueMember = "Id";
        //cboList.EndUpdate();

        list.Add(new UserInfo()
        {
            Id = 1,
            Name = "admin"
        });
        list.Add(new UserInfo()
        {
            Id = 2,
            Name = "lycchun"
        });
        list.Add(new UserInfo()
        {
            Id = 3,
            Name = "lwb"
        });
        list.Add(new UserInfo()
        {
            Id = 4,
            Name = "Eleven"
        });
        list.Add(new UserInfo()
        {
            Id = 5,
            Name = "Jason"
        });
      
        cboList.DataSource = list;
        cboList.DisplayMember = "Name";
        cboList.ValueMember = "Id";

        //ListBox一样,问题:指定了DataSource,就不能直接修改项的集合
        //同样,把项集合的修改转换成对数据源的修改上

        //数据项不多的情况,又要修改项集合,用Items.Add添加项
        //ComboBox经常使用:做选择使用,一般不修改项集合
    }
    //选择项更改时发生  一个下拉框,一般不会注册这个事件
    //级联下拉框   会使用这个事件
    private void cboList_SelectedIndexChanged(object sender, EventArgs e)
    {
        MessageBox.Show((cboList.SelectedItem as UserInfo).Name);
    }
}

CheckedListBox 介绍

  • 1.简介 类似ListBox  项的列表  区别:每个项前面有个复选框
  • 2.属性:CheckOnClick  
  • 3.Items方法 Add 
  • DataSource DisplayMember ValueMember
  • 4.事件:SelectedIndexChanged   ItemCheck
public partial class FrmCheckedListBox : Form
{
    public FrmCheckedListBox()
    {
        InitializeComponent();
    }

    private void FrmCheckedListBox_Load(object sender, EventArgs e)
    {
        cklLList.Items.Clear();
        cklLList.Items.Add(1);
        cklLList.Items.Add("aaa");
        cklLList.Items.AddRange(new string[] { "aaa", "bbb", "ccc" });
        cklLList.Items.Insert(2, "ddd");
        cklLList.Items.Remove("ddd");
        cklLList.Items.RemoveAt(2);//移除第3项

        List<UserInfo> list = new List<UserInfo>();
        list.Add(new UserInfo()
        {
            Id = 1,
            Name = "admin"
        });
        list.Add(new UserInfo()
        {
            Id = 2,
            Name = "lycchun"
        });
        list.Add(new UserInfo()
        {
            Id = 3,
            Name = "lwb"
        });
        list.Add(new UserInfo()
        {
            Id = 4,
            Name = "Eleven"
        });
        list.Add(new UserInfo()
        {
            Id = 5,
            Name = "Jason"
        });
        //当指定 了DataSiurce,是不可以修改Items集合的
        cklLList.DataSource = list;
        cklLList.DisplayMember = "Name";
        cklLList.ValueMember = "Id";
        //cklLList.Items.RemoveAt(4);
        //勾选的项的索引集合
        //cklLList.CheckedIndices
        //cklLList.CheckedItems
        //cklLList.SelectedIndices
        //cklLList.SelectedItems
        //cklLList.SelectedIndex
    }

    private void cklLList_ItemCheck(object sender, ItemCheckEventArgs e)
    {

    }
}

DateTimePicker介绍

  • 简介 日期时间控件
  • 属性  Value Text Format ---Custom   ---CustomFormat  ShowCheckBox  -true  ShowUpDown  false 
  • 事件 ValueChanged
        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = dateTimePicker1.Text.ToString();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            textBox1.Text = dateTimePicker1.Text;
        }

MonthCalender介绍

  • 简介 可以选择日期的月历控件 
  • 属性  FirstDayOfWeek  MaxSelectionCount  ShowWeekNumbers  ShowToday  
  • 事件  DateChanged 日期或范围发生改变是发生
  • 使用  时间范围,比较适用  直观上,快速查看和选择  
    public partial class FrmMonthCalendar : Form
    {
        public FrmMonthCalendar()
        {
            InitializeComponent();
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            txtStart.Text = monthCalendar1.SelectionStart.ToLongDateString();
            txtEnd.Text = monthCalendar1.SelectionEnd.ToLongDateString();
        }
    }

MaskedTextBox介绍

1.介绍  文本框  --掩码来区分正确与不正确

  掩码代号

  0 0--9之间的任何一个数字  *
  9 数字或空格 
  # 数字或空格  + -
  L ASCII字母     *
  & 字符          *
  C 字符
  A 字母  

  自定义掩码

2.属性

Name  BeepOnError  Mask  PasswordChar PromptChar  RejectInputOnFirstFailure  Text TextMaskFormat  CutCopyMaskFormat

3.事件  

MaskChanged  MaskInputRejected

4.使用  

格式化输入信息

MaskedTextBox介绍

    public partial class FrmMaskedTextBox : Form
    {
        public FrmMaskedTextBox()
        {
            InitializeComponent();
        }

        private void FrmMaskedTextBox_Load(object sender, EventArgs e)
        {
            mtxtYouBian.BeepOnError = true;//输入错误提示音
            mtxtYouBian.CutCopyMaskFormat = MaskFormat.IncludePromptAndLiterals;
            mtxtYouBian.RejectInputOnFirstFailure = true;

            //IncludePrompt  只包括输入文本 不包括掩码字符
            //IncludeLiterals  包括输入文本 掩码字符
            //ExcludePromptAndLiterals 只包括输入文本
            mtxtYouBian.TextMaskFormat= MaskFormat.IncludePromptAndLiterals;//输入文本\掩码和提示符中定义的任意文本字符
            mtxtYouBian.PasswordChar = '*';//设置密码字符
            mtxtYouBian.PasswordChar = '\0';//取消密码字符


        }

        private void button1_Click(object sender, EventArgs e)
        {
            txtValue.Text = mtxtYouBian.Text;
        }
    }

NumericUpDown介绍

NumericUpDown控件

  • 1.介绍  数字显示框  向上、下按钮,来增加、减少  显示的数值
  • 2.属性 
  • 3.方法  UpButton()  DownButton()
  • 4.事件 ValueChanged
  • 5.使用  数字数据,通过控件来调整值
    public partial class FrmNumericUpDown : Form
    {
        public FrmNumericUpDown()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            txtValue.Text = numbricUDCount.Text+" "+numbricUDCount.Value;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            numbricUDCount.UpButton();//增加的量:Increment 的值
        }

        private void btnPlus_Click(object sender, EventArgs e)
        {
            numbricUDCount.DownButton();//减少数字框的值
        }

        private void numbricUDCount_ValueChanged(object sender, EventArgs e)
        {
            txtValue.Text = numbricUDCount.Value.ToString();
        }
    }

PictureBox介绍

PictureBox控件

  • 1.介绍  图像控件---显示图像
  • 2.属性  Image  ImageLocation  SizeMode
  • 3.事件 Click
  • 4.使用  Form中显示图像的控件
        private void FrmPictureBox_Load(object sender, EventArgs e)
        {
            //设置要显示的图片
           // pbImg.Image = Image.FromFile(@"D:\课件\录制课件\WF\WFFormUse\WFFormUse\Imgs\04-jh.jpg");
           pbImg.ImageLocation= @"D:\课件\录制课件\WF\WFFormUse\WFFormUse\Imgs\04-jh.jpg";
            pbImg.SizeMode = PictureBoxSizeMode.StretchImage;
        }

RichTextBox介绍

RichTextBox   富文本框  高级的文本输入和编辑功能 

  • 1.介绍
  • 2.常用属性
  • 3.方法  Find  SaveFile  LoadFile
  • 4.事件  TextChanged  SelectionChanged  LinkClicked

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值