this.flowLayoutPanel1.Controls.Add(this.button1);
 this.flowLayoutPanel1.Controls.Add(this.textBox1);
 this.flowLayoutPanel1.Controls.Add(this.button2);
 this.flowLayoutPanel1.Controls.Add(this.textBox2);如flowLayoutPanel1容器里有这4个控件,当我拖动Button1的时候可以获取下一个控件textBox1
请问如何实现,我用GetNextControl有时行有时出错。不知为什么。

解决方案 »

  1.   

    http://www.google.com.hk/search?q=c%23+spy%2B%2B&rlz=1I7GGLD_zh-CN&ie=UTF-8&oe=UTF-8&sourceid=ie7
      

  2.   

    用循环,
       foreach(Contrl ctl in Panel.Controls)
      {
        //这里可以获取下一个控件,具体代码我忘了,你用ctl.出来就会有。
      }
      

  3.   

    恩,因为我要的功能是:几个flowLayoutPanel 他们之间的子控件可以相互拖动,当我拖动其中一个Button时可以和Button后面的那个textbox一起拖动。所以我要获取Button的下一个控件,不知这样行不?
      

  4.   

    我的所有Button的MouseDown事件都是用同一个的方法
     private void button_MouseDown(object sender, MouseEventArgs e)
            {
                pt = this.PointToClient(MousePosition);
                startflp=(FlowLayoutPanel)(((Button)sender).Parent);
                try
                {
                    txb = (TextBox)GetNextControl((Button)sender, true);
                }
                catch (Exception ee) { MessageBox.Show(ee.Message); }
                move(startflp, sender);
            }
    用循环怎么弄?还有我这个方法有错吗?谢谢指教
      

  5.   

    我认为你可以这样,定义一个继承普通button的自定义button,里面价格参数,就是下一个控件是谁,
    或者你懒一点,就用button.tag值去保持这个东西,然后,从你的sender参数中把这个textbox给获取出来!就ok了
      

  6.   

    tabindex查找
    protected     override     bool     ProcessDialogKey(System.Windows.Forms.Keys         aKey)     
    {     
    if(aKey ==Keys.Enter   &&   this.ActiveControl   is   TextBox)     
    {     
    SendKeys.Send("{TAB}");     
    return  true;     
    }     
    base.ProcessDialogKey(aKey);     
    return  false;     

      

  7.   

    恩 行了 
    太感谢了coollangzi和wuyq11