loacher 发表于 2012-11-15 15:29:00

当Cell被设置为不可见的时候,位置能否被填充?

假设有三个并列的cell(cell1, cell2, cell3)
当根据条件设置cell2 为不可见的时候, cell3的位置能否上提,和cell1并列?
cell2 被设置回可见的时候,又恢复最初的cell1, cell2, cell3并列的状态??

loacher 发表于 2012-11-16 09:24:00

继续求助,难道只能手动更改位置吗

wedy.wang 发表于 2012-11-16 09:51:00

回复 2楼loacher的帖子

如果竖直排列的,你可以通过调用cell2.VerticalResize(-cell2.Height)来将这个cell2的高度设置成0。但是这个方法有个缺点,就是他不会将cell2的高度调整成0,而是调整成2,因为他为了能通过UIResize把这个Cell2再Resize大。因此,为了避免这个缺点,再调完这个方法后,可以再设置cell2.Visible为False,这样效果会好些。
如果是水平排列请使用Cell2.HorizontalResize方法。

loacher 发表于 2012-11-16 10:26:00

请问这个怎么用啊, 提示ge design时不能访问 的错误信息

wedy.wang 发表于 2012-11-16 10:36:00

回复 4楼loacher的帖子

你需要通过GcMultiRow来获取Cell2,而不是通过Template来获取取。
比如:GcMultiRow1.VerticalResize(), 而不是Template.Row.Cells["cell2"].VerticalResize();

loacher 发表于 2012-11-16 10:36:00

找帮助,现在可以了实现了,只是,横向的,也有个缝隙啊,怎么办才好?

loacher 发表于 2012-11-16 10:39:00

还有没有其他的方法?

loacher 发表于 2012-11-16 11:01:00

请wedy.wang 兄,再帮忙看看

wedy.wang 发表于 2012-11-16 11:37:00

回复 8楼loacher的帖子

这个空隙通过常规办法去不掉的。
可不可以这样子:
在调用完HorizontalResize之后,你不要隐藏Cell2,可以将Cell1的右沿Border的颜色设置成Empty,并将Cell2的左沿和右沿Border也设置成Empty,这样在界面的感觉上面Cell1和Cell3是紧挨着的。
为了方便起见,你可以在Template上面给Cell1和Cell2分别设置一个NamedCellStyle,到时候光改动这个Style的Border,那么所有的Row上面的Cell2都会改变。
可以参考下面的代码:

private void button1_Click(object sender, EventArgs e)
      {
            this.gcMultiRow1.HorizontalResize(-this.gcMultiRow1.Width);
            CellStyle cell1InheritedStyle = this.gcMultiRow1.InheritedStyle;
            CellStyle cell2InheritedStyle = this.gcMultiRow1.InheritedStyle;

            CellStyle style1 = this.gcMultiRow1.NamedCellStyles["textStyle1"];
            CellStyle style2 = this.gcMultiRow1.NamedCellStyles["textStyle2"];
            style1.Border = new GrapeCity.Win.MultiRow.Border(
                new GrapeCity.Win.MultiRow.Line(GrapeCity.Win.MultiRow.LineStyle.Thin, (cell1InheritedStyle.Border as Border).Bottom.Color),
                new GrapeCity.Win.MultiRow.Line(GrapeCity.Win.MultiRow.LineStyle.Thin, (cell1InheritedStyle.Border as Border).Bottom.Color),
                GrapeCity.Win.MultiRow.Line.Empty,
                new GrapeCity.Win.MultiRow.Line(GrapeCity.Win.MultiRow.LineStyle.Thin, (cell1InheritedStyle.Border as Border).Bottom.Color)
);
            style2.Border = new GrapeCity.Win.MultiRow.Border(
                GrapeCity.Win.MultiRow.Line.Empty,
                new GrapeCity.Win.MultiRow.Line(GrapeCity.Win.MultiRow.LineStyle.Thin, (cell2InheritedStyle.Border as Border).Bottom.Color),
                GrapeCity.Win.MultiRow.Line.Empty,
                new GrapeCity.Win.MultiRow.Line(GrapeCity.Win.MultiRow.LineStyle.Thin, (cell2InheritedStyle.Border as Border).Bottom.Color));
      }
页: [1]
查看完整版本: 当Cell被设置为不可见的时候,位置能否被填充?