ComponentOne FlexGrid for WinForms 中文版快速入门(6)—合并单元格

合并单元格

C1FlexGrid控件允许你合并单元格,使他们跨越多个行或列。这个功能可以用来增强在表格上显示的数据的外观和清晰度。这些设置的作用与HTML<ROWSPAN>和<COLSPAN>标签类似。

如果您是第一次阅读本系列文章,建议您阅读:
1.1

若要使单元格能够合并,以下两件事你必须要做:

1. 将表格 “允许合并”属性设置为“无”以外的任何值。(每个设置的效果都会在参考部分得到解释。)

2. 如果你想要合并列,必须将你想合并的每一列的“允许合并”属性设置为“真”。如果你想要合并行,必须将你想合并的每一行的“允许合并”属性设置为“真”。

如果相邻的单元格中含有相同的非空字符串,合并就会发生。没有一种方法能迫使一对单元格合并到一起。合并会在单元格内容的基础上自动完成。当相邻行中的值呈现重复数据的时候,这可以很容易地提供排序数据的合并后的视图。

单元格合并有几种可能的用途。例如,当文本溢出到相邻列时,你可以用它来创建合并的表头,合并后的数据视图,或表格。

1.1.1 合并表头

要创建合并表头,你必须通过将表格的“允许合并”属性设置到FixedOnly来启动。然后,通过设置行和列的“允许合并”属性来指定要合并的行和列。最后,将文本分配到标题单元格,以便你要合并的单元格具有相同的内容。

下面的代码显示了一个例子:

· Visual Basic

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

Dim i%

' 初始化该控件。

_flex.Styles.Normal.WordWrap = True

_flex.Cols.Count = 9

_flex.Rows.Fixed = 2

_flex.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly

'创建行标题。

_flex.Rows(0).AllowMerging = True

'合并含有相同内容的四个单元格。

Dim rng As C1.Win.C1FlexGrid.CellRange = _flex.GetCellRange(0, 1, 0, 4)

rng.Data = "North"

'合并含有相同内容的四个单元格。

rng = _flex.GetCellRange(0, 5, 0, 8)

rng.Data = "South"

For i = 1 To 4

_flex(1, i) = "Qtr " & i

_flex(1, i + 4) = "Qtr " & i

Next

'创建列标题。

_flex.Cols(0).AllowMerging = True

'合并含有相同的内容的两个单元格。

rng = _flex.GetCellRange(0, 0, 1, 0)

rng.Data = "Sales by Product"

'对齐单元格和自动调整单元格大小。

_flex.Styles.Fixed.TextAlign =

C1.Win.C1FlexGrid.TextAlignEnum.CenterCenter

_flex.AutoSizeCols(1, _flex.Cols.Count - 1, 10)

· C#

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

{

int i;

// 初始化该控件。

_flex.Styles.Normal.WordWrap = true;

_flex.Cols.Count = 9;

_flex.Rows.Fixed = 2;

_flex.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.FixedOnly;

//创建行标题。

_flex.Rows[0].AllowMerging = true;

//合并含有相同内容的四个单元格。

C1.Win.C1FlexGrid.CellRange rng = _flex.GetCellRange(0, 1, 0, 4);

rng.Data = "North";

//合并含有相同内容的四个单元格。

rng = _flex.GetCellRange(0, 5, 0, 8);

rng.Data = "South";

for ( i = 1 ; i <= 4; i++)

{

_flex[1, i] = "Qtr " + i;

_flex[1, i + 4] = "Qtr " + i;

}

//创建列标题。

_flex.Cols[0].AllowMerging = true;

//合并含有相同的内容的两个单元格。

rng = _flex.GetCellRange(0, 0, 1, 0);

rng.Data = "Sales by Product";

//对齐单元格和自动调整单元格大小。

_flex.Styles.Fixed.TextAlign =

C1.Win.C1FlexGrid.TextAlignEnum.CenterCenter;

_flex.AutoSizeCols(1, _flex.Cols.Count - 1, 10);

}

以下是结果:

image

1.1.2 合并后的数据视图

当表格被绑定到一个数据源时,单元格合并会以同样的方式进行。下面的代码显示了一个在设计时表格绑定到数据源的例子。有关绑定到一个数据源的更多详细信息,请参阅“绑定到一个数据源”(第95页)。

· Visual Basic

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load

Dim i%

'设置单元格合并。

_flex.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.RestrictCols

For i = _flex.Cols.Fixed To _flex.Cols.Count - 1

_flex.Cols(i).AllowMerging = True

Next

End Sub

· C#

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

