布局控件

news/2025/3/22 22:56:52/文章来源:https://www.cnblogs.com/throughFog/p/18787266

Panel

对其他控件进行分组,可添加滚动条

重要属性:

  • AutoScroll:是否自动显示滚动条
  • BorderStyle:边框样式
// 动态向Panel中添加按钮
private void Form1_Load(object sender, EventArgs e)
{Panel panel = new Panel();panel.Size = new Size(200, 200);panel.AutoScroll = true;this.Controls.Add(panel);for (int i = 0; i < 10; i++){Button btn = new Button();btn.Text = "按钮" + i;btn.Location = new Point(10, i * 30);panel.Controls.Add(btn);}
}

GroupBox

将相关控件分组,提供标题和边框

重要属性:

  • Text:标题
  • FlatStyle:边框样式
  • 与Panel区别:
    • GroupBox自带标题和边框,适合逻辑分组
    • Panel更灵活,支持动态布局
// 在GroupBox中放置单选按钮
GroupBox groupBox1 = new GroupBox();
groupBox1.Text = "选择性别";
groupBox1.Location = new Point(20, 20);
this.Controls.Add(groupBox1);RadioButton radioMale = new RadioButton();
radioMale.Text = "男";
radioMale.Location = new Point(10, 20);
groupBox1.Controls.Add(radioMale);RadioButton radioFemale = new RadioButton();
radioFemale.Text = "女";
radioFemale.Location = new Point(10, 50);
groupBox1.Controls.Add(radioFemale);

FlowLayoutPanel

自动排列子控件(水平或垂直),支持动态调整布局

重要属性:

  • FlowDirection:方向(LeftToRight、TopDown等)
  • WrapContents:是否换行
// 动态添加按钮到FlowLayoutPanel
private void Form1_Load(object sender, EventArgs e)
{FlowLayoutPanel flowPanel = new FlowLayoutPanel();flowPanel.Dock = DockStyle.Fill; // 填充整个窗体flowPanel.FlowDirection = FlowDirection.LeftToRight;flowPanel.WrapContents = true;this.Controls.Add(flowPanel);for (int i = 0; i < 10; i++){Button btn = new Button();btn.Text = "按钮" + i;btn.Width = 80;flowPanel.Controls.Add(btn);}
}

TabControl

用于实现多页签功能

属性:

  • TabPages:页签集合
  • Apperance:样式,Normal、Buttons、FlatButtons
  • Alignment:位置,Top、Bottom、Left、Right
  • Multiline:是否允许多行
  • SizeMode:宽度模式,Normal、FillToRight、Fixed
  • SelectedIndex:获取选中的页签索引
  • SelectedTab:获取选中的对象
    方法:
  • Add
  • Remove
    事件:
  • SelectedIndexChanged

高级技巧

自定义页签样式
通过重绘(DrawItem事件)实现自定义页签外观:

tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
tabControl1.DrawItem += (sender, e) =>
{// 自定义绘制逻辑e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds);TextRenderer.DrawText(e.Graphics, tabControl1.TabPages[e.Index].Text,e.Font, e.Bounds, Color.Blue, TextFormatFlags.VerticalCenter);
};

隐藏页签头

tabControl1.Appearance = TabAppearance.FlatButtons;
tabControl1.ItemSize = new Size(0, 1);
tabControl1.SizeMode = TabSizeMode.Fixed;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/903669.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NSSCTF ROUND#28 Ciallo~(∠・ω )⌒☆ WriteUp

WriteUp 题目信息 来源:NSSCTF 名称:ROUND#28 Ciallo~(∠・ω )⌒☆ 分类:Reverse 描述:无题目链接: https://www.nssctf.cn/contest/732/解题思路 首先使用DIE对文件进行查壳,发现这是一个无壳的64位exe文件。于是使用64位IDA对文件进行反汇编,得到伪代码如下:先一步步…

day35 nfs共享服务器的学习

