如何复制.NET面板的内容

时间:2012-09-17 16:26:34

标签: c# forms panel draw

我在System.Windows.Forms.Panel中有一个System.Windows.Forms.Form。在面板中,我使用myGraphic.DrawLine(myPen, myMouseDownPoint, myMouseUpPoint)绘制线条。它到目前为止工作正常。

现在,我想在另一个System.Windows.Forms.Panel中显示该面板的内容。 但这不起作用。

我尝试的是:

this.panel1 = MyForm1.panel1;
this.panel1.Refresh();

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

  1. 您将无法将完全相同的Panel实例添加到多个表单中。它们被设计为只有一个,Form
  2. 您没有从其他表单正确访问该面板;它不是(我希望无论如何)静态,而你没有其他形式的实例。
  3. 最好是使用实用程序函数生成Panel,并且两个Form实例都可以调用该实用程序方法。

    public static class UtilityMethods
    {
        public static Panel CreatePanel()
        {
            Panel panel = new Panel();
            //do stuff to panel, draw your lines, etc.
            return panel
        }
    }
    

    这里有两点重要。首先,每次调用方法时都要创建一个新面板。如果每个Form调用该方法,则会有两个单独的面板,而不是一个共享面板。另外,Form都不需要访问另一个(从设计的角度来看,它听起来不应该是这样)。对于他们而言,要让第三方召集这项工作,对他们来说更具建筑意义。