zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    poj 3040 Allowance
    poj 2393 Yogurt factory
    【BZOJ1833】数字计数(ZJOI2010)-数位DP
    【BZOJ4820】硬币游戏(SDOI2017)-概率+高斯消元+KMP
    【BZOJ3626】LCA(LNOI2014)-树链剖分+离线处理
    【BZOJ4817】树点涂色(SDOI2017)-LCT+LCA+线段树
    【BZOJ1135】LYZ(POI2009)-线段树+Hall定理
    【CF392D】Three Arrays-set+multiset
    【51Nod1688】LYKMUL-线段树+乘法原理
    【BZOJ2956】模积和-数论分块
  • 原文地址:https://www.cnblogs.com/finema/p/1177823.html
Copyright © 2011-2022 走看看