【问题标题】:How to scroll to column in SpreadsheetGear WorkBookView control?如何滚动到 SpreadsheetGear WorkBookView 控件中的列?
【发布时间】:2019-09-16 05:48:13
【问题描述】:

我每周必须校对大约 30-35 个电子表格。

我需要查看 W 列和 W 列右侧的列。最初显示电子表格时,我会看到 A-P 列。我手动滚动到 W 列并开始校对数据。

我点击下一步按钮,进入下一个文件。我的代码会加载下一个电子表格:

WorkbookView1.ActiveWorkSheet = Workbook_Obj.ActiveWorksheet.
WorkbookView1.Update()

有时水平滚动位置保持不变,我可以看到 W 列和 W 列右侧的一些列。

但有时水平滚动位置会更改到 W 列的左侧,我再也看不到 W 列了。

我想做这样的事情:

' 23 = Column W
Col_Obj = WorkbookView1.Cells(0, 23)
' Or - find column by header text in row = 0.
Col_Obj - WorkbookView1.FindByText("Name")
Col_Obj.HorizontalScroll = Col_Obj.Location

谢谢,埃德

【问题讨论】:

    标签: vb.net spreadsheetgear


    【解决方案1】:

    您可以设置IWorksheetWindowInfo.ScrollColumn(注意这个属性使用从零开始的索引,即其中A列是索引0,B是1,依此类推),这将设置窗口中显示的最左边的列.请注意,如果您需要设置行滚动位置,还有一个ScrollRow property

    当涉及 WorkbookView 时,例如在您的情况下,就设置属性(如 ScrollColumn)是否会实际对 WorkbookView 生效(这与您可以将同一个工作表附加到多个 WorkbookView 控件,并且每个 WorkbookView 可以保留自己的这些“窗口信息”属性的副本)。此外,SpreadsheetGear 2012 和 2017 在这方面的工作方式也存在一些行为差异。下面的代码应该在大多数情况下都可以工作,希望你的代码也可以工作,尽管在某些情况下可能不会......例如,如果你使用 SpreadsheetGear 2017 并将此工作表附加到多个 WorkbookViews 我猜你不是;但如果是这样,我可以更新此答案以更好地适应您的特定情况。

    ' Make local variable to the desired worksheet
    Dim activeWorksheet = Workbook_Obj.ActiveWorksheet
    
    ' Reference cell to select and scroll to
    Dim cellW1 = activeWorksheet.Cells("W1")
    
    ' Select the cell (this call alone can sometimes also automatically
    ' trigger the cell to be scrolled to as well, though it may not depending
    ' on the circumstances; and it may not make this cell the leftmost in the
    ' window...
    cellW1.Select()
    
    ' ...to avoid any problems like mentioned above, explicitly set ScrollColumn 
    ' to the selected cell.  Set ScrollRow as well if desired.
    activeWorksheet.WindowInfo.ScrollColumn = cellW1.Column
    
    ' Attach workbook *AFTER* doing the above.  For a variety of reasons I
    ' won't go into, attaching the worksheet before setting the above "window
    ' info" options may not have any effect.
    WorkbookView1.ActiveWorksheet = Workbook_Obj.ActiveWorksheet
    

    【讨论】:

    • 嗨蒂姆,我更新了我的代码以使用你的建议。视图确实滚动到 W 列。有时我需要查看 A 到 V 列中的值。现在我无法手动滚动到 W 列的左侧来查看 A 到 V 列。
    • 没有线索。我上面提供的代码中的任何内容都不会阻止在工作表上的其他任何地方手动滚动(我认为“手动滚动”是指使用 UI 滚动条?)。您需要为我或其他任何人提供更多详细信息以帮助解决这个新问题,如果合适,您可以将其作为单独的 StackOverflow 问题打开。
    • 我的错误。有两个水平滚动条。一个用于 SpreadsheetGear Wiew,我认为第二个用于 Windows 窗体控件围绕视图。当滚动列设置为 W 列时,Wiew 滚动消失,只有外部 Windows 窗体控件可见。因为我没有看到视图滚动条,所以我认为我无法滚动到 W 列的左侧。但是如果我将外部 Windows 窗体滚动到右侧,那么视图滚动条就会出现,然后我可以滚动查看滚动条并查看 W 列左侧的列。
    猜你喜欢
    • 2013-07-17
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多