0

我设计了一个表格用作打印模板。它是为填写表格而设计的,所以在绘制它们之前我必须考虑页边距。

我当前的问题是试图让System.Windows.Forms.Panel控件按System.Drawing.Printing.Margins指定的数量移动。

private static void MarginShift(Control ctrl, Margins m) {
  Label lbl = ctrl as Label;
  if (lbl != null) {
    lbl.Location = new Point(lbl.Location.X + m.Left, lbl.Location.Y + m.Top);
  } else {
    Panel pnl = ctrl as Panel;
    if (pnl != null) {
      int x = pnl.Location.X;
      int y = pnl.Location.Y;
      pnl.Location = new Point(x + m.Left, y + m.Top);
      if ((pnl.Location.X == x) && (pnl.Location.Y == y) &&
          ((0 < m.Left) || (0 < m.Top))) {
        Console.WriteLine("WTF?");
      }
      foreach (Control c2 in pnl.Controls) {
        MarginShift(c2, m);
      }
    }
  }
}

我从模板表单传递的每个面板都会命中我的小控制台输出。

Microsoft 的Panel控件文档说明了Location值:

获取或设置控件左上角相对于其容器左上角的坐标。

那么,为什么使用边距移动面板不会移动位置

我需要做什么来纠正这个问题?

4

1 回答 1

1

没关系。面板停靠在表单上。

于 2012-08-02T15:40:29.860 回答