2011-09-29 10 views
1

양식 (AddNewCamper)에는 텍스트 상자와 제출 단추가 있습니다. 다른 양식으로 작성하려고합니다.버튼 클릭 호출 이벤트 메서드

if (submit button is clicked) 
    do stuff 

버튼이 실제로있는 창에서 클릭 이벤트가 생성되었습니다. 그래서 나는 click 이벤트가 호출되는 곳을 클릭 이벤트가 위치한 곳과 다른 창에있는 if 문 내부에서 호출하려고합니다.

AddNewCamper camp = new AddNewCamper(); 
camp.Show(); 

// This is where I'm confused. How do I say if this button is clicked, 
// or how do i call its click event that's located in AddNewCamper? 
if (camp.btnNewSubmit_Click_1()) 
{ 
    Camper person = new Camper(camp.txtNewFirstName.Text); 
    camp.txtNewFirstName.Text = person.getName(); 
    c.testListBox.Items.Add(person.getName()); 
    campersFrame.Content = c; 
} 
+0

버튼을 작성하여 두 번 클릭하면 코드보기가 표시되므로 코드를 작성할 수 있습니다. 버튼을 클릭 할 때 일어날 일에 대해 내 프로젝트의 다른 장소에서 "해당 단추를 클릭하면"코드를 시도하고 있어요 그래서 내 if (문) 위의 사용자가 해당 단추를 클릭하면 말할 시도합니다 .. 다음과 같은. Idk는 if (문)을 작성하는 방법을 설명합니다. 미안하지만, 물어볼 다른 방법을 모른다. – TMan

+0

'AddNewCamper.btnNewSubmit_Click_1()'을 직접 호출하기를 원한다는 말입니까? 그게 전부입니까? – Kev

+0

AddNewCamper.btnNewSubmit_Click_1() 이벤트 핸들러에 코드를 넣지 않는 이유는 무엇입니까? – Kev

답변

1

귀하의 질문을 이해하기 때문에 제출 단추가 AddNewCamper 양식을 클릭하면 부모 양식에 일부 내용을 표시하려고합니다. 아래는 당신이 할 수있는 한 가지 방법입니다.

ParentForm에 공용 메서드를 추가하여 AddNewCamper에서 클릭하여 Submit를 클릭하면 내용을 표시하거나 새로 고칩니다. ParentForm

public RefreshCamper(string firstName) 
{ 
    Camper person = new Camper(camp.txtNewFirstName.Text); 
    camp.txtNewFirstName.Text = person.getName(); 
    c.testListBox.Items.Add(person.getName()); 
    campersFrame.Content = c; 
    // ETC... 
} 

에서

은 생성자의 AddNewCamper 형성하는 ParentForm 인스턴스 합격.

private ParentForm _parentForm; 

public AddNewCamper(ParentForm parentForm) 
{ 
    _parentForm = parentForm; 
} 

private void btnNewSubmit_Click_1() 
{ 
    _parentForm.RefreshCamper(txtNewFirstName.Text); 
} 

아래와 같이 ParentForm에서 AddNewCamper 인스턴스를 만듭니다.

AddNewCamper camp = new AddNewCamper(this); 
camp.Show(); // Or ShowDialog if you want Model.. 

또는 제출 단추가 클릭 된 것과 동일한 방식으로 ParentForm에 플래그를 설정할 수 있습니다.

+0

이걸 보여 주셔서 고마워. 나는 내가 가까이에 있다고 믿지만, 제출을 명중하면 프로그램이 터진다. lol 디버깅을 시작하고 btnNewSubmit_Click1() 메소드에있는 것을 즉시 가리 킵니다. 이유가 확실하지 않습니다. – TMan

+0

NullReferenceException이 사용자 코드 – TMan

+0

에 의해 처리되지 않았습니다. 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. – TMan

0

이동 버튼의 이벤트 핸들러에 (비주얼 스튜디오의 폼보기에서, 옆에있는 상자에서 클릭 이벤트와 더블 클릭을 찾아 속성 그리드 : 여기

내가 가진 무엇 , 이것은 당신에게 데려다 줄 것입니다. [아직 생성되지 않았다면 생성합니다.] 여기에서 사용자가 버튼을 누를 때 원하는 메소드를 호출해야합니다.

제공 한 코드를 살펴보면 사용자가 버튼을 누를 때까지 if 문을 기다리는 것으로 가정합니다. 불행하게도이 코드가 별도의 스레드에 있지 않으면 사용자가 버튼을 누를 때까지 기다리지 않으면 프로그램이 중단됩니다. 대신 사용자가 버튼을 누를 때 원하는 것을 고치고이를 메소드에 넣고 버튼 이벤트 핸들러에서 해당 메소드를 호출해야합니다.

0

는 "캠프"형태의 쇼를 할 때,이 같은 부모 폼에 대한 참조를 전달합니다 누군가가 "캠프"양식의 제출 버튼을 클릭 할 때

camp.Show(this); 

그런 다음, 당신은 참조 할 수 있습니다 상위 폼은 owner 변수를 사용하여 다음과 같은 양식에서 원하는 작업을 수행합니다.

+0

예. 이전에 시도했던 것입니다. 그러나 owner 변수가 무엇인지 혼동 스럽습니까? – TMan

+0

ParentForm이 상속 된 기본 클래스 Form의 변수 (유형 객체)입니다. 객체 유형 변수이므로 순서대로 ParentForm 유형으로 캐스팅해야합니다. 그것을 사용하십시오. 당신이 camp.Show (this)로 다른 폼을 보여줄 때, "this"는 변수 소유자에 저장된 ParentForm에 대한 참조를 전달합니다. –

관련 문제