두 개의 다른 형태로 두 개의 그림 상자가 있습니다.
firstpicturebox의 이미지를 picturebox1로 전송하고 싶습니다.
따라서 누구든지 동일한 솔루션을 제공하고 지원할 수 있습니까?
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;
}
당신은 정말로 하나의 질문 두 개를 요구하고 있습니다.
하나의 PictureBox의 내용을 다른 PictureBox에 어떻게 가져올 수 있습니까?
2 - 다른 양식에서 한 양식의 대조표 등에 어떻게 액세스 할 수 있습니까?
질문 1은 간단합니다.pictureBox1.Image = pictureBox2.Image;
2 번 질문에 대한 대답은 어렵지 않지만 여러 가지 방법으로 선택할 수 있습니다. 선택하는 방법은 두 가지 방법으로 무엇을하고 싶은지에 따라 달라질 수 있습니다.
기본적인 방법은 항상 다른 형식에 대한 유효한 참조를 얻는 것입니다.
다음은 일반적인 용도의 방법입니다.
올바른 순간이 무엇입니까? programm1이 시작될 때 form1이 생성되고 form1의 일부 동작에 의해 form2가 생성된다고 가정하면 form2를 만들고 표시 할 때 form2에 대한 참조를 바로 얻을 수 있습니다.
form2 = new Form2(this);
form2.Show();
이것은 버튼 클릭 또는 form1의로드 이벤트에서도 발생할 수 있습니다.
나는에 대한 참고를 나눠 주었다.this
생성자에서! 이는 form1에 대한 참조를 새 양식으로 전달하는 좋은 방법입니다. 그러므로 form2의 생성자는 다음과 같이 보일 것입니다 :
public Form2(Form1 form1_)
{
InitializeComponent();
form1 = form1_;
}
마지막 단계는 액세스해야하는 컨트롤을 공개로 만드는 것입니다. Designer.cs 파일로 이동하여 선언을에서
private System.Windows.Forms.PictureBox pictureBox1;
에
public System.Windows.Forms.PictureBox pictureBox1;
끝난.
또는...
하나의 PictureBox에 모두 액세스해야하는 양식이 많은 경우 다음과 같이 시도해 볼 수 있습니다. programm.cs 파일에서 정적 전역 참조를 다음과 같이 선언하십시오.
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public static PictureBox thePictureBox;
그런 다음 form1에서 참조를 채 웁니다.
Program.thePictureBox = pictureBox1;
이제는 다른 모든 형식에서도이를 참조 할 수 있습니다.
myNextPictureBox42.Image = Program.thePictureBox.Image;