day35 nfs共享服务器的学习 1.企业集群为什么要共享服务器 没有共享服务器先看一下没有共享服务器的问题 A用户上传啦图片到web01的服务器,然后B用户访问但是负载均衡服务器把请求分发到了web02的服务器上,导致B用户查看不了图片。配置啦共享服务器无论是用户把图片发送给web…

Nature Communications | 全基因组沉默子图谱揭示人类细胞基因调控新机制

摘要总结 这篇文章是2025年1月发表在《Nature Communications》杂志上的一篇研究,标题为“Uncovering the whole genome silencers of human cells via Ss-STARR-seq”。这篇文章通过开发一种名为Ss-STARR-seq的高通量筛选技术,首次在全基因组范围内系统性鉴定了人类细胞中的…

数据结构3

基本数据处理技术概率论与数理统计1-基本概念 概率论与数理统计2-基本数据结构 概率论与数理统计3-基本数据处理技术 基本的数据处理技术 查找 查找的基本概念 在哪里找:查找表是由同一类型的数据元素(或记录)构成的集合,集合中的数据元素之间关系松散。 按什么查找:根据给…

NSSCTF ROUND#28 动态调试 WriteUp

WriteUp 题目信息 来源:NSSCTF 名称:ROUND#28 动态调试 分类:Reverse 描述:无题目链接: https://www.nssctf.cn/contest/732/解题思路 首先使用DIE对文件进行查壳,发现这是一个无壳的32位ELF文件。于是使用32位IDA对文件进行反汇编,得到伪代码如下:为方便阅读伪代码,修…

Video Analysis Assignment

This scene is what the heroine saw from a begin sycarmore at the first time . It was this landscape that awake the heroine of her father’s word: “ A painting is more than the sum of its parts”. This scene is shot from the big sycarmore and it is a estab…

AI一键生成流程图架构图甘特图饼图等可视化图形 原创

AI脑图除了使用文字、语音、图片、文件、网页和视频等一键生成思维导图外,现在也可以支持一键生成流程图、架构图、甘特图等可视化图形了,使用非常简单,告诉AI脑图你想要生成什么图,大概不到两分钟就会制作好并以图片回复给你啦。 支持的可视化图形有: 流程图 例如向AI脑图…

Atcoder ABC398.F - ABCBA 题解 KMP的next函数

题目链接:https://atcoder.jp/contests/abc398/tasks/abc398_f 题目大意: 给你一个字符串 \(s\),要求在字符串 \(s\) 的末尾添加尽可能少的字符使其变成一个回文串。 解题思路: 首先,设输入的字符串为 \(s = s_1 s_2 \ldots s_n\),设字符串 \(s\) 翻转后的字符串为 \(s\)…

方法的定义和调用

//方法的应用 package Base; public class Demon16 { public static void main(String[] args) {// TODO Auto-generated method stubint max=max(10,10);System.out.println(max); } //比大小 public static int max(int num1,int num2) {int result=0;if(num1==num2) {System…

浅说线性差分和树上差分

目录线性差分正常思路差分思路二维差分的定义二维差分的解释例题1 地毯树上差分引入点差分例题1——wwx的出玩分析与解答例题2——松鼠的新家分析与解答边差分例题1——边差分模版分析与解答例题2——运输计划分析与解答 线性差分 当我们这里有\(n\)个数,现在我要对其中一段进…

Spring 事务失效

场景1:代码:执行结果:异常抛出,但是数据没有回滚。 代理对象调用 b() 方法 没有开启事务:普通对象调用a() 方法开启事务:在b() 方法上加入事务注解,开启事务就没问题:本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/18787133

征程 6X CAMSYS 性能测试方案介绍

1.性能测试方法原理 CAMSYS 其性能指标主要包括:帧率、延迟,以及系统的 DDR 带宽、CPU 占用率等。 对于帧率、延迟,通过在驱动中创建 trace event,分别记录通路上的每个 IP,每帧开始处理(frame_start)和结束处理(frame_end)的时间戳信息和帧信息,来实现帧率计算和延迟…