SplitContainer(拆分条控件)

SplitContainer(拆分条控件)1.可以将Windows窗体SplitContainer控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板。当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的。使用SplitContainer控件,可以创建复合的用户界面(通常,在一个面板中的选择决定了在另一个面板中显示哪些对象)。这种排列对于显示和浏览信息非常有用。拥有两个面板使您可以聚合不同区

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

1. 可以将 Windows 窗体 SplitContainer 控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板。当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的。

使用 SplitContainer 控件,可以创建复合的用户界面(通常,在一个面板中的选择决定了在另一个面板中显示哪些对象)。这种排列对于显示和浏览信息非常有用。拥有两个面板使您可以聚合不同区域中的信息,并且用户可以轻松地使用拆分条(也称为“拆分器”)调整面板的大小。

另外,还可以嵌套多个 SplitContainer 控件,并且第二个 SplitContainer 控件可以水平放置,从而产生上面板和下面板。

请注意,SplitContainer 控件默认情况下可通过键盘来访问。如果 IsSplitterFixed 属性设置为 false,用户可以按箭头键来移动拆分器。

SplitContainer 控件的 orientation 属性决定拆分器的方向,而不是决定控件本身的方向。因此,当该属性设置为 Vertical 时,拆分器将垂直放置,从而产生左面板和右面板。此外,还应注意 SplitterRectangle 属性的值是随 orientation 属性的值变化的。有关更多信息,请参见 SplitterRectangle 属性。

还可以限制 SplitContainer 控件的大小和移动。FixedPanel 属性决定调整 SplitContainer 控件大小后,哪个面板将保持原来的大小,IsSplitterFixed 属性则决定是否可以通过键盘或鼠标来移动拆分器。

注:需要选中SpliContainer控件需先单击右键,弹出上下文菜单,单击<选择“SplitContainer1”>即可。

1、常用属性、方法和事件

FixedPanel 属性

* 确定调整 SplitContainer 控件大小后,哪个面板将保持原来的大小。

IsSplitterFixed 属性

* 确定是否可以使用键盘或鼠标来移动拆分器。

orientation 属性

* 确定拆分器是垂直放置还是水平放置。

SplitterDistance 属性

* 确定从左边缘或上边缘到可移动拆分条的距离(以像素为单位)。

SplitterIncrement 属性

* 确定用户每次可以移动拆分器的最短距离(以像素为单位)。

SplitterWidth 属性

* 确定拆分器的厚度(以像素为单位)。

SplitterMoving 事件

* 拆分器移动时发生。

SplitterMoved 事件

* 拆分器移动后发生。

2.如何:定义拆分窗口中的大小调整和定位行为

用户可以轻松调整 SplitContainer 控件面板的大小并对其执行各种操作。但是,有时您可能要以编程方式控制拆分器放置的位置以及可以移动的程度。

利用 SplitContainer 控件上的 SplitterIncrement 属性和其他属性,您可以根据自己的需要精确控制用户界面的行为。下表列出了这些属性。

IsSplitterFixed 属性

* 确定拆分器是否可以通过键盘或鼠标进行移动。

SplitterDistance 属性

* 确定从左边缘或上边缘到可移动拆分条的距离(以像素为单位)。

SplitterIncrement 属性

* 确定用户可以移动拆分器的最短距离(以像素为单位)。

下面的示例修改了 SplitterIncrement 属性,以创建“对齐拆分器”效果;在用户拖动拆分器时,它会以 10 个像素(而非默认的 1 个像素)为单位进行递增。

定义 SplitContainer 调整大小行为

在过程中,将 SplitterIncrement 属性设置为所需大小,以实现拆分器的“对齐”行为。

在下面的代码示例中,在窗体的 Load 事件中将 SplitContainer 控件中的拆分器设置为拖动时跳过 10 个像素。

C#

private void Form1_Load(System.Object sender, System.EventArgs e)

{

SplitContainer splitSnapper = new SplitContainer();

splitSnapper.SplitterIncrement = 10;

splitSnapper.Dock = DockStyle.Fill;

splitSnapper.Parent = this;

}

