以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何消除自动调整行高后显示的多余选定区域——已解决 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=144718) |
-- 作者:shenyl0211 -- 发布时间:2019/12/27 17:31:00 -- [求助]如何消除自动调整行高后显示的多余选定区域——已解决 只需在AfterSelChange事件中加入下列代码,就可以自动调整当前行的行高和原来行的行高,便于查阅字符长度大于单元格宽度的长文本: If e.OldRange.RowSel <> e.NewRange.RowSel \'如果选择的是不同的行 If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行 Dim size As Integer = e.Table.Font.Size \'取得当前表的字体大小 e.Table.grid.Rows(e.OldRange.RowSel + e.Table.HeaderRows).height = 2 * size + 2 \'设置原来行的行高 e.Table.AutoSizeRow(e.NewRange.RowSel) \'自动调整当前行的行高 End If End If 存在问题:如果原来行显示的行高大于当前行显示的行高,且当前行在原来行的下方,则执行上述代码后,当前列、当前行下面的几行有时会出现选定区的高亮底色(即.SysStyles("Highlight").BackColor = Color.Blue定义的底色),且高亮底色显示的行数多少取决于原来行和当前行显示行高的差值。如果差值很大,则当前行可能会超出屏幕上方,用户体验很差。 求助解决办法。谢谢! [此贴子已经被作者于2019/12/28 10:07:25编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/27 20:47:00 -- AfterSelChange事件 If e.OldRange.RowSel <> e.NewRange.RowSel \'如果选择的是不同的行 vars("a") = e.OldRange.RowSel Else vars("a") = -1 End If click事件 If vars("a") <> -1 \'如果选择的是不同的行 If vars("a") >= 0 AndAlso vars("a")< e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行 Dim size As Integer = e.Table.Font.Size \'取得当前表的字体大小 e.Table.grid.Rows(vars("a")+ e.Table.HeaderRows).height = 2 * size + 2 \'设置原来行的行高 e.Table.AutoSizeRow(e.Row.Index) \'自动调整当前行的行高 End If End If |
-- 作者:shenyl0211 -- 发布时间:2019/12/28 10:08:00 -- 谢谢蓝版! |
-- 作者:shenyl0211 -- 发布时间:2020/1/14 11:40:00 -- 一点改进——在click事件开头增加下列代码,使切换表后的第一次点击(特别是只有单行的情况)有效: If vars("a") = -1 AndAlso e.Table.Rows.Count > -1 Then \'如果选择的是不同的表 vars("a") = e.Row.Index End If
|