VB MSHFLEXGRID MSHFLEXGRID 同时选中不连续的多行

  在工程中添加一个类模块,名为   Selection  
  然后加入以下代码:  
   
  Dim   colRows   As   Collection  
  Dim   ControlKey   As   Boolean  
  Public   WithEvents   flx   As   MSFlexGrid  
   
  Public   Sub   ToggleSelection()  
          Dim   x   As   Integer  
          Dim   d  
          Dim   mode   As   Boolean  
          Dim   OldRow,   OldCol  
          x   =   flx.Row  
          If   x   =   0   Then   Exit   Sub  
          On   Error   Resume   Next  
           
          OldRow   =   flx.Row  
          OldCol   =   flx.col  
           
          d   =   colRows(CStr(x))  
          If   Err   Then           '   not   add  
              colRows.Add   x,   CStr(x)  
              mode   =   True  
          Else  
              colRows.Remove   CStr(x)       'remove  
              mode   =   False  
          End   If  
          MakeSelectedStatus   x,   mode  
          flx.Row   =   OldRow  
          flx.col   =   OldCol  
  End   Sub  
   
  Private   Sub   MakeSelectedStatus(Row   As   Integer,   mode   As   Boolean)  
      Dim   col  
      Dim   Fcolor   As   Long,   BColor   As   Long  
       
      If   mode   Then  
          Fcolor   =   flx.ForeColorSel  
          BColor   =   flx.BackColorSel  
      Else  
          Fcolor   =   vbBlack  
          BColor   =   vbWhite  
      End   If  
      With   flx  
          .Visible   =   False  
          .Row   =   Row  
            For   col   =   1   To   .Cols   -   1  
                  .col   =   col  
                .CellBackColor   =   BColor  
                .CellForeColor   =   Fcolor  
            Next   col  
            .Visible   =   True  
      End   With  
  End   Sub  
  Public   Sub   ClearSelection()  
      '  
      Dim   x  
      Dim   OldRow,   OldCol  
      With   flx  
          OldRow   =   .Row  
          OldCol   =   .col  
          For   Each   x   In   colRows  
            MakeSelectedStatus   CInt(x),   False  
          Next  
          .Row   =   OldRow  
          .col   =   OldCol  
      End   With  
  End   Sub  
  Public   Property   Get   SelectedRow()   As   Collection  
      Set   SelectedRow   =   colRows  
  End   Property  
   
  Private   Sub   Class_Initialize()  
    Set   colRows   =   New   Collection  
  End   Sub  
   
  Private   Sub   Class_Terminate()  
      Set   colRows   =   Nothing  
  End   Sub  
  Private   Sub   flx_KeyDown(KeyCode   As   Integer,   Shift   As   Integer)  
      '  
      If   KeyCode   =   17   Then   ControlKey   =   True  
  End   Sub  
   
  Private   Sub   flx_KeyUp(KeyCode   As   Integer,   Shift   As   Integer)  
      If   KeyCode   =   17   Then   ControlKey   =   False  
  End   Sub  
   
  Private   Sub   flx_MouseDown(Button   As   Integer,   Shift   As   Integer,   x   As   Single,   y   As   Single)  
        '  
      If   Button   <>   1   Then   Exit   Sub  
      If   Not   ControlKey   Then  
          ClearSelection  
      Else  
          ToggleSelection  
      End   If  
  End   Sub  
   
   
  在你使用以前,请声明    
  Dim   mSelection   as   New   Selection  
  ...  
  Set   mSelection.Flx=MSFlexGrid1  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要修改MSHFlexGrid单元格背景色,可以使用MSHFlexGrid控件的SetCellBackColor方法。例如,要将第3行、第2列单元格的背景色设置为绿色,可以使用以下代码:MSHFlexGrid1.SetCellBackColor 3, 2, vbGreen ### 回答2: 在VB MSHFlexGrid中修改单元格的背景色可以通过以下步骤实现: 1. 首先,确保你的项目引用了"Microsoft FlexGrid Control"组件,这样在工具箱中才能找到MSHFlexGrid控件。 2. 将MSHFlexGrid控件拖放到窗体上,并进行相应的设置,比如指定宽度、高度和行、列的数量等。 3. 在代码中,使用MSHFlexGrid控件的CellBackColor属性来修改单元格的背景色。通过指定行和列的索引,可以确定要修改的单元格。例如,下面的代码将第2行第3列的单元格背景色设置为红色: MSHFlexGrid1.CellBackColor(2, 3) = vbRed 4. 可以将该代码放在合适的事件中触发,比如在点击按钮或选择下拉框时进行单元格背景色的修改。 需要注意的是,MSHFlexGrid控件的行和列的索引是从0开始的,所以要根据需求来确定具体要修改的单元格的索引。此外,还可以使用其他属性和方法来扩展和修改MSHFlexGrid控件,比如CellForeColor属性来设置单元格的前景色、CellAlignment属性来设置文本对齐方式等。 使用上述步骤,你就可以在VB MSHFlexGrid中修改单元格的背景色了。 ### 回答3: 在VB中,可以使用MSHFlexGrid控件来创建一个网格视图,并对单元格的背景色进行修改。下面是一个示例代码来实现这个功能: 首先,在VB的窗体设计器中添加一个MSHFlexGrid控件,可以通过拖拽的方式添加到窗体上。 然后,在窗体的加载事件中,可以设置MSHFlexGrid控件的一些基本属性,例如行数、列数、单元格的宽度和高度等。 接下来,在需要修改背景色的地方,可以使用以下代码: ' 设置要修改背景色的行和列 Dim row As Integer = 1 Dim col As Integer = 1 ' 设置要修改的背景色 Dim color As Integer = RGB(0, 255, 0) ' 这里使用了RGB函数来设置颜色,RGB(红色值,绿色值,蓝色值) ' 修改指定单元格的背景色 MSHFlexGrid1.Col = col MSHFlexGrid1.Row = row MSHFlexGrid1.CellBackColor = color 通过以上代码,就可以将指定单元格的背景色修改为绿色。 如果需要修改多个单元格的背景色,可以通过循环遍历的方式来完成。例如: ' 设置要修改背景色的行范围 Dim startRow As Integer = 1 Dim endRow As Integer = 5 ' 设置要修改背景色的列范围 Dim startCol As Integer = 1 Dim endCol As Integer = 5 ' 设置要修改的背景色 Dim color As Integer = RGB(0, 255, 0) ' 修改指定范围内的单元格的背景色 For row = startRow To endRow For col = startCol To endCol MSHFlexGrid1.Col = col MSHFlexGrid1.Row = row MSHFlexGrid1.CellBackColor = color Next Next 通过以上代码,就可以将指定范围内的所有单元格的背景色修改为绿色。 需要注意的是,MSHFlexGrid控件是一种较为老旧的控件,不再是VB开发中常用的控件。如果在新的VB项目中需要使用类似的网格视图控件,可以考虑使用DataGridView控件来实现相同的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值