拆分器控件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,窗体的单击事件,不会被触发;因为控件遮挡住了!

  1. using System;
  2. using Cshcn;
  3. using System.Drawing;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Threading;
  7. namespace Cshcn
  8. {
  9. class Program
  10. {
  11. [STAThread]
  12. static void Main()
  13. {
  14. Application.EnableVisualStyles();
  15. Application.SetCompatibleTextRenderingDefault(false);
  16. Application.Run(new Form1());
  17. }
  18. }
  19. public class Form1:Form
  20. {
  21. private SplitContainer splitContainer1;
  22. private SplitContainer splitContainer2;
  23. private Button buttonSplitterFixed;
  24. private Button buttonOrientation;
  25. private Label labelPanelCollapsed;
  26. private Button buttonSplitterWidth;
  27. private bool IsCollapsed=true;
  28. private bool IsVer=true;
  29. private bool IsSplitFixed=false;
  30. private ToolTip toolTip;
  31. public Form1()
  32. {
  33. InitializeComponent();
  34. }
  35. public void InitializeComponent()
  36. {
  37. this.splitContainer1=new SplitContainer();
  38. this.splitContainer2=new SplitContainer();
  39. this.buttonSplitterFixed=new Button();
  40. this.buttonOrientation=new Button();
  41. this.labelPanelCollapsed=new Label();
  42. this.buttonSplitterWidth=new Button();
  43. this.toolTip=new ToolTip();
  44. this.splitContainer2.SuspendLayout();
  45. this.splitContainer1.SuspendLayout();
  46. this.SuspendLayout();
  47. this.splitContainer1.Location=new Point(10,10);
  48. this.splitContainer1.Size=new Size(480,420);
  49. this.splitContainer1.BorderStyle=BorderStyle.Fixed3D;
  50. this.splitContainer1.FixedPanel=FixedPanel.Panel1;
  51. this.splitContainer1.SplitterDistance=100;
  52. this.splitContainer1.Panel1MinSize=0;
  53. this.splitContainer1.SplitterWidth=4;
  54. this.splitContainer1.SplitterMoving+=new SplitterCancelEventHandler
  55. (this.splitContainer1_Moving);
  56. this.splitContainer1.SplitterMoved+=new SplitterEventHandler
  57. (this.splitContainer1_Moved);
  58. this.splitContainer2.BackColor=SystemColors.Control;
  59. this.splitContainer2.Dock=DockStyle.Fill;
  60. this.splitContainer2.BorderStyle=BorderStyle.Fixed3D;
  61. this.splitContainer2.SplitterWidth=4;
  62. this.splitContainer2.SplitterIncrement=6;
  63. this.splitContainer2.Orientation=Orientation.Horizontal;
  64. this.splitContainer2.Panel2MinSize=100;
  65. this.splitContainer2.SplitterMoving+=new SplitterCancelEventHandler
  66. (this.splitContainer2_Moving);
  67. this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
  68. this.labelPanelCollapsed.Location=new Point(508,20);
  69. this.labelPanelCollapsed.Size=new Size(35,35);
  70. this.labelPanelCollapsed.BackColor=Color.YellowGreen;
  71. this.labelPanelCollapsed.AutoSize=false;
  72. this.labelPanelCollapsed.MouseEnter+=new EventHandler
  73. (this.labelPanelCollapsed_MouseEnter);
  74. this.labelPanelCollapsed.MouseLeave+=new EventHandler
  75. (this.labelPanelCollapsed_MouseLeave);
  76. this.labelPanelCollapsed.Click+=new EventHandler
  77. (this.labelPanelCollapsed_Click);
  78. this.buttonSplitterFixed.Text="锁定拆分条";
  79. this.buttonSplitterFixed.Location=new Point(508,70);
  80. this.buttonSplitterFixed.Click+=new EventHandler
  81. (this.buttonSplitterFixed_Click);
  82. this.buttonOrientation.Text="垂直/水平";
  83. this.buttonOrientation.Location=new Point(508,110);
  84. this.buttonOrientation.Click+=new EventHandler
  85. (this.buttonOrientation_Click);
  86. this.buttonSplitterWidth.Text="拆分条宽度";
  87. this.buttonSplitterWidth.Location=new Point(508,150);
  88. this.buttonSplitterWidth.Click+=new EventHandler
  89. (this.buttonSplitterWidth_Click);
  90. this.buttonSplitterWidth.MouseMove+=new MouseEventHandler
  91. (this.buttonSplitterWidth_MouseMove);
  92. this.buttonSplitterWidth.MouseLeave+=new EventHandler
  93. (this.buttonSplitterWidth_MouseLeave);
  94. this.Text="拆分器_SplitContainer";
  95. this.ClientSize=new Size(600,440);
  96. this.StartPosition=FormStartPosition.CenterScreen;
  97. this.MaximizeBox=false;
  98. this.Controls.AddRange(new Control[]
  99. {this.splitContainer1,this.buttonSplitterFixed,
  100. this.labelPanelCollapsed,this.buttonOrientation,
  101. this.buttonSplitterWidth});
  102. this.splitContainer2.ResumeLayout(false);
  103. this.splitContainer1.ResumeLayout(false);
  104. this.ResumeLayout(false);
  105. }
  106. private void buttonSplitterWidth_Click(object sender,EventArgs e)
  107. {
  108. splitContainer1.SplitterWidth+=4;
  109. }
  110. private void buttonSplitterWidth_MouseMove(object sender,MouseEventArgs e)
  111. {
  112. Button btn=(Button)sender;
  113. toolTip.SetToolTip(btn,"Width= "+SplitterWidth);
  114. }
  115. private void buttonSplitterWidth_MouseLeave(object sender,EventArgs e)
  116. {
  117. splitContainer1.SplitterWidth=4;
  118. }
  119. private string SplitterWidth
  120. {
  121. get{return splitContainer1.SplitterWidth.ToString();}
  122. }
  123. private void buttonSplitterFixed_Click(object sender,EventArgs e)
  124. {
  125. if(!IsSplitFixed)
  126. {
  127. splitContainer1.IsSplitterFixed=true;
  128. IsSplitFixed=true;
  129. }
  130. else
  131. {
  132. splitContainer1.IsSplitterFixed=false;
  133. IsSplitFixed=false;
  134. }
  135. }
  136. private void labelPanelCollapsed_MouseEnter(object sender,EventArgs e)
  137. {
  138. for(int i=0;i<10;i++)
  139. {
  140. Thread.Sleep(8);
  141. splitContainer1.SplitterDistance+=20;
  142. }
  143. labelPanelCollapsed.BackColor=Color.Brown;
  144. }
  145. private void labelPanelCollapsed_MouseLeave(object sender,EventArgs e)
  146. {
  147. for(int i=0;i<10;i++)
  148. {
  149. Thread.Sleep(8);
  150. splitContainer1.SplitterDistance-=20;
  151. }
  152. labelPanelCollapsed.BackColor=Color.YellowGreen;
  153. Label label=(Label)sender;
  154. toolTip.SetToolTip(label,"Click:展开/折叠");
  155. }
  156. private void labelPanelCollapsed_Click(object sedner, EventArgs e)
  157. {
  158. if(IsCollapsed)
  159. {
  160. splitContainer1.Panel1Collapsed=true;
  161. IsCollapsed=false;
  162. }
  163. else
  164. {
  165. splitContainer1.Panel1Collapsed=false;
  166. IsCollapsed=true;
  167. }
  168. labelPanelCollapsed.BackColor=Color.YellowGreen;
  169. }
  170. private void buttonOrientation_Click(object sedner, EventArgs e)
  171. {
  172. if(IsVer)
  173. {
  174. splitContainer1.Orientation=Orientation.Horizontal;
  175. IsVer=false;
  176. }
  177. else
  178. {
  179. splitContainer1.Orientation=Orientation.Vertical;
  180. IsVer=true;
  181. }
  182. }
  183. private void splitContainer1_Moving(object sender,SplitterCancelEventArgs e)
  184. {
  185. Cursor.Current=Cursors.VSplit;
  186. SplitContainer splitter=(SplitContainer)sender;
  187. toolTip.SetToolTip(splitter,
  188. "SplitX= "+e.SplitX+
  189. "/nSplitY= "+e.SplitY+
  190. "/nMouseCursorX= "+e.MouseCursorX+
  191. "/nMouseCursorY= "+e.MouseCursorY);
  192. }
  193. private void splitContainer1_Moved(object sender,SplitterEventArgs e)
  194. {
  195. SplitContainer splitter=(SplitContainer)sender;
  196. toolTip.SetToolTip(splitter,
  197. "SplitX= "+e.SplitX+
  198. "/nSplitY= "+e.SplitY+
  199. "/n X= "+e.X+
  200. "/n Y= "+e.Y);
  201. }
  202. private void splitContainer2_Moving(object sender ,SplitterCancelEventArgs
  203. e)
  204. {
  205. Cursor.Current=Cursors.HSplit;
  206. }
  207. private System.ComponentModel.IContainer components = null;
  208. protected override void Dispose(bool disposing)
  209. {
  210. if (disposing && (components != null))
  211. {
  212. components.Dispose();
  213. }
  214. base.Dispose(disposing);
  215. }
  216. }
  217. }