(Visual C#) 在窗体的构造函数中放置以下代码以注册事件处理程序。

C#

this.Load += new System.EventHandler(this.Form1_Load);

3.如何:水平拆分窗口水平拆分窗口

在程序中,将 SplitContainer 控件的 orientation 属性设置为 Horizontal。

C#

public void showSplitContainer()

{

SplitContainer splitContainer1 = new SplitContainer ();

splitContainer1.BorderStyle = BorderStyle.Fixed3D;

splitContainer1.Location = new System.Drawing.Point (74, 20);

splitContainer1.Name = "DemoSplitContainer";

splitContainer1.Size = new System.Drawing.Size (212, 435);

splitContainer1.TabIndex = 0;

splitContainer1.Orientation = orientation.Horizontal;

this.Controls.Add (splitContainer1);

}

4.如何:用 Windows 窗体创建多窗格用户界面在下面的过程中,将创建一个类似于在 Microsoft Outlook 中使用的多窗格用户界面,该界面中包含“文件夹列表”、“邮件”窗格和“预览”窗格。这种排列主要是通过在窗体上停靠控件实现的。在停靠控件时,可以确定控件要紧靠父容器的哪个边缘。这样,如果将 Dock 属性设置为 Right,控件的右边缘将停靠在它的父控件的右边缘。此外,控件停靠边缘的大小将调整为与它的容器控件的大小匹配。有关 Dock 属性工作方式的更多信息,请参见如何:在 Windows 窗体上停靠控件。该过程的重点是在窗体上排列 SplitContainer 和其他控件,而不是添加功能以使得应用程序类似于 Microsoft Outlook。若要创建该用户界面,请将所有控件放到 SplitContainer 控件(其左侧面板中包含 TreeView 控件)中。SplitContainer 控件的右侧面板中包含另一个 SplitContainer 控件,其中 ListView 控件在 RichTextBox 控件上方。这些 SplitContainer 控件支持在窗体上分别调整其他控件的大小。可以改编此过程中的方法,制作出您自己的自定义用户界面。以编程方式创建 Outlook 样式的用户界面在窗体内,声明组成用户界面的每个控件。本示例使用 TreeView、ListView、SplitContainer 和 RichTextBox 控件来创建类似于 Microsoft Outlook 的用户界面。

C#

private System.Windows.Forms.TreeView treeView1;

private System.Windows.Forms.ListView listView1;

private System.Windows.Forms.RichTextBox richTextBox1;

private System.Windows.Forms. SplitContainer splitContainer2;

private System.Windows.Forms. SplitContainer splitContainer1;

创建定义用户界面的过程。下面的代码设置属性,以使窗体类似于 Microsoft Outlook 的用户界面。但是,通过使用其他控件或使它们停靠在不同的位置,一样可以轻松创建同样灵活的其他用户界面。

C#

public void createOutlookUI()

{

// Create an instance of each control being used.

treeView1 = new System.Windows.Forms.TreeView();

listView1 = new System.Windows.Forms.ListView();

richTextBox1 = new System.Windows.Forms.RichTextBox();

splitContainer2 = new System.Windows.Forms.SplitContainer();

splitContainer1 = new System.Windows.Forms.SplitContainer();

// Insert code here to hook up event methods.

// Set properties of TreeView control.

treeView1.Dock = System.Windows.Forms.DockStyle.Fill;

treeView1.TabIndex = 0;

treeView1.Nodes.Add("treeView");

// Set properties of ListView control.

listView1.Dock = System.Windows.Forms.DockStyle.Top;

listView1.TabIndex = 2;

listView1.Items.Add("listView");

// Set properties of RichTextBox control.

richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;

richTextBox1.TabIndex = 3;

richTextBox1.Text = "richTextBox1";

// Set properties of first SplitContainer control.

splitContainer1.Dock = System.Windows.Forms.DockStyle.Fil1;

splitContainer2.TabIndex = 1;

splitContainer2.SplitterWidth = 4;

splitContainer2.SplitterDistance = 150;

splitContainer2.Orientation = orientation.Horizontal;

splitContainer2.Panel1.Controls.Add(this.listView1 );

splitContainer2.Panel1.Controls.Add(this.richTextB ox1);

// Set properties of second SplitContainer control.

splitContainer2.Dock = System.Windows.Forms.DockStyle.Fil1;

splitContainer2.TabIndex = 4;

splitContainer2.SplitterWidth = 4;

splitContainer2.SplitterDistance = 100;

splitContainer2.Panel1.Controls.Add(this.treeView1 );

splitContainer2.Panel1.Controls.Add(this.splitCont ainer1);

// Add the main SplitContainer control to the form.

this.Controls.Add(this.splitContainer2);

this.Text = "Intricate UI Example";

}

转载自:http://blog.csdn.net/jlxyfeng/article/details/6792303

可另参考:http://blog.csdn.net/hxy870/article/details/8547061

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

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

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


相关推荐

  • 领域建模与数据库建模[通俗易懂]

    首先两者比较: 我下面是引用的别人的文章,并且感觉有句话很好,不过除了这句话其它的话都不是很好,哈哈:有些人就把问题归结于Java语言本身,睡不着觉怪床歪。 我们知道:一个软件从无到有需要经过如下几个阶段:分析、设计、编程、调试、部署和运行。   编程阶段我们通常使用Java/.NET这样面向对象语言工具,可以带来很多设计上的好处,但是也存在一个奇怪的现象:很多程序员虽然在

    2022年4月16日
    36
  • C#中DllImport用法汇总

    最近使用DllImport,从网上google后发现,大部分内容都是相同,又从MSDN中搜集下,现将内容汇总,与大家分享。大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码

    2022年4月9日
    65
  • coreos docker 尝新奇

    coreos docker 尝新奇

    2022年1月21日
    37
  • jpa的save方法_save与preserve的区别

    jpa的save方法_save与preserve的区别JPA中save和saveAndFlush的区别,首先直接看图:save是CrudRepository下的。saveAndFlush是JpaRepository下的。一般情况下save就足够了,但是如果在同一个transaction里,比如你在方法上标了@Transactional,这时你想先保存Order,然后直接在这个Transaction里保存OrderItem,但是Orde…

    2022年10月20日
    4
  • CNN卷积神经网络框架_fpga 神经网络

    CNN卷积神经网络框架_fpga 神经网络理论建立与效果展示正在写。。。环境:Vivado2019.2。Part:xcku040-ffva1156-2-i,内嵌DSP个数1920个,BRAM600个也就是21.1Mb。说明:通过识别加高斯白噪声的正弦波、余弦波、三角波较简单的实例来利用FPGA实现一维CNN网络,主要是实现CNN网络的搭建。也就是将下列数据传输至FPGA,识别出下面哪些是正弦波、余弦波、三角波,通过简单实例实践,在融会贯通。实现流程:训练参数:通过pytorch对10000个训练集进行训练获得训练参数,反向计算不

    2022年9月22日
    3
  • java 测试程序代码运行时间过长_Java测试

    java 测试程序代码运行时间过长_Java测试突然想准确的测试一下Java代码的执行时间,在网上找了一会。发现基本有以下两种方法:第一种是以毫秒为单位计算的。Java代码//伪代码  long startTime=System.currentTimeMillis();   //获取开始时间  doSomeThing();  //测试的代码段  long endTime=System.currentTime

    2022年10月18日
    1

发表回复

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

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