第一部分:FlowLayoutPanel控件

实现效果: 将FlowLayoutPanel做为导航菜单按钮的容器 以实现 某个菜单按钮不显示时
整体的导航菜单布局不至于"缺憾" 原导航菜单为 button1 button2 button3 当button2不显示时 导航菜单自动变为 button1 button3 而不是 button1   空位 button2

如果以Panel做容器 则实现不了如上效果

再有 以FlowLayoutPanel为容器 默认内部的控件会"集"在一起 为实现button1 与button2之间有想要的间隔 可通过设定button1的Margin属性的bottom 来实现想要的间隔

属性
FlowLayoutPanel控件常用属性及说明如表1所示。

第二部分:拆分器控件Splitcontainer

拆分器控件Splitcontainer ,是一个含有Splitter拆分条的容器,它包含两个面板容器Panel1,Panel2,可以移动拆分条,对面板大小进行控制!

控件学习示例程序!

属性介绍;

//拆分条的是否启用禁用 bool IsSplitterFixed{get;set;} bool类型,true:不能调节拆分条; false :能够使用拆分条. 决定是否可以通过键盘或鼠标来移动拆分器。

//拆分器的方向;垂直和水平方向上拆分控件,上下和左右两块面板 Orientation Orientation{get;set;} Orientation是枚举;包含两个值;水平与垂直; Vertical ; Horizontal ;

//获取拆分条(器)的大小 Rectangle SplitterRectangle{get;} 取得拆分条的矩形表示形式;new Rectangle(X,Y width,height)拆分器就是指拆分条,坐标点,宽高 拆分条,是一个矩形表示的! 该属性的变化,与Orientation属性相关!垂直,水平显示状态,拆分条的位置大小当然不同!

//指定拆分器面板之一保持不变 调节拆分器,使用panel1或panel2面板不会改变大小; FixedPanel FixedPanel{get;set;} FixedPanel枚举: 有三个值;None(默认值), Panel1 ,Panel2; 确定调整SplitterContainer控件后,哪个面板将保持不变!调整拆器容器大小时,可以保持哪个面板不变时, 才设置此属性,如果容器不会改变,也不用设置此属性!

//设置拆分器离容器的初始大小,拆分条左或上边缘离容器的初始宽度。 int SplitterDistance{get;set;} 像素为单位,默认值为40 ,在移动拆分器时,这个值是变化的,计算左边缘或上边缘的距离! 拆分器的初始距离.

//设置拖动拆分条(器)移动的增量大小, 也就是拖移的速度!同样的拖动,移动的宽度可不相同。 int SplitterIncrement{get;set;} 获取设置拆分条移动的增量,默认值为1; 测试SplitterIncrement属性值的大小,可以通接受键盘上下键的,调节拆分器,IsSplitterFixed必须为true

//设置拆分条的宽度 int SplitterWidth{get;set;} 默认值为4 ,通过设置可以更改此值,使拆分条的宽度变粗!

// 获取设置拆分器与panel1的左边缘,或上边缘的距离固定大小 ;与边缘的默认大小为25 int Panel1MinSize{get;set;} int Panel2MinSize{get;set;} 此属性作用比较大,可控制拆分器的活动范围大小,也就是左右面板中固定的大小面积,拆分器不能 进行拖放进入的区域。
把该属性设置为0;表示拆分器可以到过缘。

//设置拆分器的Panel1 Panel2折叠或展开; bool Panel1Collapsed{get;set;} bool Panel2Collapsed{get;set;}

注意:Panel1Collapsed属性,true为拆叠,false展开为默认值, 在拆叠状态下,不能设置SplitterDistance,SplitterWidth属性,这时的拆分器处了隐藏关闭状态, 必须在展开时才能设置这些属性!

//Pane1 与Pane2属性 拆分器的两个面板容器 SplitterPanel Panel1{get} SplitterPanel Panel2{get;} SplitterPanel:Panel类型

此属性设置如果与SplitterDistance属性冲突,拆分条的初始位置会以此属性为准进行定位!

事件介绍: 1:SplitterMoving事件 拆分器移动时发生;拆分条移动过程中发生! 委托类型;SplitterCancelEventHandler 数据类型为:SplitterCancelEventArgs :CancelEventArgs             数据成员为:SplitX,SplitY,MouseCursorX,MouseCursorY,表示在工作区,鼠标指针,拆分条的坐      标值。

SplitX SplitY X坐标点指的是拆分器与容器距离,垂直Y为0      MouseCursorX MouseCursorY 表示鼠标指针在工作的位置点坐标

2: SplitterMoved事件

