winform窗体(二)——控件

一、窗体的事件

每一个窗体都有一个事件,这个窗体加载完成之后执行哪一段代码

位置:1)右键属性→事件→load 双击进入

2)双击窗体任意一个位置进入

删除事件:先将事件页面里面的挂好的事件删除,再删后台代码里面的事件

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()//构造方法
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)// sender(事件源):谁触发的就是谁的这里是Form1的;e(事件数据)
        {
             //写事件
        }
    }
}  

事件

事件

控件在工具箱里面找,找到之后双击即可添加进来,也可以点住拖进来

※每个工具,控件,窗体都有一个name,相当于id,用来标识该对象的名称,name值不允许重复

二、控件

1、Label -- 文本显示工具

Text:需要显示的文字——属性

Label的取值赋值:

private void Form1_Load(object sender, EventArgs e)
{
       label1.Text = "啊哈哈哈";
      MessageBox.Show(label1.Text);
}

Label

2、TextBox -- 文本框

TextBox的取值赋值:

private void Form1_Load(object sender, EventArgs e)
{
     textBox1.Text = "请输入用户名";
    MessageBox.Show(textBox1.Text);
}

TexBox

3、RichTextBox --文本域

可以随意调整大小

部分属性:

Dock:定义要绑定到容器的控件边框

Multiline:控制编辑控件的文本是否能够跨越多行

ReadOnly:控制能否更改编辑控件中的文本,默认是False,改为True是只读

Enabled:指示是否已启用该控件

Visible:确定该控件是可见还是隐藏

※用法同TextBox

4、Button -- 按钮

text:修改按钮显示的文字

name:id

FlatStyle:确定当用户将鼠标移动到控件上并单击时该控件的外观

※点击事件:双击按钮可以时间某些功能

5、radioButton -- 单选按钮

text:文字

Checked:是否选中

把多个单选按钮做成互斥,winform里面没有group属性,所以要看他们父级容器(只能是上一级),如果在同一个父级下就是同一组

如果要进行分组,则将同一组的按钮放到同一个容器下 用Panel

取选中值:

每一种工具都是一个类 如:radiobutton都是radiobutton类

每一个窗体都继承自form类 所有工具也均继承自一个父类就是Control

private void button2_Click(object sender, EventArgs e)
        {
            //从form1中所有的工具(对象)
            foreach (Control ctr in panel1.Controls)//取到该容器下的所有工具  是个集合
            {
                //判断该对象ctr是不是属于子类radiobutton
                if (ctr is RadioButton)
                {
                    //如果是则装换类型
                    RadioButton rd = ctr as RadioButton;
                    if (rd.Checked)
                    {
                        MessageBox.Show(rd.Text);
                    }
                }
            }
        }

radiobutton--取选中值

设置某一项选中:

private void button3_Click(object sender, EventArgs e)
        {
            //遍历form1中的工具
            foreach (Control ctr in panel1.Controls)
            {
                //判断是不是子类radiobutton
                if (ctr is RadioButton)
                {
                    //如果是强转
                    RadioButton rd = ctr as RadioButton;
                    if (rd.Text == "女")
                    {
                        rd.Checked = true;
                    }
                }
            }
        }

radiobutton--设置选中

※利用代码往容器里添加工具:

private void Form1_Load(object sender, EventArgs e)
        {
            //首先造一个该工具的对象
            RadioButton radiobutton4 = new RadioButton();
            //赋值
            radiobutton4.Text = "哈";
            //括号里面是一个父类,里氏代换原则
            panel1.Controls.Add(radiobutton4);
        }

代码添加工具

6、checkbox -- 复选框组

Checked属性:是否选中

Tag属性:可以存储自定义数,用户自己定义

取选中值:

private void button4_Click(object sender, EventArgs e)
        {
            foreach (Control ctr in panel2.Controls)
            {
                if (ctr is CheckBox)
                {
                    CheckBox ck = ctr as CheckBox;
                    if (ck.Checked)
                    {
                        MessageBox.Show(ck.Text);
                    }
                }
            }
        }

checkbox--取选中值

读取存取的自定义数:MessageBox.Show(ck.Tag.ToString());

设置某一项选中:

private void button5_Click(object sender, EventArgs e)
        {
            foreach (Control ctr in panel2.Controls)
            {
                if (ctr is CheckBox)
                {
                    CheckBox ck = ctr as CheckBox;
                    if (ck.Text == "汉族")
                    {
                        ck.Checked = true;
                    }
                }
            }
        }

checkbox--设置选中

全选:

private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            foreach (Control ctr in panel2.Controls)
            {
                if (ctr is CheckBox)
                {
                    CheckBox ck = ctr as CheckBox;
                    ck.Checked = checkBox3.Checked;
                }
            }
        }

设置全选或全不选

7、listbox--列表框

items:列表框中的值 是一个集合 一般用数据库读取数据来添加

SelectionMode:指示列表框将是单项选择,多项选择还是不可选择

从数据库添加数据:

首先建立数据库连接(三个类,建类程序省略),然后用下面的程序添加;

private void Form1_Load(object sender, EventArgs e)
        {
            NationDA da = new NationDA();
            //给listbox指定 数据源
            listBox1.DataSource = da.Select();
            //指定显示的值
            listBox1.DisplayMember = "Name";
            //指定后台value值
            listBox1.ValueMember = "Code";
        }

从数据库添加数据

取多项选中的value值:

private void button6_Click(object sender, EventArgs e)
        {
            foreach (Nation data in listBox1.SelectedItems)//SelectedItems获取当前选定项的集合
            {
                MessageBox.Show(data.Code);
            }
        }

获取多项选中项的value值

取选中的value值:

MessageBox.Show(listNation.SelectedValue.ToString())

取选中项:(取到的是实体对象)

Nation data = listbox1.SelectedItem as Nation; MessageBox.Show(data.Code);

设置某项选中:

private void button7_Click(object sender, EventArgs e)
        {
            //方法1:
            //listBox1.SelectedIndex = 1; //设置当前选定项从0开始的索引
            //方法2:
            listBox1.SelectedValue = "n005"; //设置指定成员属性的值
        }

设置某项被选中2种方法

8、combobox--下拉列表

所有用法同listbox:

private void Form1_Load(object sender, EventArgs e)
        {
            NationDA da = new NationDA();
            //添加一项请选择
            Nation data = new Nation();
            data.Code = "qxz";
            data.Name = "请选择";

            List<Nation> list = da.Select();
            list.Add(data);

            comboBox1.DataSource = list;
            comboBox1.DisplayMember = "Name";
            comboBox1.ValueMember = "Code";
        }

添加数据库信息,自己再添加一项

9、DataTimePicker -- 日期选择控件
设置选中:

private void button8_Click(object sender, EventArgs e)
        {
            //定义一个时间
            string sj = "2016-1-1";
            //方法1:
            //dateTimePicker1.Value = Convert.ToDateTime(sj);
            //方法2:
            dateTimePicker1.Text = sj;
        }

设置时间2方法

取选中值:

 private void button7_Click(object sender, EventArgs e)
{
      MessageBox.Show(dateTimePicker1.Value.ToString("yyyy年MM月dd HH:mm:ss:ms"));
}

取选中时间

10、PictureBox

外观,Image可以选择图片路径

行为,SizeMode可以设置图片大小布局方式

11、Imagelist--图片集

imageList1.Images[n];

12、notifyicon--托盘图标工具
      Text:鼠标放上显示的文字
      Icon:托盘图标
      Visible:可见或隐藏
      ContextMenuStrip:与该图标关联的快捷菜单

13、MenuStrip--菜单工具
       设置热键:在编辑的时候输入(&F)
       设置快捷键:选中菜单项--右键属性--ShortCutKeys--设置快捷键
       设置分隔线:在输入的时候输入减号(-)

14、ContextMenuStrip--快捷菜单

15、ToolTip --鼠标移入提示框

ToolTipTitle:提示的标题

Error: 错误图标

Info :信息图标

None :不是标准图标

Warning: 警告图标

在其他控件的杂项里面选择

16、ProgressBar --进度条
      value:来设置进度条当前进度

MarqueeAnimationSpeed:字幕动画的速度以毫秒为单位

Maximum:使用的范围上限

17、Timer -- 时钟工具

Enabled:可用不可用
Interval:间隔时间
Tick事件:间隔执行的事件

※Tick事件与进度条(ProgressBar)联合运用

