NET-> SplitContainer控件说明

NET-> SplitContainer控件说明拆分器控件Splitcontainer,是一个含有Splitter拆分条的容器,它包含两个面板容器Panel1,Panel2,可以移动拆分条,对面板大小进行控制!控件学习示例程序!属性介绍;//拆分条的是否启用禁用boolIsSplitterFixed{get

大家好,又见面了,我是你们的朋友全栈君。

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

NET-> SplitContainer控件说明

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

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161091.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python-将文件按日期分类

    python-将文件按日期分类

    2021年5月17日
    153
  • SQLite下载、安装和使用并Qt链接SQLIte全部教程(windows)

    SQLite下载、安装和使用并Qt链接SQLIte全部教程(windows)第一步 下载 SQLIte 下载地址 https www sqlite org download html 下载两个内容 sqlite dll win64 x64 3360000 zipsqlite tools win32 x86 3360000 zip 下载完后直接解压 放到到一个文件夹下 这个文件夹可以随便在哪里 如下图 第二步 使用 SQLite 网上好多教程都是到这一步就配置环境变量 不知道他们脑子咋想的 轻量级数据库 SQLIte 本来就应该随着项目到处走 直接在解压且合并后

    2025年7月21日
    2
  • java二维对象数组_java 二维数组和对象数组

    java二维对象数组_java 二维数组和对象数组1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组2.二维数组的初始化1)intintA[][]={{1,2},{2,3},{3,4,5}};2)int[][]intB=newint[3][5];3)int[]intC[]=newint[3][];intC[0]=newint[2];intC[1]=newint[3];intC[2]=newint[5];1…

    2022年6月10日
    56
  • 随机森林算法(有监督学习)

    随机森林算法(有监督学习)一、随机森林算法的基本思想  随机森林的出现主要是为了解单一决策树可能出现的很大误差和overfitting的问题。这个算法的核心思想就是将多个不同的决策树进行组合,利用这种组合降低单一决策树有可能带来的片面性和判断不准确性。用我们常说的话来形容这个思想就是“三个臭皮匠赛过诸葛亮”。  具体来讲,随机森林是用随…

    2022年5月23日
    38
  • linux下DNS配置及域名解析服务

    linux下DNS配置及域名解析服务一.DNS(DomainNameSystem,域名系统)    因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。    DNS服务器将域名解析出来,找到域名对应的ip地址的…

    2022年5月24日
    44
  • linux常用的20个命令面试_linux常用命令详解pdf

    linux常用的20个命令面试_linux常用命令详解pdf什么是linux多用户,多任务,支持多线程和多CPU的操作系统linux的应用领域:免费,稳定,高效的,一般运行在大型服务器上用xshell连接虚拟机的步骤:1.setup设置虚拟机IP为10.10.10.10重启网卡:servicenetworerestart2.在Windows系统打开网络和共享中心,更改适配器设置,把vmnet1的ipv4的IP改成10.10.10.13.打开xshell,输入ssh10.10.10.10/根目录:一般根目录下只存放目录,有且只有一个根目

    2022年9月23日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号