第一部分: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. NET持续集成与自动化部署

    https://www.cnblogs.com/hunternet/p/9590287.html 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛.由于我们 ...

  2. 1151 LCA in a Binary Tree(30 分)

    The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U ...

  3. 1109. Group Photo (25)

    Formation is very important when taking a group photo. Given the rules of forming K rows with N peop ...

  4. C#进阶之路(一):委托

    一.什么是委托 简单说它就是一个能把方法当参数传递的对象,而且还知道怎么调用这个方法,同时也是粒度更小的“接口”(约束了指向方法的签名). 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方 ...

  5. BZOJ5206: [Jsoi2017]原力

    BZOJ5206: [Jsoi2017]原力 https://lydsy.com/JudgeOnline/problem.php?id=5206 分析: 比较厉害的三元环问题. 设立阈值,当点的度数大 ...

  6. ACM学习历程—HDU5668 Circle(数论)

    http://acm.hdu.edu.cn/showproblem.php?pid=5668 这题的话,假设每次报x个,那么可以模拟一遍, 假设第i个出局的是a[i],那么从第i-1个出局的人后,重新 ...

  7. PHP 判断字符的编码 并输出想要的编码格式字符 (转)

    /** * 判断字符编码  并输出想要的编码 * Enter description here ... * @param unknown_type $string * @param unknown_t ...

  8. Nginx报错 connect() failed (111: Connection refused) while connecting to upstream 的解决方法

    今天访问公司的网站突然报错,抛出一些英文,提示看一下Nginx的error.log日志: cd  /usr/local/nginx/logs/  看到了error.log ,下一步 tail -n 2 ...

  9. hihoCoder1304:24点

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 周末,小Hi和小Ho都在家待着. 在收拾完房间时,小Ho偶然发现了一副扑克,于是两人考虑用这副扑克来打发时间. 小Ho:玩 ...

  10. 2015.5.9 C#编写DLL及C#调用C#DLL

    过程比C#调用VC++dll简单. 一.创建DLL 新建工程,类型选择类库,生成的结果就是dll 注意:在项目属性-应用程序中,注意三个地方,程序集名称和默认命名空间可以调整,但要一致,别的程序调用此 ...