找回密码
 立即注册

QQ登录

只需一步,快速开始

regarmy

初级会员

19

主题

61

帖子

464

积分

初级会员

积分
464

[处理中] V17.1列宽的问题

regarmy
初级会员   /  发表于:2024-7-22 16:50  /   查看:1181  /  回复:5
我希望下拉框的宽度和第一列宽度调整同步,可在SpdCol_ColumnWidthChanged事件中,取得的第一个单元格的宽度是上次调整第1列宽度,而不是当次调整第1列的宽度。
    Private Sub SpdCol_ColumnWidthChanged(sender As Object, e As FarPoint.Win.Spread.ColumnWidthChangedEventArgs) Handles SpdCol.ColumnWidthChanged
        Dim Rct As System.Drawing.Rectangle
        If e.View.ActiveSheetIndex = 2 Then
            Rct = SpdCol.GetCellRectangle(0, 0, 0, 0)
            CmbYDE.Left = SpdCol.Left + Rct.Left
            CmbYDE.Width = Rct.Width
            CmbYDE.Top = SpdCol.Top + Rct.Top - CmbYDE.Height
        End If
    End Sub
WXWorkLocal_17216379196335.png810296325.png


5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-23 11:42:17
沙发
我没明白你要干什么,下拉框的宽度本身就是撑满整列的
你具体是要什么效果呢

image.png273331298.png
回复 使用道具 举报
regarmy
初级会员   /  发表于:2024-7-23 11:58:16
板凳
本帖最后由 regarmy 于 2024-7-23 12:00 编辑
Richard.Ma 发表于 2024-7-23 11:42
我没明白你要干什么,下拉框的宽度本身就是撑满整列的
你具体是要什么效果呢

我需要在标题行加个下拉框,下拉框的宽度要和列的宽度调整保持动态一致,不过我在ColumnWidthChanged事件中把CmbYDE.Width = Rct.Width改为CmbYDE.Width = CInt(e.View.Sheets(2).Columns(0).Width)解决了。而GetCellRectangle方法在ColumnWidthChanged事件中取得的单元格宽度不是实时的。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-25 11:35:02
地板
我没太明白为什么你要用GetCellRectangle,实际上在事件中拿到列index,然后
直接获取列宽就行的吧,我测试下来获取到的就是改变后的列宽

fpSpread1.ActiveSheet.Columns[index].Width;
回复 使用道具 举报
regarmy
初级会员   /  发表于:2024-7-25 11:58:48
5#
Richard.Ma 发表于 2024-7-25 11:35
我没太明白为什么你要用GetCellRectangle,实际上在事件中拿到列index,然后
直接获取列宽就行的吧,我测 ...

是的,已经解决了,用GetCellRectangle是不光取得列宽,主要还需要取得高,不过已经测试GetCellRectangle取得的尺寸数据不是实时的了。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-25 17:50:47
6#
本帖最后由 Richard.Ma 于 2024-7-25 17:51 编辑

好的,高度现在还有问题吗?按理说,这个事件并不会引起高度变化,所以不至于高度取的不对
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部