private void timer1_Tick(object sender, EventArgs e)
        {
            if (progressBar1.Value < 100)
            {
                progressBar1.Value = progressBar1.Value + 10;
            }

            label1.Text = DateTime.Now.ToString("HH:mm:ss");
        }

联合

※以上控件的设置选中和取选中值,本人都是通过Button按钮的点击事件实现的!

时间: 2024-10-05 01:55:38

winform窗体(二)——控件的相关文章

C# WinForm窗体及其控件自适应各种屏幕分辨率

C# WinForm窗体及其控件自适应各种屏幕分辨率 一.说明  我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可.因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标.  在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化.为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗

WinForm窗体及其控件的自适应

3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass(); 2.Form_Load事件中   asc.controllInitializeSize(this); 3.Page_SizeChanged事件中 asc.controlAutoSize(this); AutoSizeFormClass.cs源码如下: class AutoSizeFormCl

WinForm窗体PropertyGrid控件的使用

使用过 Microsoft Visual Basic 或 Microsoft Visual Studio .NET的朋友,一定使用过属性浏览器来浏览.查看或编辑一个或多个对象的属性..NET 框架 PropertyGrid 控件是 Visual Studio .NET 属性浏览器的核心.PropertyGrid 控件显示对象或类型的属性,并主要通过使用反射(在运行时提供类型信息的技术)来检索项目的属性.PropertyGrid控件包含以下部分:一般属性.可展开属性.属性类别.属性说明和属性编辑器

C# Winform窗体和控件自适应大小

1.在项目中创建类AutoSizeForm AutoSizeForm.cs文件代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CSharpFormApplication { class AutoResizeForm { //(1).

Winform跨窗体操作控件(使用委托)

Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作. 实例介绍:两个窗体,Form1按钮打开Form2,然后在Form2的TextBox输入值在Form1的TextBox中显示出来. 一.项目结构 Form1窗体设计: Form2窗体设计: 二.代码实现 在Form2的代码中声明一个委托(写在Form2类外)-> public delegate void ChangeFor

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking&quot;的使用 (二)

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二) 编写人:CC阿爸 2015-1-29 今天我想与大家继续一起分享这一伟大的控件.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 1.    DockPanel的一点点改进: 在浏览网上的一些技术文章发现,的确有些地方还是可以进一步改进,如当双击Tab时,原先是直接把当前Tab所表示的这个窗体,从主窗体的框架上分离现来,成为一个浮动的窗体.这不是我们想要的,有些同学修改源代码,把它改成了双击关

[WinForm] 使用反射将业务对象绑定到窗体或控件容器

在WebForm中,可以使用反射将业务对象绑定到 ASP.NET 窗体控件.最近做Winform项目,也参考WebForm中的代码实现同样的功能.     Winform没有提供类似WebForm中的FindControl方法,我于是用遍历控件的方式,写了一个类似WebForm中的这个方法,考虑到Winform中的很多控件放在Label.TabControl中,方法采用了递归的方式.     Winform和Winform的控件也有些区别,如在Winform中,DateTimePicker取值是

Winform 获取当前单击的控件名称 和 向窗体添加控件

Winform如何获取当前单击的控件名称,比如有100个Button 和一个button_Click()的按钮事件 ,分别点击不同按钮后显示所点击的按钮名称?private void button_Click(object sender, EventArgs e) { Button button = (Button)sender; MessageBox.Show(button.Name); } 然后将要实现的按钮绑定该button_Click事件OK. 向窗体添加控件,比如添加一个Button按

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking&quot;的使用 (一)

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"WeifenLuo.WinFormsUI.Docking",发现的确是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的今天在这里,我想与大家一起分这一伟大的控件.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 一.引用方法: 1.建立一个WinFo

WinForm中关于控件焦点的问题

方法一: 在打开一个窗体时,我们往往需要设置焦点让光标出现在我们希望它出现的位置上. 这时我们可以在窗体的Activated事件中设置焦点 例如我们希望光标在打开窗体的时候出现在textBox1上,我们只需要在Activated事件中添加如下代码: this.textBox1.Focus(); 即可. Activated事件:当窗体被激活时发生的事件. this.Activated += (sender, e) => {  this.txtCustomerNo.Focus();//光标在文本框控