现在有一个比较奇怪的问题,我在form_load里进行的treeview的初始化然后在form_resize里把treeview的item全部选中,实际上也确实全部选中了但是checkbox看上去就好像一个也没被选中一样,这是为什么,我已经把treeview全部refresh了

解决方案 »

  1.   

    我专门试了一下,没什么问题,可能你是不是别的什么地方哪儿弄错了:不过,你可临时放个按钮,在按钮里在单独做个全选试一下,看看是什么效果!下面的代码是,我测试时写的,可供您参考一下:Private Sub Command1_Click()
        Dim i As Integer
        
        For i = 1 To TreeView1.Nodes.Count
            TreeView1.Nodes(i).Checked = False
        Next
    End SubPrivate Sub Form_Load()
        Dim i As Integer
        
        For i = 1 To 20
            TreeView1.Nodes.Add , 1, Trim(Str(i)) & "_", Trim(Str(i))
        Next
        
    End SubPrivate Sub Form_Resize()
        Dim i As Integer
        
        For i = 1 To TreeView1.Nodes.Count
            TreeView1.Nodes(i).Checked = True
        Next
    End Sub
      

  2.   

    哦,没有哪里弄错,这些功能都是好的,我的全选/全不选按钮,在刚刚load好,虽然看上去所有的checkbox都是没有选中状态,但是实际上是选中状态,我已经测试过,没有问题,就是看不见
      

  3.   


    这个resize方法我不是这么写的,我要做判断,因为resize似乎是窗口大小发生改变的时候就会调用,所以这样会导致每次窗口改变大小都会全选,这会变成bug的,所以我这里做了一个判断,是否进行过resize,就加了个判断就看不到了,我如果把这个判断去掉,就可以看到所有checkbox被选择了,很奇怪,但是这只是视觉上的差别,因为我step进去,所有的结果都是正确的,不管能否看得到checkbox被选中
      

  4.   

    有,我把代码贴出来吧,呵呵,麻烦各位帮我看看哪里不对,因为功能其实挺简单的就是在第一次resize的时候把treeview全选并且在选择信息窗口里现实全选字样而已
    Private Sub Form_Resize()
        
        
        If isResized Then
            GoTo line1
        End If
        
        For i = 1 To tvReportFilter.Nodes.count
       
            tvReportFilter.Nodes(i).Checked = True
            tvReportFilter.Refresh
        Next i    tvReportFilter.Refresh
        Form.Refresh
        
        isAllSelect = True
        isResized = True
    line1:
        If isAllSelect Then
        
            txtSBF.Value = "SBF filtered as: All!!"
            txtRegion.Value = "Region filtered as: All!!"
            isValidFilter = True
        
        End If
    End Sub
      

  5.   

    我前面说过:你新建一个工程,新拖过来一个TREEVIEW,再拖个COMMANDBUTTON,FORM_LOAD 里随便加载几个TREEVIEW中的NODE子项;把全选代码写在COMMANDBUTTON的CLICK事件里,试一下!1、如果,按钮的CLICK事件里的代码执行后,也是同样的效果,说明你的TREEVIEW控件本身有问题!2、如果,按钮的CLICK事件里的代码执行后,一点问题没有,说明还是你的代码不知道哪里有问题!
      

  6.   

    呵呵,我想任何treeview有一个全选\全不选按钮很正常,我前面可能表达有问题,没说清楚,这个按钮怎么可能在事件里呢,是另外的功能,但是对item全选的代码是相同的,但是按钮的performance完全没问题,而用resize初始化的时候就有问题至于我为什么放在resize里是因为我放在formload里根本没办法更新状态,至于放在什么事件里我觉得没什么问题吧,反正最好是在formload之后的事件响应里来做会好一些,要不可能因为formload没有完全把form构造完毕会造成更新的checked状态上不去,之前有高人告诉我用on_activate,我用了觉得不是很好如果蓝海你有什么建议,可以直接告诉我,譬如这段代码放在什么事件里响应更好我是新手这没错,高手会在这里问这种初级的问题吗,作为高手的您,希望可以回帖有一些建设性再重申下,我的全选和全不选功能完全没有问题,要不我何必还在困惑,呵呵
      

  7.   


    呵呵,如果我不这么判断,那么每次窗口调整大小都会全选一次,您作为用户会觉得这个很OK?我只是为了更新状态罢了,只要是放在formload之后的事件里都可以,不一定非要resize所以我当然是全选在进入form以后只做一次了,这个有什么问题吗
      

  8.   

    lz try这个加个timer控件,这段代码放在timer事件里,窗体加载时设置timer,触发时做这个