以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教取消合并单元格  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76838)

--  作者:hbhb
--  发布时间:2015/11/5 22:25:00
--  请教取消合并单元格
大师:请问,通过下面的代码取消用您提供的合并单元格代码,为何返回的值不一样,取消不了合并单元格?
Dim tb2 As WinForm.Table = e.Form.Controls("Table2")
Dim tb As Table = tb2.Table
Dim a As  Integer = tb.TopRow 
Dim b As  Integer = tb.LeftCol  
Dim c As  Integer = tb.BottomRow 
Dim d As  Integer = tb.RightCol 
MessageBox.Show(a)
MessageBox.Show(b)
MessageBox.Show(c)
MessageBox.Show(d)

tb.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom 
Dim rng As C1.Win.C1FlexGrid.CellRange = tb.Grid.GetCellRange(a, b, c, d)
tb.Grid.MergedRanges.remove(rng)

--  作者:大红袍
--  发布时间:2015/11/5 22:43:00
--  

mark 取消合并

 

Dim tb As Table = CurrentTable
Dim a As  Integer = tb.TopRow
Dim b As  Integer = tb.LeftCol
Dim c As  Integer = tb.BottomRow+1
Dim d As  Integer = tb.RightCol+1


Dim rng As New List(of Object)
tb.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom
For Each r As object In tb.Grid.MergedRanges
    If a <= r.TopRow AndAlso b <= r.LeftCol AndAlso c >= r.bottomRow AndAlso d >= r.rightCol Then
        rng.add(r)
    End If
Next
For Each r As object In rng
    tb.Grid.MergedRanges.Remove(r)
next


--  作者:hbhb
--  发布时间:2015/11/5 23:08:00
--  
谢谢!绝对高手呀!
不问永久也不会!


--  作者:hbhb
--  发布时间:2015/11/5 23:14:00
--  
有点小问题,如果合并后,鼠标移动到其他地方后,再回按合并的单元格,有时就不行了?
--  作者:大红袍
--  发布时间:2015/11/5 23:34:00
--  
什么意思,执行什么代码,合并单元格不行?
--  作者:hbhb
--  发布时间:2015/11/5 23:40:00
--  
如果选中的区域为同列时,取消就不行了?
--  作者:hbhb
--  发布时间:2015/11/5 23:44:00
--  
如果合并的同列区域,合并后,鼠标点击其他的单元格,再点合并单元格,取消合并就不灵了?
--  作者:大红袍
--  发布时间:2015/11/5 23:49:00
--  
你的代码,只是取消你框选的单元格的合并啊。
--  作者:hbhb
--  发布时间:2015/11/5 23:58:00
--  
就这个意思,第一步,框选区域合并,比如select(1,1,2,2),合并后编辑录入。以后,发现该单元格的合并要取消,第二步再框选它,取消合并。
如果select(1,1,1,2)的情况下,就不行了?


--  作者:大红袍
--  发布时间:2015/11/6 9:26:00
--  
以下是引用hbhb在2015/11/5 23:58:00的发言:
就这个意思,第一步,框选区域合并,比如select(1,1,2,2),合并后编辑录入。以后,发现该单元格的合并要取消,第二步再框选它,取消合并。
如果select(1,1,1,2)的情况下,就不行了?

 

肯定不行啊,必须框选全部。