窗口的左边有几个TREENODE,右边是PANEL.在PANEL 上有几个TEXTBOX.我希望点击左边的TREENODE,光标显示在右边对应的TEXTBOX上.我重写了ONENTER 和ONLEAVE的事件.可是为什么在ONENTER 中是正确的聚焦点,但是随即又进入了ONLEAVE的事件,取消了聚焦.我找了一天也没找到那里发出的取消事件.
帮帮忙吧

解决方案 »

  1.   

    跟重写textbox事件没有关系,是treeview的原因,假如你在treeview的nodeclick或者mouseup或者某个事件中,写了textbox.focus()的代码,系统也执行了这些代码,所以onenter触发了,但是由于treeview的机制,这些代码执行后有继续执行了treeview的代码,触发treeview的事件,所以textbox的焦点自然就失去了
      

  2.   

    什么叫聚焦?!焦点
    你点击TreeView的结点,把焦点给TextBox,这个时候TreeView的节点肯定会触发Leave事件哈,你要写Leave事件干什么?
      

  3.   

    就是焦点,我翻译的不正确.
    我在ONENTER里定义了TEXTBOX的背景色,在ONLEAVE里吧背景色改回来了,老板要求的要改变背景色.没办法啊
      

  4.   

    一:可以不使用TreeView控件.
    二:使用异步方法来使得其它控件可以有焦点
      

  5.   

    使用异步的代码可以参考下面的代码(仅供参考):
    delegate void somedele();
    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
    somedele d = new somedele(this.setFocus);
    this.BeginInvoke(d);
    }
    private void setFocus()
    {
    this.textBox1.Focus();
    }
      

  6.   

    高人啊,按照hbxtlhx(平民百姓-自已动手,丰衣足食)的方法,问题解决了.
    哈哈哈,结贴~~~~~~