转载于:https://www.cnblogs.com/haifan1984/p/4328900.html

拆分器控件Splitcontainer相关推荐

  1. Android自定义一个播放器控件

    介绍 最近要使用播放器做一个简单的视频播放功能,开始学习VideoView,在横竖屏切换的时候碰到了点麻烦,不过在查阅资料后总算是解决了.在写VideoView播放视频时候定义控制的代码全写在Actv ...

  2. 基于MediaPlayer的Android播放器控件

    Android自身的播放控件在界面定制上不是很方便,而且没有针对播放流进行加工处理的相关接口.于是自己写了一个基于MediaPlayer的播放器控件.该控件有以下特点: 支持开发者对播放界面进行任意的 ...

  3. java分层窗格_Swing拆分窗格控件JSplitPane使用详解

    本文实例为大家分享了Swing拆分窗格控件JSplitPane的使用方法,供大家参考,具体内容如下 package day1115; import javax.swing.*; import java ...

  4. VS2010/MFC对话框程序调用Windows Media Player播放器控件

    MFC对话框程序调用Windows Media Player播放器控件播放打开的avi格式的文件,具体步骤如下: 1.根据MFC向导提示,创建一个默认的对话框项目TestMediaPlayer. 2. ...

  5. PPT中WMP播放器控件的使用方法

    Windows Media Player是个十分好用的播放器,它支持多个格式视频.音频文件的播放,在PPT 2003中使用的频率非常的高. 本文以PPT 2003为例,讲解一下PPT 2003中WMP ...

  6. 【沧海拾昧】C# .Net SplitContainer(分割器)控件的使用笔记

    #C0202 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  7. IOS学习六:Date Picker, Picker View选取器控件初步

    Date Picker控件和Picker View控件其实也是算比较常用到视图. 以下根据红柚子上得几个例子: 分别从(日期选取器)Date Picker   -->单部件选取器-->多部 ...

  8. scViewerX ActiveX 多功能文件查看器控件

    scViewerX ActiveX 控件 scViewerX是一个功能强大的 ActiveX 控件,允许您查看.打印和转换 PLT.Adobe PDF.Autodesk DWF.CGM.Calcomp ...

  9. C#控件splitContainer用法

    在这个例子中,最上方是一个menustrip控件,其下市toolstrip控件,添加为快捷按钮. 中间区域是一个splitcontainer,分为panel1和panel2. (1)IsMdiCont ...

  10. c#winform调用VLC播放视频器控件

    由于项目需求,斯最近遇到一个很麻烦的问题,涉及到视频播放的功能,先前也有使用系统自带的media player来实现播放视频的目的,自带的虽然比较通用,但是问题很大,为什么呢?经常会出现以下↓的框框 ...

