-1

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

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

我尝试的是:

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

我该如何解决这个问题?

4

1 回答 1

2
  1. 您将无法将完全相同的Panel实例添加到多个表单中。它们被设计成一个,而且只有一个,Form
  2. 您没有从其他表单正确访问面板;它不是(无论如何我希望)静态的,并且您没有其他形式的实例。

最好是制作一个实用函数来生成 a 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需要访问另一个(从设计的角度来看,它们听起来不应该是这样)。对他们来说,调用一些第 3 方来完成这项工作更具架构意义。

于 2012-09-17T16:44:22.917 回答