我做分割视图,Winform,左边是TREEVIEW,右边是几十个USERCNTROL显示隐藏;
1、我想让右边各USERCNTROL显示时焦点在第一个TAB控件上,但在此面板的VisebleChanged事件响应中加入代码this.Focuse() 或是 txt_NAME.Focuse() 都不行(txt_NAME 是此面板上的一个控件名),但如果写 txt_NAME.Text="test";又可以,说明对像引用还是没问题呀,但为何Focuse() 不行?
2、我想在右边实现像EXCEL中一样的按Enter焦点到下一个TAB上,以前用C++时记得好像可以将响应函数的参数的KetValue(记不太清了)属性由VKdy_Enter换成VKey_Tab就右以了,但现在事件的参数e的属性都是只读的,如何实现呀?
3、如何定义一个按钮的快捷键(CTRL+而非ALT+)?
谢谢各位!!

解决方案 »

  1.   

    hustxifangshibai的博客任务还有1个星期,好难熬啊- -| 回首页 | 2005年索引 | - -
    datawindow.net按键返回其他键值
    关键词: datawindow.net                                           使用datawindowkeydown事件switch (e.KeyData)
       {
        case Keys.Enter:
        case Keys.Down:
         SendKeys.Send("{TAB}");//下一个tab值
         break;
        case Keys.Up:
         SendKeys.Send("+({TAB})");//上一个tab值
         break;   }
      

  2.   

    朋友們﹐我發現c#中主窗口﹑用戶控件都不能接受KeyDown\KeyUp\KeyPress類消息﹐在C++時只要在View中響應就好了﹐但在C#中如何是好呀﹖
    還有我的其他兩個問題呢﹖
      

  3.   

    你可以实现用Enter键和Tab键同样功能:在Form_Load中输入
    foreach(Control ctrl in this.Controls) 

    if ((ctrl is TextBox) || (ctrl is ComboBox)) //如果文本框或下拉框放在组合框中,你应该用如groupBox1.TextBox 

    ctrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.EnterKeyDown); 


    然后在EnterKeyDown事件中定义当按下的键为Enter键时,发送Tab键,程序如下:
    private void EnterKeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 

    if(e.KeyCode==Keys.Enter) 

    System.Windows.Forms.SendKeys.Send("{TAB}"); 


    这样便可实现用Enter代替Tab键转的
      

  4.   

    在控件初期化的时候用SortedList把子控件按Tab顺保存起来
    然后当响应到Enter事件时就可以找到并Focus到下一个控件咯
      

  5.   

    问题的关键是,我的UserContrl中的控件都不响应Enter呀?
    不过我还是再去试试看,谢谢各位先!!!