-1

私は を持ってSystem.Windows.Forms.PanelSystem.Windows.Forms.Formます。パネルでは、 で線を引きますmyGraphic.DrawLine(myPen, myMouseDownPoint, myMouseUpPoint)。これまでのところ問題なく動作します。

ここで、パネルのコンテンツを別の .xml に表示したいと思いますSystem.Windows.Forms.Panel。しかし、これはうまくいきません。

私が試したのは:

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

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

2
  1. Panelまったく同じインスタンスを複数のフォームに追加することはできません。それらは、1 つだけで動作するように設計されてい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
    }
}

ここで重要な点が 2 つあります。1 つ目は、メソッドを呼び出すたびに新しいパネルを作成していることです。それぞれFormがメソッドを呼び出すと、1 つの共有パネルではなく、2 つの別個のパネルが表示されます。さらに、どちらもForm他方にアクセスする必要はありません (設計の観点からは、アクセスする必要があるようには思えません)。この作業を行うためにサードパーティを呼び出すことは、両者にとってはるかにアーキテクチャ上の意味があります。

于 2012-09-17T16:44:22.917 に答える