Loading... # 前言 很多学员在学习《.NET开发之WinForm编程实战》的时候对突如其来的控件冲昏了头脑,第一个问题是控件太多,根本记不住。第二个问题就是控件的属性太多,想用的属性找不到甚至是不会用。 那么下面的这个文章应该能够帮助你,不信?你来看看。 # 常见控件属性、方法和事件 ## WinForm常用控件通用属性 (基本上所有的控件都支持以下属性) | 属性名称 | 说明 | | ------------------------- | ---------------------------------------------------------------------- | | **Name** | 控件名称,在一个窗体中该名称必须唯一,所有控件需要使用其对应的简写前缀 | | **Text** | 与控件所关联的显示文本 | | **BackColor** | 控件的背景颜色 | | **BackgroundImage** | 控件的背景图片 | | **Font** | 字体设置 | | **Size** | 控件大小(宽高) | | **Visible** | 控件是否可见 【bool】 | | **Enable** | 控件使用启用 【bool】 | ## 窗体(Form)的主要属性与事件⚡ 【简写前缀:Frm】 | 属性或事件名称 | 说明与描述 | | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Icon** | 窗体图标 | | **MaximizeBox** | 是否启用最大化按钮 【bool】 | | **MinimizeBox** | 是否启用最小化按钮 【bool】 | | **FormBorderStyle** | 窗体边框风格,其取值范围如下:<br />**None**:无边框<br />**FixedSingle**:固定的单行边框<br />**Fixed3D**:固定的三维样式边框<br />**FixedDialog**:固定的对话框样式的粗边框<br />**Sizable**:可调整大小的边框<br />**FixedToolWindow**:不可调整大小的工具窗口边框<br />**SizableToolWindow**:可调整大小的工具窗口边框 | | **StartPosition** | 指定窗体打开时的初始位置,其取值范围如下:<br />**CenterParent**:窗体在其父窗体中居中<br />**CenterScreen**:窗体在当前显示窗口中居中,其尺寸在窗体大小中指定<br />**Manual**:窗体的位置由 Location 属性确定<br />**WindowsDefaultBounds**:窗体定位在 Windows 默认位置,其边界也由 Windows 默认决定<br />**WindowsDefaultLocation**:窗体定位在 Windows 默认位置,其尺寸在窗体大小中指定 | | **WindowState** | 指定窗体是最小化、最大化还是还原窗口,其取值范围如下:<br />**Maximized**:最大化窗口<br />**Minimized**:最小化窗口<br />**Normal**:还原窗口 | | **IsMdiContainer** | 是否为(MDI)窗体容器 【bool】 | | **AcceptButton** | 在窗体上敲击回车(Enter)时触发绑定的按钮 | | **CancelButton** | 在窗体上敲击取消(Esc)时触发绑定的按钮 | | **Load** ⚡ | 在第一次显示窗体前发生**【默认】** | | **FormClosing** ⚡ | 关闭窗体前发生 | ## 标签(Label)的主要属性与事件⚡ 【简写前缀:lbl】 | 属性或事件名称 | 说明 | | ------------------ | -------------------------------------------- | | **AutoSize** | 是否允许自动调整大小 【bool】 【默认:true】 | | **Image** | 在标签上显示的图像 | | **Click** ⚡ | 单击控件时发生**【默认】** | ## 文本框(TextBox)的主要属性、方法📦与事件⚡ 【简写前缀:txt】 | 属性、方法、事件名称 | 说明 | | ------------------------------- | ------------------------------------------------------------------------ | | **Multiline** | 获取或设置一个值,该值指示这是否为多行文本框控件【bool】 【默认:false】 | | **PasswordChar** | 自定义密码字符,该设定优先于:`UseSystemPasswordChar` | | **UseSystemPasswordChar** | 是否使用系统自带密码字符显示 | | **ReadOnly** | 指示文本框中的文本是否为只读 【bool】 【默认:false】 | | **MaxLength** | 获取或设置用户可在文本框控件中键入或粘贴的最大字符数 | | **Focus()** 📦 | 为控件设置输入焦点,演示案例:`txtXXX.Focus();` | | **Clear()** 📦 | 从文本框控件中清除所有文本,演示案例:`txtXXX.Clear();` | | **SelectAll()** 📦 | 选定文本框中的所有文本,演示案例:`txtXXX.SelectAll();` | | **Copy()** 📦 | 将文本框中的当前选定内容复制到“剪贴板”,演示案例:`txtXXX.Copy();` | | **TextChanged** ⚡ | 在文本框的Text属性值更改时发生**【默认】** | ## 组合框(ComboBox)的主要属性、方法📦与事件⚡ 【简写前缀:cbo】 | 属性、方法、事件名称 | 说明 | | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **DropDownStyle** | 获取或设置指定组合框样式的值,取值范围如下:<br />**DropDown**:通过单击下箭头指定显示列表,并指定文本部分可编辑。<br />这表示用户可以输入新的值,而不仅限于选择列表中现有的值。<br />**DropDownList**:通过单击下箭头指定显示列表,并指定文本部分不可编辑。<br />这表示用户不能输入新的值。 只能选择列表中已有的值。 **【常用】**<br />**Simple**:指定列表始终可见,并指定文本部分可编辑。<br />这表示用户可以输入新的值,而不仅限于选择列表中现有的值。 | | **Items** | 组合框中的数据项 【更多参考:*组合框数据项的属性和方法*】 | | **SelectedIndex** | 获取或设置指定当前选定项的索引,索引从0开始**【常用】 【代码】** | | **SelectedItem** | 获取或设置组合框中当前选定的项 | | **SelectedValue** | 获取或设置由 `ValueMember` 属性指定的成员属性的值 **【常用】 【代码】** | | **DisplayMember** | 获取或这是组合框**显示**值字段【常用】 【代码】 | | **ValueMember** | 获取或这是组合框**隐藏**值字段,在绑定数据时,一般绑定**自增列**或**主键列【常用】 【代码】** | | **DataSource** | 获取或设置组合框的数据源【常用】 【代码】 | | **Focus()** 📦 | 为控件设置输入焦点,演示案例:`cboXXX.Focus();` | | **SelectedIndexChanged** ⚡ | 在 SelectedIndex 属性更改后发生**【默认】** | | **Click** ⚡ | 在单击控件时发生 | ### 组合框数据项的属性和方法📦 | 属性、方法名称 | 说明 | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | **Count** | 获取数据项的数目,演示案例:`int number = cboXXX.Items.Count;` | | **Clear()** 📦 | 清除组合框所有数据列表项,演示案例:`cboXXX.Items.Clear();` | | **Add()** 📦 | 向组合框的数据项中添加新项(该方法返回:添加成功的项目在原集合中项的从零开始的索引),演示案例:`int index = cboXXX.Items.Add("请选择所属年级");` | | **RemoveAt()** 📦 | 移除组合框中指定索引处的项,演示案例:`cboXXX.Items.RemoveAt(0); //删除第一个列表数据` | ## 按钮(Button)的主要属性、方法📦与事件⚡ 【简写前缀:btn】 | 属性、方法、事件名称 | 说明 | | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **FlatStyle** | 获取或设置按钮控件的平面样式外观,取值范围如下:<br />**Flat**:该控件以平面显示<br />**Popup**:该控件以平面显示,直到鼠标指针移动到该控件为止,此时该控件外观为三维<br />**Standard**:该控件外观为三维<br />**System**:该控件的外观是由用户的操作系统决定的 | | **Enable** | 是否启用此按钮 【bool】【默认:true】 | | **TextAlign** | 按钮上的显示文本的对其方式 | | **Click** ⚡ | 在单击控件时发生**【默认】** | ## 菜单栏(MenuStrip)的主要属性 【简写前缀:ms】 | 属性名称 | 说明 | | ----------------- | --------------------------------------------------------- | | MdiWindowListItem | 获取或设置用于显示多文档界面 (MDI) 子窗体列表的菜单列表项 | ### 菜单栏项(ToolStripMenuItem)的事件⚡ 【简写前缀:tsmi】 | 事件名称 | 说明 | | ------------------ | ---------------------------- | | **Click** ⚡ | 在单击控件时发生**【默认】** | ## 工具栏(ToolStrip)的主要属性 【简写前缀:ts】 | 属性名称 | 说明 | | -------------------------- | -------------------------------------------------------------- | | **GripStyle** | 获取或设置工具栏移动手柄是可见还是隐藏 【bool】 【默认:true】 | | **ImageScalingSize** | 获取或设置工具栏上所用图像的大小(以像素为单位) | ### 工具栏项(ToolStripItem)的主要属性 ![工具栏所支持的工具栏项](https://www.jbea.cn/usr/uploads/2023/04/1056130643.png) | 元素名称 | 描述 | 简写 | | --------------------------------- | -------------------------------------------------------------------------- | ------- | | **ToolStripButton** | 支持图像和文本的工具栏按钮 | tsbtn | | **ToolStripLabel** | 工具栏文本标签 | tslbl | | **ToolStripSplitButton** | 常规按钮和下拉按钮的组合 | tssbtn | | **ToolStripDropDownButton** | 支持下拉功能的按钮 | tsddbtn | | **ToolStripSeparator** | 分割线 | tsspt | | **ToolStripComboBox** | 文本框,用户可以在其中输入文本,以及用户可以从中选择文本以填充文本框的列表 | tscbo | | **ToolStripTextBox** | 用户能够输入文本 | tstxt | | **ToolStripProgressBar** | 进度栏控件 | tspb | | 属性、事件名称 | 说明 | | --------------------------- | ------------------------------------------------------------------------------------------------------ | | **DisplayStyle** | 获取或设置是否在工具栏项上图片和文本的显示方式,包括:显示文本,显示图像,显示文本与图像,什么也不显示 | | **Image** | 按钮/标签上所显示的图片 | | **ImageScaling** | 是否调整按钮/标签上所显示的图片大小 | | **TextImageRelation** | 按钮/标签上图片与文本的相对位置 | | **Click** ⚡ | 在单击控件时发生**【默认】** | ## 分组框(GroupBox) 【简写前缀:gbo】 <div class="tip inlineBlock info simple"> 请参阅通用属性即可 </div> ## 单选按钮(RadioButton)的主要属性与事件⚡ 【简写前缀:rbtn】 | 属性、事件名称 | 说明 | | ------------------ | ---------------------------- | | **Checked** | 只是单选按钮是否已被选中 | | **Click** ⚡ | 在单击控件时发生**【默认】** | ## 日期控件(DateTimePicker)的主要属性 【简写前缀:dtp】 | 属性名称 | 说明 | | ----------------- | -------------------------------------------------------------------- | | **Value** | 指定或设置日期控件所选择的值,所设置或获取的数据类型是:`DateTime` | | **MaxDate** | 限制最大日期值 | | **MinDate** | 限制最小日期值 | | **Format** | 用于设置控件中显示的日期和事件的格式 | ## 面板(Panel) 【简写前缀:pl】 <div class="tip inlineBlock info simple"> 请参阅通用属性即可 </div> ## 图片列表(ImageList)的主要属性【简写前缀:imgl】 | 属性名称 | 说明 | | -------------------- | ------------------------ | | **ImageSize** | 图片列表中的图像大小 | | **ColorDepth** | 图片列表中的图像颜色深度 | | **Images** | 图片列表中的图像集合 | <div class="tip inlineBlock warning simple small"> 在使用时,请先设置"ImageSize"和"ColorDepth",确认无误后,再选择对应图片 </div> ## 定时器(Timer)的主要属性、方法📦和事件⚡【简写前缀:t】 | 属性、方法、事件名称 | 说明 | | -------------------- | ---------------------------------------------------------------------------------- | | **Enable** | 使用启用定时器【bool】【默认:false】 | | **Interval** | 获取或设置在相对于上一次发生的 Tick 事件引发 Tick 事件之前的时间(以毫秒为单位)。 | | **stop()** 📦 | 停止定时器 | | **start()** 📦 | 启用定时器 | | **Tick** ⚡ | 当指定的计时器间隔已过去而且计时器处于启用状态时发生 | ## 上下文菜单(ContextMenuStrip)【简写前缀:cms】 <div class="tip inlineBlock info simple"> 请参阅通用属性即可 </div> ## 数据列表视图(ListView)的主要属性、方法📦和事件⚡【简写前缀:lv】 | 属性、方法、事件名称 | 说明 | | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **View** | 指定列表视图控件中列表项的显示方式,取值范围如下:<br />**LargeIcon**:每个项都显示为一个大图标,在它的下边带一个标签。<br />**Details**:详细信息视图,需要编辑列,如果没有列的存在,则无法显示数据。<br />**List**:每个项都显示为一个小图标,在它的右边带一个标签。<br />**SmallIcon**:每个项都显示为一个小图标,在它的右边带一个标签。<br />**Tile**:每个项都显示为一个完整大小的图标,在它的右边带项标签和子项信息。 | | **Items** | 列表视图中列表项的集合 `清除列表项: lvXXX.Items.Clear();``添加列表项: lvXXX.Items.Add(ListViewItem);` | | **FullRowSelect** | 指示列表视图是否全行选中【bool】【默认:false】 | | **GridLines** | 指示列表视图是否显示网格线【bool】【默认:false】 | | **MultiSelect** | 指示列表视图是否允许选中多行数据【bool】【默认:true】 | | **LargeImageList** | 获取或设置列表视图大图标显示时需要使用的ImageList控件 | | **SmallImageList** | 获取或设置列表视图小图标显示时需要使用的ImageList控件 | | **ContextMenuStrip** | 关联用于右击该控件时需要显示的ContextMenuStrip(上下文菜单)控件 | | **SelectedItems** | 选中项的集合 【代码】 | | **Columns** | 详细信息视图中所显示的列 | | **Clear()** 📦 | 清除所有项,包括Columns | | **SelectedIndexChanged ⚡** | 当选定的索引更改时发生**【默认】** | | **Click** ⚡ | 在单击控件时发生 | | **MouseDoubleClick** ⚡ | 鼠标双击列表项时发生 | ### 数据列表项(ListViewItem)主要属性【简写前缀:lvi】【代码】 | 属性名称 | 说明 | | --------------------- | ------------------------------------------------------------------------- | | **Text** | 显示文本,在详细列表视图中默认显示在第一列 | | **ImageIndex** | 关联图片下标 | | **ToolTipText** | 鼠标悬停显示文本 | | **Tag** | 关联数据 【窗体不体现,一般用于绑定隐藏数据】 | | **SubItems** | 项目子集【仅在Details和Tile视图中展示】【使用代码添加数据时,顺序不能乱】 | ## 图片框(PictureBox)主要属性【简写前缀:pic】 | 属性名称 | 说明 | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Image** | 图片框所显示的图片 | | **SizeMode** | 指定如何处理图片的显示模式,其取值范围如下:<br />**AutoSize**:自动调整图片框大小,使其与包含的图像大小一致。<br />**CenterImage**:如果图片框比图像大,则图像将居中显示。 如果图像比图片框大,则图片将居于图片框中心,而外边缘将被剪裁掉。<br />**Normal**:图像被置于图片框的左上角。 如果图像比包含它的图片框大,则该图像将被剪裁掉。<br />**StretchImage**:图片框中的图像被拉伸或收缩,以适合图片框的大小。<br />**Zoom**:图像大小按其原有的大小比例被增加或减小。 | ## 数据网格视图(DataGridView)的主要属性【简写前缀:dgv】 | 属性名称 | 说明 | | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **AutoGenerateColumns** | 是否允许自动创建列 【bool】【默认:true】【代码】 | | **AllowUserResizeRows** | 是否允许调整行高【bool】【默认:true】 | | **MultiSelect** | 是否允许选择多项【bool】【默认:true】 | | **RowHeadersVisible** | 是否显示包含行标题的列【bool】【默认:true】 | | **SelectionMode** | 设定如何选定数据网格视图控件的单元格<br />**CellSelect**:可以选定一个或多个单元格<br />**ColumnHeaderSelect**:可以通过单击列的标头单元格选定此列通过单击某个单元格可以单独选定此单元格<br />**FullColumnSelect**:通过单击列的标头或该列所包含的单元格选定整个列<br />**FullRowSelect**:通过单击行的标头或是该行所包含的单元格选定整个行<br />**RowHeaderSelect**:通过单击行的标头单元格选定此行 通过单击某个单元格可以单独选定此单元格 | | **DataSource** | 设置其显示数据源 | | **ReadOnly** | 是否允许编辑数据网格视图控件中的值 【bool】 【默认:true】 | | **AllowUserToAddRows** | 是否允许在网格视图控件中添加新的行【bool】 【默认:true】 | | **AllowUserToDeleteRows** | 是否允许在网格视图控件中删除行【bool】 【默认:true】 | ## 树状视图(TreeView)的主要属性、方法📦和事件⚡【简写前缀:tv】 | 属性名称 | 说明 | | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | | **SelectedNode** | 选中的节点<br /> `获取选中节点的深度:int level = tvXXX.SelectedNode.Level;`<br />`获取选中节点的Tag值:object tag = tvXXX.SelectedNode.Tag;` | | **Nodes** | 树状菜单中所有的根节点 | | **ExpandAll()** 📦 | 展开所有节点,演示案例:<br />`tvXXX.ExpandAll()`; | | **AfterSelect** ⚡ | 节点选中后发生 | # 常见代码与讲解 ## 关闭当前窗口、退出应用程序 **关闭窗口**:`this.Close(); ` 或者 `Close();` **退出应用程序**:`Application.Exit();` ## 消息框的使用 `MessageBox.Show("消息内容", "消息框标题", MessageBoxButtons.按钮, MessageBoxIcon.图标);` <div class="tip inlineBlock info simple small"> 在开发过程中,弹出消息框必须传递四个参数,以保证其美观。 </div> 消息框有返回值类型,演示案例如下: ```csharp DialogResult dr = MessageBox.Show("是否需要删除选中的数据?", "温馨提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if(dr == DialogResult.Cancel) { // 用户取消操作 return; } ``` ## 获取、设置文本框的文本值 **取值**:`string xxx = txtxxx.Text;` **赋值**:`txtXX.Text = "值";` ## 清空文本的值 `txtXXX.Clear();` 或者 `txtXXX.Text = "";` 或者 `txtXXX.Text = string.Empty;` ## 组合框(ComboBox)数据源绑定 ```csharp cboXXX.DisplayMember = "字段列名"; //显示值 cboXXX.ValueMember = "字段列名"; //隐藏值,一般绑定主键列或者自增列 cboXXX.DataSource = DataTable/DataView 对象; //绑定数据源 ``` ## 获取下组合框(ComboBox)中的隐藏值 ```csharp string xxx = cboXXX.SelectedValue.ToString(); //根据自己的数据类型进行转换即可 ``` ## 组合框(ComboBox)默认选中项的修改 ```csharp cboXXX.SelectedIndex = 0; //使下拉框默认选中第一项,下标从 0 开始,设置时,下拉框必须有值 ``` ## 获取或设置日期框(DateTimePicker)的值 **取值**:`string xxx = dtpXXX.value.ToString("yyyy-MM-dd");` **赋值**:`dtpXXX.Value = DateTime 对象; //获取当前日期:DateTime.Now;` ## 数据网格视图(DataGridView)数据绑定 ```csharp dgvXXX.AutoGenerateColumns = false; //不允许控件自动创建列 dgvXXX.DataSource = DataTable/DataView 对象; //绑定数据源 ``` ## 获取数据网格视图(DataGridView)选中的值 ```csharp if (dgvXXX.SelectedRows.Count > 0) //判断是否有选中的行数据 { string xxx = dgvXXX.SelectedRows[0].Cells[0].Value.ToString(); //Cells[0]:表示第一个列 } ``` ## ListView控件项的绑定 ```csharp ListViewItem lvi = new ListViewItem(); //创建一个空的 ListView 项 lvi.Text = "xxx"; //绑定第一个列的值 lvi.ImageIndex = 0; //绑定对应的图片下标 [可省略] lvi.SubItems.Add("xxx"); //绑定子项,子项添加时顺序不可打乱 lvXXX.Items.Add(lvi); //将创建的项添加到 ListView 控件中 ``` ## 获取ListView控件选中的值 ```csharp if(lvxxx.SelectedItems.Count > 0) { string xxx = lvxxx.SelectedItems[0].SubItems[0].Text; //Subitems 包含第一个列 } ``` ## 清空 ListView 列表项 ```csharp lvxxx.Items.Clear(); ``` ## FrmA 窗体向 FrmB 窗体传值 1. 在 FrmB 窗体中添加一个共有属性 `public 数据类型 属性名 { get; set; }` 2. 在 FrmA 窗体中创建 FrmB 窗体对象,使用 对象名.属性名 直接传递 ```csharp FrmB frm = new FrmB(); frm.属性名 = 需要传递的值; //传递数据值 frm.Show(); //frm.ShowDialog(); ``` ## FrmB 窗体调用 FrmA 窗体中的方法 1. 修改 FrmA 需要被调用方法的访问修饰符为 `public` 2. 在 FrmA 窗体代码的最上方,创建同名静态属性 `public static FrmA frmA;` 3. 在 FrmA 的构造函数中写入以下代码 `frmA = this;` 4. FrmB 窗体中调用 ```csharp if(FrmA.frmA != null) FrmA.frmA.方法名(); ``` --- 离线电子版文档下载地址: <div class="hideContent">此处内容需要评论回复后(审核通过)方可阅读。</div> 最后修改:2023 年 10 月 26 日 © 允许规范转载 赞 6 都滑到这里了,不点赞再走!?
2 条评论
好
好