Textbox控件,存放在一个容器,比如Panel中,Panel也有可能在其它容器中,怎样获取Textbox相对Form的坐标。
我用PointToScreen和PointToClient,不能正确获取。

解决方案 »

  1.   

    递归找父容器,直到顶层form,再根据每一层的location计算
      

  2.   

    或者先全部Control.PointToScreen 方法 
    再算差距
      

  3.   

    // 通过textBox的容器计算它所在的屏幕位置
    Point textPos = textBox1.Parent.PointToScreen(textBox1.Location);
    Point formPos = PointToScreen(new Point(0, 0)); // 得到窗体所在屏幕位置
    textPos = new Point(textPos.X - formPos.X, textPos.Y - formPos.Y); // 计算相对值
    Console.WriteLine("{0},{1}", textPos.X, textPos.Y);