我的winform程序中有textbox1~~textbox26 26个textbox,我想做成像excel那样的用上下键控制移动代码如下:
 private void textbox11_KeyUp(object sender, KeyEventArgs e)
        {
              switch (e.KeyValue.ToString())
                    {
                        case "38": //按up键移动到上一单元格
                            textbox10.Focus();
                            textbox10.SelectAll();
                            break;
                        case "40": //按down键移动到下一单元格
                            textbox12.Focus();
                            textbox12.SelectAll();
                            break;
                            ArrayList al = new ArrayList();
}
}
现在有个问题,我怎么才能不用去写26个keyup事件就能解决这个问题。

解决方案 »

  1.   

    绑定同一个textbox11_KeyUp判段sendertextbox txt=(textbox)sender;
    if (txt.name=="??")
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 
    http://feiyun0112.cnblogs.com/
      

  2.   

    我想用textbox的index行不行呢?
      

  3.   

    处理下 Form 的 KeyDown 事件,根据按下的键盘值,确定是发送 Tab 键(下一个)还是 shift-Tab 键(上一个)。
      

  4.   

     private void textBox_KeyUp(object sender, KeyEventArgs e)
            {
                TextBox t = (TextBox)sender;            int index = Convert.ToInt32(t.Name.Substring(7));
                if (e.KeyCode == Keys.Up)
                {
                    index--;
                    if (index == 0) index = 26;
                }
                if (e.KeyCode == Keys.Down)
                {
                    index++;
                    if (index > 26) index = 0;
                }            TextBox nextText = (TextBox)this.Controls["TextBox" + index.ToString()];
                nextText.Focus();
                nextText.SelectAll();        }将所有的TextBox 的KeyUp事件关联到textBox_KeyUp,且所有的TextBox 的name是TextBox1, TextBox2 ..... TextBox26
      

  5.   

    同意三楼的做法,确定Tab顺序之后,在keydown中发送Tab键消息或者Shift_Tab消息
      

  6.   

    同意三楼我也用过 Form 的 KeyDown 事件
      

  7.   

    写一个公共函数textBox1_KeyDown(),然后利用事件委托
    如:this.textBox1.KeyDown+=new KeyEventHandler(textBox1_KeyDown);
                               ...
      this.textBox26.KeyDown+=new KeyEventHandler(textBox1_KeyDown);
    这样可以避免写26个实现方法。
      

  8.   

    结贴了,随便说说。4楼的代码可以直接用,但是限制是所有的 TextBox 的名称都要用默认的名称,并且排放的顺序不能颠倒,这个对于写代码来说应该不是一件好事情,因为这些 TextBox 的名称几乎是没有意义的名字。