• VB: DataGrid 的列可见问题


    我在vb6 中 ,用DataGrid 构造了如下表格,共5列,分别为a1,b2,c3,d4,f5
    +——————+—————+——————+————+—————+
    |___a1_____|___b2___|____c3_____|__d4___|__f5____|

    按钮1,要实现隐藏 a1, c3列,其他列可见,其初步代码为
    Private Sub Command1_Click()
      Me.DataGrid1.Columns("a1").Visible = False
      Me.DataGrid1.Columns("b2").Visible = True
      Me.DataGrid1.Columns("c3").Visible = False
      Me.DataGrid1.Columns("d4").Visible = True
      Me.DataGrid1.Columns("f5").Visible = True
    End Sub

    按钮2,要实现隐藏 b2, d4列,其他列可见,其初步代码为
    Private Sub Command2_Click()
      Me.DataGrid1.Columns("a1").Visible = True
      Me.DataGrid1.Columns("b2").Visible = False
      Me.DataGrid1.Columns("c3").Visible = True
      Me.DataGrid1.Columns("d4").Visible = False
      Me.DataGrid1.Columns("f5").Visible = True
    End Sub


    当我按了按钮1,再按按钮2,期望的结果应是"b2, d4列隐藏,其他列可见" ,但实际执行结果却是 f5列可见,其他列都隐藏了,如果你在网格上点击一下,网格的显示效果才和期望的一致。

    为什么要点击一下才行啊?难道遇上bug了?还是有什么地方没处理好?

    后来经过查看MSDN 关于DataGrid的帮助,尝试了几个属性的设置,最后终于找到解决办法,就是 LeftCol 属性。
    LeftCol 属性:返回或设置一个整数,表示DataGrid 控件最左端的可见列,该属性在设计时是只读的。

    如果设置 某列是否可见,vb会自动改变LeftCol 属性。

    以上代码执行完Command1_Click()后 ,LeftCol = 1; 当继续执行Command2_Click(),LeftCol = 4,正好是f5列,所以第一个可见的列就是 f5。

    要实现我期望的效果,代码改成以下,问题解决。
    修改后的代码:
    Private Sub Command1_Click()
      Me.DataGrid1.Columns("a1").Visible = False
      Me.DataGrid1.Columns("b2").Visible = True
      Me.DataGrid1.Columns("c3").Visible = False
      Me.DataGrid1.Columns("d4").Visible = True
      Me.DataGrid1.Columns("f5").Visible = True

      Me.DataGrid1.LeftCol = Me.DataGrid1.Columns("b2").ColIndex
    End Sub

    Private Sub Command2_Click()
      Me.DataGrid1.Columns("a1").Visible = True
      Me.DataGrid1.Columns("b2").Visible = False
      Me.DataGrid1.Columns("c3").Visible = True
      Me.DataGrid1.Columns("d4").Visible = False
      Me.DataGrid1.Columns("f5").Visible = True

      Me.DataGrid1.LeftCol = Me.DataGrid1.Columns("a1").ColIndex
    End Sub

  • 相关阅读:
    14.[保护模式]TSS任务段
    13.[保护模式]陷阱门
    12.[保护模式]中断门
    11.[保护模式]调用门
    10.[保护模式]长调用与短调用
    9.[保护模式]代码的跨段跳转流程
    8.[保护模式]段权限检查
    7.[保护模式]段描述符DB位
    6.[保护模式]段描述符属性_S位_TYPE域
    5.[保护模式]段描述符属性_P位_G位
  • 原文地址:https://www.cnblogs.com/finema/p/1177823.html
Copyright © 2020-2023  润新知