1

我的用户ultragrid定义visibleinvisible操作中有许多列。现在我必须检查该列是否是column网格中的第一个。因为我有一些在我无法获得该列columns的帮助下明确绑定。index始终显示与column第一个相同。

//代码

For Each UltraGridColumn In Me.TransactionsGrid.Rows.Band.Columns

   'Get the first cell column in the grid
   UltraGridCell = UltraGridRow.Cells(UltraGridColumn)

   If ('Check Here') Then

      'Set the cell image
      UltraGridCell.Appearance.Image = My.Resources.Tran_comment_161
      UltraGridCell.Appearance.ImageHAlign = HAlign.Right
      UltraGridCell.Appearance.ImageVAlign = VAlign.Top

   Else
      UltraGridCell.Appearance.ResetImage()
   End If
Next

如何做到这一点?

4

3 回答 3

1

我正在添加一个替代答案,因为它回答了标题提出的问题,并且可能是人们遇到这个问题时正在寻找的。

WinGrid 将有一个或多个 ColScrollRegions 提供一个可滚动的标题区域,并且在 ColScrollRegion 之外有一个VisibleHeaders属性公开滚动区域的可见标题。

请注意,即使网格向右滚动并且可能不是网格中的第一列,这也会提供第一个可见列。当滚动区域的滚动位置一直向左时,VisibleHeadersCollection中的第一个表头将返回网格中的第一列。

ColScrollRegions 由 DisplayLayout 上的 ColScrollRegions 属性访问,您可以通过以下方式访问第一个可见标题:

Me.ultraGrid1.DisplayLayout.ColScrollRegions(0).VisibleHeaders(0).Header

如果标题是 ColumnHeader,那么它将把 Column 作为属性公开。

于 2013-05-23T13:58:34.733 回答
0

编辑: 此代码将为您提供第一个可见的列。

Dim firstCol As UltraGridColumn = Nothing
        For Each col As UltraGridColumn In TransactionsGrid.DisplayLayout.Bands(0).Columns
            If Not col.Hidden Then
                firstCol = col
                Exit For
            End If
        Next
        If firstCol IsNot Nothing Then
            'Your code here
        End If
于 2013-05-17T09:53:31.193 回答
0

使用标志来检查选择了哪一列,此代码可以正常工作。

For Each UltraGridColumn In Me.TransactionsGrid.Rows.Band.Columns

       'Get the first cell column in the grid
       UltraGridCell = UltraGridRow.Cells(UltraGridColumn)

       If ('Check Here') Then

          'Set the cell image
          UltraGridCell.Appearance.Image = My.Resources.Tran_comment_161
          UltraGridCell.Appearance.ImageHAlign = HAlign.Right
          UltraGridCell.Appearance.ImageVAlign = VAlign.Top

       Else
          UltraGridCell.Appearance.ResetImage()
       End If
    Next 

 If (blnFlag) Then
                    Dim i = 0
                    For Each UltraGridColumn In Me.TransactionsGrid.Rows.Band.Columns

                        'Get the first cell of the column in the grid
                        UltraGridCell = UltraGridRow.Cells(UltraGridColumn)

                        If (UltraGridColumn.Hidden = False And i = 0) Then

                            'Set the cell image
                            UltraGridCell.Appearance.Image = My.Resources.Tran_comment_161
                            UltraGridCell.Appearance.ImageHAlign = HAlign.Right
                            UltraGridCell.Appearance.ImageVAlign = VAlign.Top
                            i += 1
                        Else
                            'Reset the image if other column
                            UltraGridCell.Appearance.ResetImage()
                        End If

                    Next
  End If
于 2013-05-23T10:04:34.837 回答