-3

두 개의 다른 형태로 두 개의 그림 상자가 있습니다.

  • Form1 : firstpicturebox
  • form2 : picturebox1

firstpicturebox의 이미지를 picturebox1로 전송하고 싶습니다.

따라서 누구든지 동일한 솔루션을 제공하고 지원할 수 있습니까?

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
  • Form1의 클래스 수준 변수로 Form2에 대한 참조를 유지하는 것이 좋습니다! 나는 대답을 편집 할 자유를 취했다. - TaW

1

당신은 정말로 하나의 질문 두 개를 요구하고 있습니다.

하나의 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;


  • 두 그림 상자는 다른 형태로되어 있습니다. 알레르기로 공개했습니다. - VGI
  • 이 경우에는 여러 양식을 하나의 양식으로 연결하기 때문에 다른 방법을 제안 할 수 있습니까? - VGI
  • 좋은! 제가 설명했듯이 필요한 것은 다른 폼에 대한 하나 이상의 참조입니다. 그런 다음 form1 : pictureBox.Image = form2.pictureBox.Image에 다음과 같이 작성할 수 있습니다. 당연히 당신의 이름은 당신이 그 (것)들을 지명한다 무엇 이건이다; 뭔가 의미가있는 것, 나는 단지 1,2,3 .. - TaW
  • 나는 이미 이것을 시도했다. 그러나 이것은 효과가 없다. - VGI
  • 너 무슨 짓을 한거야? 나는 몇 가지 제안을했다. 질문에 관련 코드를 추가하십시오! 어떻게 작동하지 않습니까? 컴파일러 오류? 실행 시간? 여기에 더 많은 정보를 입력해야합니다! - TaW

연결된 질문


최근 질문