私は2つの異なる形式の2つのピクチャボックスを持っています。
私はpicturebox1にfirstpictureboxの画像を転送したい。
だから誰も助けて、同じものに対する解決策を提供することができます。
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;
}
あなたは本当に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;