我的窗体上有三个空间TreeView1,DataGrid1,Lable1,我的TreeView1已经关联了AfterSelect事件,每次打开窗体的时候,不知道为什么,总是要自动调用一次TreeView1_AfterSelect事件,我把TreeView1的TabIndex属性改成3也不行,为什么?

解决方案 »

  1.   

    因为
    窗体一load下来,treeview会自动选择根节点
    有选择当然会有afterselect
      

  2.   

    如果treeview在打开窗体时不是第一个获得焦点的话就不会afterselect。你在视图设计器界面选择"视图"菜单,选择TAB键顺序,让datagrid先获得焦点就ok了。我刚试了一下是可以的。
    ps我用的vs2005  不知道2003行不行
      

  3.   

    如果treeview在打开窗体时不是第一个获得焦点的话就不会afterselect。你在视图设计器界面选择"视图"菜单,选择TAB键顺序,让datagrid先获得焦点就ok了。我刚试了一下是可以的。
    ps我用的vs2005  不知道2003行不行
    -------------------------------
    我已经把tab顺序设置了,不行啊,我在原贴里面也说了
      

  4.   

    to aiyagaze() ( ) 信誉:100    Blog 
    可以了,谢谢!因为我的treeview放在GroupBox里面了,而GroupBox的TabIndex设置的为0,虽然我不把treeview的tabIndex属性设为9,但是GroupBox无法在运行时获得焦点,所以本应该groupbox先获得焦点(因为tabindex为0),但是它又不能获得焦点,所以,他里面的控件treeview就先获得焦点了,类似古代的“子以母贵”,呵呵
      

  5.   

    2003我也试验了  没问题
    你把TreeView1的TabIndex属性改成3并不一定能解决问题
    关键在于DataGrid的TabIndex比TreeView1的还要靠前才行
      

  6.   

    @abblly如果有容器的话,例如groupbox或者panel  都会有类似这种从父控件向其中首个子控件传递的情况的
      

  7.   

    从父控件向其中首个子控件传递的情况的
    ---------------------
    就是这个情况,害得我找了半天,后来没办法,msdn仔细看了看,才搞定