拆分器移动后发生; 委托类型;SplitterEventHandler 数据类型;SplitterEventArgs :EventArgs
         数据成员;SplitX,SplitY,X,Y 表示在工作区,鼠标指针,拆分条的坐标值,这都是移动后的位置值!

Moving事件是指,鼠标按住拆分器,不放,进行移动时,发生,只要拆分器移动就会发生,不移则事件不会发生! Moved事件是指,移动拆分器之后,释放鼠标时,发生的!它是Moving事件之后发生!

小结:

控件的Dock属性如果设置成Fill,窗体的单击事件,不会被触发;因为控件遮挡住了!

发现C#winform编程中不常用的控件(一)<FlowLayoutPanel控件><拆分器控件Splitcontainer >的更多相关文章

  1. C# winform编程中多线程操作控件方法

    private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart( ...

  2. socket编程中客户端常用函数

    1 常用函数 1.1   connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...

  3. .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件

    系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件>中介绍了WinForm ...

  4. Shell 编程中的常用工具

    文件查找 find 命令 语法格式 find命令总结: 常用选项: -name 查找/etc目录下以conf结尾的文件 find /etc -name "*.conf" -inam ...

  5. socket编程中服务器端常用函数 以及简单实现

    1 常用函数 1.1   socket() int socket(int family, int type, int protocol); socket()打开一个网络通讯端口,如果成功的话,返回一个 ...

  6. 学习Java绝对要懂的,Java编程中最常用的几种排序算法!

    今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来!     ,群里有免费的学习视频和项目给大家练手.大神有空时也 ...

  7. C# WINFORM 编程中,选择**文件夹**而不是文件的方法(转)

    我们选择文件可以用 OpenFileDialog ,但是文件夹有两种方法. 法一: 用C#的FolderNameEditor类的子类FolderBrowser类来实现获取浏览文件夹对话框的功能.下面来 ...

  8. socket编程中客户端常用函数 以及简单实现

    1 常用函数 1.1   connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...

  9. 在WinForm编程中犯的一些错误

    1.一直以为,MouseClick事件在鼠标点击时发生,MouseDoubleClick事件在鼠标双击时发生.那么在单击鼠标时会调用MouseClick事件处理程序,双击鼠标时会调用MouseDoub ...

随机推荐

  1. HDU - 5977 Garden of Eden (树形dp+容斥)

    题意:一棵树上有n(n<=50000)个结点,结点有k(k<=10)种颜色,问树上总共有多少条包含所有颜色的路径. 我最初的想法是树形状压dp,设dp[u][S]为以结点u为根的包含颜色集 ...

  2. LeetCode 251. Flatten 2D Vector

    原题链接在这里:https://leetcode.com/problems/flatten-2d-vector/ 题目: Implement an iterator to flatten a 2d v ...

  3. 批处理执行多个SQL文件到oracle

    最近因为项目需要,打算写一个批处理程序,更新数据库中的表数据.写了3个sql文件:a.sql,b.sql,c.sql,在这三个文件中,实现了创建表,并向表中插入数据的操作.目前我通过SQLPLUS可以 ...

  4. arm linux 下移植busybox 的tftp

    (1)进入busybox目录,make menuconfig ,然后在networking中勾选tftp项跟tftpd项. (2)配置/etc/inetd.conf 中关于tftp的选项(此部未验证, ...

  5. mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明

    一.共享表空间与独立表空间MySQL5.5默认是共享表空间 ,5.6中,默认是独立表空间. 共享表空间:ibdata1是InnoDB的共享表空间,默认配置是把全部表空间存放到ibdata1中,因此而造 ...

  6. BZOJ2342:[SHOI2011]双倍回文

    浅谈\(Manacher\):https://www.cnblogs.com/AKMer/p/10431603.html 题目传送门:https://www.lydsy.com/JudgeOnline ...

  7. BZOJ3170:[TJOI2013]松鼠聚会

    题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=3170 通过分析可以发现,题目所说的两点之间的距离就是切比雪夫距离. 两点之间欧几里得距离:\( ...

  8. @property_@synthesize 配套使用

    @property 类默认实现变量的get set方法 @synthesize 是指定那个变量的 get和set方法 eg: .h文件中定义 类Student中含有两个 int age,和int _a ...

  9. 网页效果分析 VCD分解

    VCD分解分为三部分: 1. view 视觉                   HTML + CSS 基本界面模板 2. controller 控制            javascript  内 ...

  10. 2016第十三届浙江省赛 D - The Lucky Week

    D - The Lucky Week Edward, the headmaster of the Marjar University, is very busy every day and alway ...