【问题标题】:How to copy the content of a .NET panel如何复制 .NET 面板的内容
【发布时间】:2012-09-17 16:26:33
【问题描述】:

我在System.Windows.Forms.Form 中有一个System.Windows.Forms.Panel。在面板中,我用myGraphic.DrawLine(myPen, myMouseDownPoint, myMouseUpPoint) 画线。到目前为止它运行良好。

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

我尝试的是:

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

我该如何解决这个问题?

【问题讨论】:

  • 抱歉,忘了说,第二个面板在第二个 System.Windows.Forms.Form 中。我试过 this.panel1 = MyForm1.panel1; this.panel1.Refresh();
  • 请使用您的问题下方的edit link 添加该信息。

标签: c# forms panel draw


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

最好是创建一个实用函数来生成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 方来完成这项工作更具有架构意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2019-04-08
    • 2016-02-22
    相关资源
    最近更新 更多