最新文章

  1. RT-Thread GCC VSCode等开源工具链 在智能小车制作中的应用
  2. nc 传输文件和目录
  3. Dev-C++安装教程附免费安装包资源
  4. There are multiple modules with names that only differ in ca
  5. 命名空间不能直接包含字段或方法之类的成员是什么意思_Python 学习笔记之类与实例...
  6. OnKeyPress事件和Javascript检测键盘输入
  7. java连接access_关于k8s下使用Ingress保持长连接的异常情况排查
  8. 用python画渐变的圆_Python成像库(PIL)绘图 – 带渐变的圆角矩形
  9. java构造方法与重载牛肉粉,IT兄弟连Java基础视频教程
  10. UNION ALL vs UNION
  11. windows内核对象
  12. document.addEventListener理解
  13. 一文读懂语音语义识别技术的现状与未来
  14. 杨柳青镇cad_CAD制图岗位职责|CAD制图工作内容 - 职业圈
  15. 视觉十四讲 第三讲 深蓝学院习题分析
  16. 最系统的网站优化推广大全
  17. python的分布式爬虫框架
  18. You Only Look Once: Unified, Real-Time Object Detection (YOLO 论文翻译)
  19. 自定义UILabel,添加verticalAlignment属性
  20. 链路聚合(eth-trunk)

热门文章

  1. 基于Dlib库构建人脸识别数据集
  2. 保存为UTF8的1byte文字,2byte文字,3byte文字,4byte文字大全
  3. APP图片加载库(框架)和缓存
  4. 【渝粤题库】陕西师范大学201841 比较教育学 作业(专升本)
  5. 《动手学深度学习》网页版
  6. 在线UTF-8转换成GBK工具
  7. 华为linux版本wifi驱动,华为随身wifi驱动
  8. JDK的环境变量配置(步骤超级简单)
  9. 【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 1 / 4
  10. librdkafka------C kafka Client