【WinForm详细教程六】WinForm中的GroupBox和Panel 、TabControl 、SplitContainer控件

本文主要是介绍【WinForm详细教程六】WinForm中的GroupBox和Panel 、TabControl 、SplitContainer控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.GroupBox和Panel
    • 2.TabControl
    • 3.SplitContainer

1.GroupBox和Panel

GroupBox:是一个分组容器,提供一个框架将相关的控件组织在一起,它有标题、边框,但没有滚动条。

Panel:也是一个容器控件,用来集中显示和管理其他控件。它没有标题,有可选的边框,可以设置滚动条。

共同点:都是容器控件,可以将其他控件放入其中,实现集中管理。拖动容器时,其中的控件会一起移动。在布局时,通常用来进行分组,一般不会在这两个控件上注册事件。

代码示例

namespace WinFormsTest
{public partial class frmGroupBox_Panel : Form{public frmGroupBox_Panel(){InitializeComponent();}private void frmGroupBox_Panel_Load(object sender, EventArgs e){// 创建一个GroupBoxGroupBox groupBox = new GroupBox();groupBox.Text = "用户信息";groupBox.Location = new Point(10, 10);groupBox.Size = new Size(300, 200);this.Controls.Add(groupBox);// 在GroupBox中添加Label和TextBoxLabel nameLabel = new Label();nameLabel.Text = "姓名:";nameLabel.Location = new Point(10, 30);groupBox.Controls.Add(nameLabel);TextBox nameTextBox = new TextBox();nameTextBox.Location = new Point(120, 30);groupBox.Controls.Add(nameTextBox);// 创建一个PanelPanel panel = new Panel();panel.Location = new Point(320, 10);panel.Size = new Size(300, 200);this.Controls.Add(panel);// 在Panel中添加Label和TextBoxLabel emailLabel = new Label();emailLabel.Text = "邮箱:";emailLabel.Location = new Point(10, 30);panel.Controls.Add(emailLabel);TextBox emailTextBox = new TextBox();emailTextBox.Location = new Point(120, 30);panel.Controls.Add(emailTextBox);}}
}

在这里插入图片描述

2.TabControl

TabControl:是一个用于管理TabPages集合的容器控件,可以将多个TabPages分组显示在不同的选项卡中,每个TabPage是一个容器控件,可放置其他控件。

属性:

  • MultiLine:是否允许多行显示选项卡。
  • TabPages:获取TabControl中的选项卡集合。
  • Alignment:获取或设置选项卡的对齐方式。
  • Appearance:获取或设置选项卡的外观样式。
  • ImageList:获取或设置与选项卡关联的图像列表。

事件:

  • SelectedIndexChanged:当切换选项卡时发生。

代码示例:

namespace WinFormsTest
{public partial class frmTabControl : Form{public frmTabControl(){InitializeComponent();}private void frmTabControl_Load(object sender, EventArgs e){// 创建一个TabControlTabControl tabControl = new TabControl();tabControl.Location = new Point(10, 10);tabControl.Size = new Size(400, 300);this.Controls.Add(tabControl);// 创建第一个TabPageTabPage tabPage1 = new TabPage();tabPage1.Text = "页面1";tabControl.TabPages.Add(tabPage1);// 在第一个TabPage中添加控件Label label1 = new Label();label1.Text = "这是第一页";label1.Location = new Point(10, 10);tabPage1.Controls.Add(label1);// 创建第二个TabPageTabPage tabPage2 = new TabPage();tabPage2.Text = "页面2";tabControl.TabPages.Add(tabPage2);// 在第二个TabPage中添加控件Label label2 = new Label();label2.Text = "这是第二页";label2.Location = new Point(10, 10);tabPage2.Controls.Add(label2);// 添加选项卡切换事件tabControl.SelectedIndexChanged += TabControl_SelectedIndexChanged;}private void TabControl_SelectedIndexChanged(object sender, EventArgs e){TabControl tabControl = sender as TabControl;MessageBox.Show("切换到了" + tabControl.SelectedTab.Text);}}
}

动画66

3.SplitContainer

SplitContainer控件是一个用于将页面拆分成两个大小可调整的区域的容器控件,中间有一个拆分条,通过拖动拆分条来调整左右或上下区域的大小。

在这里插入图片描述

属性:

  • FixedPanel:指定在调整控件大小时,某个面板的宽度或高度保持不变。
  • Dock:控件的停靠方式,默认值为Fill。
  • IsSplitterFixed:指定拆分条是否固定,如果为true,则拆分条不能被拖动。
  • Orientation:指定拆分器是水平的还是垂直的,可选值为Horizontal或Vertical。
  • Panel1、Panel2:获取SplitContainer控件的两个面板。
  • SplitterDistance:指定拆分条与左边或上边的距离,单位为像素。
  • SplitterWidth:指定拆分条的宽度或高度,单位为像素。
  • SplitterIncrement:指定拆分条移动时的增量,单位为像素。

代码示例

namespace WinFormsTest
{public partial class frmSplitContainer : Form{public frmSplitContainer(){InitializeComponent();}private void frmSplitContainer_Load(object sender, EventArgs e){// 创建一个SplitContainer控件SplitContainer splitContainer1 = new SplitContainer();splitContainer1.Location = new Point(10, 10);splitContainer1.Size = new Size(400, 300);this.Controls.Add(splitContainer1);// 设置SplitContainer1的属性splitContainer1.FixedPanel = FixedPanel.Panel1;splitContainer1.Dock = DockStyle.Fill;splitContainer1.IsSplitterFixed = false;splitContainer1.Orientation = Orientation.Vertical;splitContainer1.SplitterDistance = 150;splitContainer1.SplitterWidth = 5;splitContainer1.SplitterIncrement = 10;// 在SplitContainer1的Panel1中添加一个SplitContainer控件SplitContainer splitContainer2 = new SplitContainer();splitContainer2.Location = new Point(0, 0);splitContainer2.Size = new Size(150, 300);splitContainer1.Panel1.Controls.Add(splitContainer2); // 将SplitContainer2控件添加到SplitContainer1的Panel1中// 设置SplitContainer2的属性splitContainer2.FixedPanel = FixedPanel.Panel2;splitContainer2.Dock = DockStyle.Fill;splitContainer2.IsSplitterFixed = false;splitContainer2.Orientation = Orientation.Horizontal;splitContainer2.SplitterDistance = 150;splitContainer2.SplitterWidth = 5;splitContainer2.SplitterIncrement = 10;// 在SplitContainer1的Panel2中添加控件Label label1 = new Label();label1.Text = "这是右边的面板";label1.Location = new Point(10, 10);splitContainer1.Panel2.Controls.Add(label1);// 在SplitContainer2的Panel1中添加控件Label label2 = new Label();label2.Text = "这是左上的面板";label2.Location = new Point(10, 10);splitContainer2.Panel1.Controls.Add(label2);// 在SplitContainer2的Panel2中添加控件Label label3 = new Label();label3.Text = "这是左下的面板";label3.Location = new Point(10, 10);splitContainer2.Panel2.Controls.Add(label3);// 添加 SplitterPaint 事件处理器splitContainer1.Paint += (sender, e) =>{// 绘制边界框Rectangle rect = splitContainer1.SplitterRectangle;using (Pen pen = new Pen(Color.Red, 2))  // 创建一个红色的画笔,线宽为2{e.Graphics.DrawRectangle(pen, rect);}};// 添加 SplitterPaint 事件处理器splitContainer2.Paint += (sender, e) =>{// 绘制边界框Rectangle rect = splitContainer2.SplitterRectangle;using (Pen pen = new Pen(Color.Green, 2))  // 创建一个红色的画笔,线宽为2{e.Graphics.DrawRectangle(pen, rect);}};}}
}

动画77

精彩推荐:
【C#进阶一】C#中的数组(Array)、集合(ArrayList,Queue,Stack, HashList)、List<T>、字典(Dictionary<K,T>)和双向链表LinkedList
【C#进阶八】C#中的序列化与反序列化下(二进制序列化、XML序列化及JSON序列化)

【C#进阶】C#语法中一些常用知识点总结
【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox
【WinForm详细教程三】WinForm中的NumericUpDown、PictureBox、RichTextBox及三种Timer控件
【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件

【C#进阶】C#中的委托、事件、回调函数、匿名函数和lambda表达式
希望有所帮助,同时欢迎关注我,后面将更新更多相关内容!

这篇关于【WinForm详细教程六】WinForm中的GroupBox和Panel 、TabControl 、SplitContainer控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/338466

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注