WinForm中如何实现panel和SplitContainer相结合进行布局呢

2024-05-10 15:48

本文主要是介绍WinForm中如何实现panel和SplitContainer相结合进行布局呢,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相信大家都会在winform应用程序中进行布局,通常我们也会使用一下这种布局,【如图】


以上布局分别采用了Panel【黑色区域】和SplitContainer控件【白色区域】,这布局相信大家耳熟能详了,比如VS2010不就是典型这样布局吗?

但是需要注意的是,SplitContainer控件的使用,控件中【在父容器中停靠】,就是让控件自动与容器对齐。而如果点击该选项后,发现整个控件都覆盖了窗口,达不到想要的分栏效果。这里就要注意了,我们需要实现的是控件可以随着父级一起调整大小,这里就要以panel为父级,让SplitContainer控件贴紧在panel控件。

那么如何实现呢?楼主我搞这个折腾了好几个小时,【偶是菜鸟哦】,后来发现,这两个控件都有一个设置父级调节的属性,那就是【Dock 属性】

其实就是用来调整控件的层次的
Dock 属性 是可以获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。
dock属性控制子控件在父窗口的停靠位置;anchor属性控制子控件与父控件之间的距离(自己动手试一下就明白了)
那么, 使用 Dock 属性可以定义在调整控件的父控件大小时如何自动调整控件的大小。

例如,将 Dock 设置为 Left 将导致控件与其父控件的左边缘对齐,并在父控件调整大小时调整自身大小。

这里我设置两个控件的Dock属性均为:Fill, 这样就实现了以上要的效果。将Panel控件Size设计为与窗体宽度一致,高度随意。选择SplitContainer控件,,在控件的黑色向右三角形,选择【在父容器中停靠】,这样就实现了贴近到panel边缘了。

--------------------------------------------------------------------------------------

    分割线:网上看到的一些相关资料,参考加深理解

+++++++++++++++++++++++++++++++++++++++++++++++++

一个控件可以停靠到其父容器的一个边缘或者可以停靠到所有边缘并充满父容器。
在停靠控件上设置 Margin 属性对控件与其容器边缘之间的距离没有任何影响。
注意: 
Anchor 和 Dock 属性是互相排斥的。每次只可以设置一个属性,最后设置的属性优先。


Anchor 属性 
获取或设置控件绑定到的容器的边缘并确定控件如何随其父级一起调整大小。

使用 Anchor 属性可以定义在调整控件的父控件大小时如何自动调整控件的大小。

将控件锚定到其父控件后,可确保当调整父控件的大小时锚定的边缘与父控件的边缘的相对位置保持不变。

一个控件可以锚定到其容器的一个或多个边缘。

例如,如果有一个带有 Button 的 Form,而该按钮的 Anchor 属性值设置为 Top 和 Bottom,当 Form 的 Height 增加时,Button 伸展,以保持到 Form 的上边缘和下边缘的锚定距离不变。

dock :fill(充满整个窗体,使splitcontainer的大小随着winform的大小的改变而改变)


//********************************************************************//

【1】WinForm程序中,如何固定splitcontainer的Panel大小,不允许用户拖动改变?

this.splitContainer1.IsSplitterFixed = true;

或者这样也可以:

指定FixedPanel属性可以实现一端固定宽度或高度。如下

SplitContainer1.FixedPanel=FixedPanel.Panel1


【以上说的不是很好,具体不明白的读者可以QQ联系偶:807397836】





这篇关于WinForm中如何实现panel和SplitContainer相结合进行布局呢的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

Redis延迟队列的实现示例

《Redis延迟队列的实现示例》Redis延迟队列是一种使用Redis实现的消息队列,本文主要介绍了Redis延迟队列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、什么是 Redis 延迟队列二、实现原理三、Java 代码示例四、注意事项五、使用 Redi

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统