2014-10-22 2 views
-2

글쎄, 여기에 두 개의 폼이 있고 보조 폼 (AddUserForm)의 데이터를 기본 (Form1)으로 전달하고 싶습니다. 내 문제는 그것이 작동하지 않는다는 것입니다. 이 작품
레이블의 값이 수정되었지만 양식에서 변경되지 않았습니다.

AddUserForm secondaryform = new AddUserForm(); 
secondaryform.label1.Text = "I was created in AddUserForm and will change my text here in Form1!"; 

: exemple 들어
, 나는 다음을 Form1에 넣어. 이 값을 사용하여 Form1의 AddUserForm 레이블의 텍스트를 변경할 수 있지만 그 반대는 불가능합니다.
지금 보조 형태로 같은 방법을 사용하여,이 참조 :

Form1 primaryform = new Form1(); 
primaryform.label1.Text = "I was created in Form1 and will change my text here in AddUserForm!"; 

이 작동하지 않습니다! 레이블 텍스트가 변경되지 않습니다!
MessageBox를 사용하여 레이블의 내용을 표시하고 표시된 텍스트를 보여주었습니다 (Form1에서 작성되었으며 AddUserForm에서 텍스트를 변경합니다!)
이렇게하면 레이블은 변경되지만 양식의 텍스트는 동일하게 유지됩니다.
보조 양식으로 참조를 추가하면 왜 작동하지 않습니까? 누구든지 도와 줄 수 있습니까? 정말이 문제를 해결해야합니다! 모두 미리 감사드립니다!

+0

이전 que 문제를 신뢰할 수있게 보여주는 간결하지만 완전한 코드 예제를 게시해야합니다. http://stackoverflow.com/help/mcve를 참조하십시오. –

+2

기존 양식을 참조하고 싶을 때 양식의 * 새 * 인스턴스를 작성하고있는 것 같습니다. 코드 예제는 컴파일되지 않습니다. – LarsTech

+0

@LarsTech 질문을 업데이트했습니다. 제가 실수를. – Hypister

답변

1

기존 Form1을 참조하는 대신 label1.Text을 설정하려고하면 코드가 Form1의 새 인스턴스를 생성하는 것으로 나타납니다. Form1에 대한 참조를 보유 할 수있는 AddUserForm에 변수가 필요합니다.

당신은 당신의 AddUserForm에 다음과 같은 것을 추가해야합니다 :

public Form1 MyForm1; 

그런

AddUserForm secondaryform = new AddUserForm(); 
secondaryform.MyForm1 = this; 
secondaryform.label1.Text = "Text"; 

다음 변경 (당신이 Form1AddUserForm 무엇을 만드는 것입니다 가정)에 대한 첫 번째 코드 블록을 변경 두 번째 코드 블록은 다음과 같습니다.

MyForm1.label1.Text = "Text"; 
+0

문제가 해결되었습니다. 나는 정말로 당신의 대답이이 문제에 직면 한 많은 사람들을 도울 것이라고 생각합니다! 고마워, 큰 포옹! :) – Hypister

관련 문제