-3

私は2つの異なる形式の2つのピクチャボックスを持っています。

  • Form1:firstpicturebox
  • form2:picturebox1

私はpicturebox1にfirstpictureboxの画像を転送したい。

だから誰も助けて、同じものに対する解決策を提供することができます。

2 답변


1

Form2コンストラクターを使用して送信できます

これを試して:

Form1の:

Form2 form2 = null;

private void button1_Click(object sender, EventArgs e)
    {
        form2 = new Form2(pictureBox1.Image);
        form2.Show();
    }

フォーム2:

public Form2(Image pic1)
    {
        InitializeComponent();
        pictureBox1.Image = pic1;
    }


  • ここでは、私はform1の最初の画像ボックスを使用していません。 - VGI
  • 新しいform2()内のfirstpictureboxにどのようにアクセスしますか? - VGI
  • 私は非常にForm2のクラスレベルの変数としてForm1の参照を保持することをお勧めします!私は答えを編集する自由を取った。 - TaW

1

あなたは本当に1つで2つの質問をしています:

1 - どのようにして1つのPictureBoxのコンテンツを別のPictureBoxに取り込むことができますか?

2 - 別のフォームから1つのフォームのコントロールなどにアクセスするにはどうすればよいですか?

質問1は簡単です。pictureBox1.Image = pictureBox2.Image;

質問2への答えは難しいことではありませんが、それを行う方法はたくさんありますが、どちらを選択するかは、2つの形式で何をしたいかによって決まる場合があります。

基本的な方法は、常に他のフォームへの有効な参照を取得することです。

ここには一般的な目的の方法があります:

  • 各フォームの他のフォームのクラスのグローバル変数を宣言します。
  • これらの参照が他の形式を指すようにする適切なタイミングで
  • アクセスするコントロール、プロパティなどを公開する。コントロールのために、余分な参照を作成して記入するか、デザイナーに行き、その範囲をプライベートからパブリックに変更することができます。

正しい瞬間は何ですか?プログラマーのスタートアップ時にform1が作成され、form1の何らかのアクションによってform2が作成されたと仮定すると、作成して表示するときにform2への参照をそこに得ることができます:

    form2 = new Form2(this);
    form2.Show();

これは、ボタンのクリックやform1のloadイベントであってもかまいません。

私は、thisコンストラクタで!これは、form1への参照を新しいフォームに渡すための良い方法です。したがって、form2のコンストラクタは次のようになります。

public Form2(Form1 form1_)
{
    InitializeComponent();
    form1 = form1_;
}

最後のステップは、アクセスする必要のあるコントロールを公開することです。 Designer.csファイルに移動し、宣言をから変更します。

private System.Windows.Forms.PictureBox pictureBox1;

public System.Windows.Forms.PictureBox pictureBox1;

完了しました。

または...

1つのPictureBoxにアクセスする必要のあるフォームがたくさんある場合は、これを試すこともできます。programm.csファイル内の静的なグローバル参照を次のように宣言します。

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

public static PictureBox thePictureBox;

次に、フォーム1の参照を入力します。

    Program.thePictureBox = pictureBox1;

これで他のすべての形式でも参照できます:

myNextPictureBox42.Image = Program.thePictureBox.Image;


  • 両方のピクチャボックスは異なった形になっています。私はアレディを公開しました。 - VGI
  • この場合は、複数のフォームを1つのフォームにリンクしたいので、これ以外の方法を提案できますか? - VGI
  • 良い!私が説明したように、あなたが必要とするのは、他のフォームへの少なくとも1つの参照です。次に、form1:pictureBox.Image = form2.pictureBox.Imageで記述することができます。もちろんあなたの名前はあなたがそれらの名前を挙げています。私は何かを意味しています。 - TaW
  • 私はすでにこれを試しましたが、これはうまくいきません - VGI
  • 何を試しましたか?私はいくつかの提案をしました。あなたの質問に関連するコードを追加してください!そしてそれはどのように機能しないのですか?コンパイラエラー?ランタイム?ここでもっと情報を入力する必要があります! - TaW

リンクされた質問


最近の質問