有一个TextBox数组,动态生成的,应该如何指定哪个控件获取焦点?
比如我当前焦点在TextBox[10],我按下Keys.Left键TextBox[0]就获取焦点

解决方案 »

  1.   

    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                //MessageBox.Show(this.ActiveControl.Controls.Count.ToString());
                switch (e.KeyData)
                {
                    case Keys.Up:
                        //将焦点移动到上一个控件
                        this.SelectNextControl(this.ActiveControl,false, true, true, true);
                        break;
                    case Keys.Down:
                        //将焦点移动到下一个控件
                        this.SelectNextControl(this.ActiveControl, true, true, true, true);
                        break;
                    case Keys.Left:
                        //如何让当前控件的前10个控件获取焦点
                        break;
                    case Keys.Right:
                        //如何让当前控件的后10个控件获取焦点                    break;
                    default:
                        break;
                }
            }
      

  2.   

    循环判断某个控件获得了焦点.
    有没有这个函数getFocus()?
    要在一个函数里判断一下:
    foreach(System.Windows.Forms.Textbox textbox in forms.Controls)
    {
      if textbox.GetFocus() == true
    ....
    }方法就是这样,语法不保证..
      

  3.   

    this.Controls.Find("控件名", true)[0].Focus();
      

  4.   

    自己搞定了this.objText[this.ActiveControl.TabIndex - 10].Focus();
    这样就可以了
      

  5.   

    如果你创建的TextBox控件组的话,想都用一个事件,然后进行写代码的话,就可以用这个办法,如:TextBox[] textBox=new TextBox[20];
    for (int i=0;i<20;i++)
    {
    textBox[i]=new TextBox();
             textBox[i].Name="textBox"+i;
    textBox[i].Enter += new System.EventHandler(TextBox_Enter);
             //........自己写的属性定义
             this.Controls.Add(textBox[i]);
    }private void TextBox_Enter(object sender, System.EventArgs e)
    {
    TextBox box=(TextBox)sender;
    box.Text="aaa";
    }
      

  6.   

    同样还可以得到当前获得焦点的TextBox的名称,如:box.Name
      

  7.   

    ((textBox)this.Controls.FindControl("控件名")[0]).Focus();