{

int i;

//设置单元格合并。

_flex.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.RestrictCols;

for (int i = _flex.Cols.Fixed; i <= _flex.Cols.Count - 1; i++)

{

_flex.Cols(i).AllowMerging = true;

}

以下是结果:

image

请注意合并单元格是如何在分组数据和使表格中的信息更容易理解上具有视觉效果的。

可用 的示例项目

有关合并后数据视图用C1FlexGrid显示的一个示例,请参阅ComponentOne 帮助中心中的“单元格合并”样本。

1.1.3 溢出文本

“允许合并”属性有两个设置,它们不同于其他的操作,也不需要你在特定的行和列来设置“允许合并”属性。

溢出设置

溢出设置会导致太长而不适合于一个单元格的文本蔓延到相邻的空单元格中。这种结果式的行为与Microsoft Excel中的类似。如果你在一个单元格中键入一个长项而相邻的单元格是空的,则该项可能会溢出所在单元格来占据所需要的尽可能多的空间。

例如,下面的图片显示了当“允许合并”属性设置为“溢出”且用户输入了不同长度的条目时,一个表格看起来是什么样子的:

image

 

节点设置

节点设置是与“溢出”类似,但只适用于勾勒节点。当数据被组合成组,且在节点行中所包含的格式中的信息与数据行不同时,此设置是非常有用的。

例如,下面的图片显示了,当数据被用C1FlexGridBase.Subtotal方法分组和总结,随后节点被设置为“允许合并”时,一个表格看起来是什么样子的:

image

此图片与在“创建汇总”(第67页)主题中的那个类似。所不同的是,现在小计行(节点)溢出到相邻的空单元格,改善了表格的外观。

1.1.4 自定义合并

你可以通过两种途径自定义默认的合并行为:

· 将一个自定义的IComparer类分配到CustomComparer属性。

默认情况下,表格会将包含相同的非空值的相邻的单元格合并到一起。字符串比较是区分大小写的,且包括空白。

如果你想让表格用大小不敏感的比较和修剪空白来合并单元格,你可以写一个自定义的类,用它来实现Icomparer,并且将它分配到CustomComparer属性。

· 写一个从C1FlexGrid派生出的新类别,并通过提供自己的自定义合并逻辑来覆盖GetMergedRange虚拟方法。

可用的示例项目

有关可以显示如何实现自定义的合并逻辑的样本,请参阅如下样本,“ComponentOne 帮助中心”的“自定义合并”,“自定义合并2”,“自定义合并3”,“自定义合并4”。

转载于:https://www.cnblogs.com/C1SupportTeam/archive/2012/12/13/2815649.html

随着 ComponentOne 2012V3 的发布,ComponentOne .NET 主流平台开始正式支持中文本地化。在ComponentOne 2012V3中,开发人员的交互界面和提示信息都是中文,包括菜单和对话框等交互界面,在设计时控件各对象的方法和属性的说明,以及在Visual Studio 环境中的 API 智能提示等。ComponentOne 2012V3还针对WinForm平台主要控件-FlexGrid和Chart制作了包含了近20万字的中文帮助文档,产品的每一功能进行了细致的介绍并提供示例代码,便于开发人员的学习和使用。 我们借此机会编写 C1FlexGrid 和 C1Chart 初级、高级应用系列文章。希望能对正在使用或对第三方控件感兴趣的朋友能有所帮助。 关于 FlexGrid ComponentOne FlexGrid for WinForms是一款易用、灵活的高性能表格控件,可帮助用户创建友好界面,用于展示、变更、修改格式、组织、总结和打印各种数据。它提供所有基础功能,以及更加灵活的高级功能,包括概要树、单元格合并、高级打印、快速变更格式、单元格自定义等。通过自定义功能,您可以创建您自己的单元格类,自定义表格的呈现和特性等。 与同类产品相比,ComponentOne FlexGrid的特点是: 轻便快速 相比较同类产品1M至3M的安装文件大小,FlexGrid安装包仅为150K,同时可达3至10倍快速加载数据和滚动数据。 操作简单 以Microsoft Excel为模型,帮助用户从最熟悉的微软键盘处理习惯开始入手,支持编辑,选择,和便签板,同时满足优良的性能和呈现效果。 多平台支持 ComponentOne FlexGrid是唯一一个表格控件支持微软的多个平台(包括Silverlight, WPF, WinForms, ActiveX, Compact Framework)。 ComponentOne FlexGrid 包含如下控件: C1FlexGrid 是一款功能强大完整的表格控件,它能够提供所有基础的功能以及一些高级功能,包括概要树、 单元格合并、高级打印、快速变更格式、单元格自定义等。 C1FlexGridClassic 衍生自C1FlexGrid并提供一个对象模型,在实质上100%等同于VSFlexGrid ActiveX控件,帮助用户便捷地移植至.NET平台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值