2016-06-02 2 views
1

단추 (formA)를 클릭하면 List (MainForm)에 다른 멤버를 추가하고 싶습니다.버튼 클릭 이벤트에 <myclass>리스트를 전달할 수 있습니까?

두 개의 문자열 멤버를 저장하는 "Trips"클래스가 있습니다.

은 내가 MainForm의 목록을 만들어 :

List<Trips> alltrip = new List<Trips>() { new Trips("Trip 1", "March"), 
              new Trips("Trip 2", "May")}; 

나는 견적에 대한 목록을 통과하고 난 버튼 클릭 이벤트에 alltrip를 사용할 수있는 생각했다. 그러나 그것은 alltrip을 찾을 수 없다는 오류를 반환 했으므로 다음과 같이 버튼에 전달하려고했습니다.

Trips newTrip = new Trips(); 
    private void AddTripConfirm_Click(object sender, EventArgs e, List<Trips> alltrip) 
    {                               //I add the List here 
     newTrip.Name = AddTripNametxt.Text; 
     newTrip.Time = AddTripTimetxt.Text; 
     alltrip.Add(newTrip); 
    } 

지금까지 나를 위해 좋은 모습,하지만 또 다른 오류가 Designer.cs에서이 라인에서 발생

this.AddTripConfirm.Click += new System.EventHandler(this.AddTripConfirm_Click); 

그것은 말한다 "그 'AddTripConfirm_click'일치 대표 '시스템에 과부하 없습니다 .EventHandler. ""C#을 처음 접했을 때 나는 어떤 해결책도 생각할 수 없어 비슷한 질문에서 만족스러운 답을 찾지 못했습니다.

도와주세요. 고마워요.

+0

어떻게 allTrips를 FormA에 전달 했습니까? 나중에 액세스 할 수 있도록 양식에 대한 참조를 저장해야합니다. –

답변

1

당신은 FormA으로이 목록을 통과했다고하셨습니다. 당신이 생성자를 통해 이것을했다고 가정합니다.

그래서 단순히 FormA의 멤버 변수에이 목록을 저장 :

이제
public partial class FormA : Form 
{ 
    private List<Trips> _allTrips; // a member variable 

    public FormA(List<Trips> allTrips) 
    { 
     // store allTrips in _allTrips 
     _allTrips = allTrips; 
     InitializeComponents(); 
    } 

당신이 당신의 이벤트 처리기에서 멤버 변수를 통해 목록에 액세스 할 수 있습니다 :

private void AddTripConfirm_Click(object sender, EventArgs e) 
{                          
    Trips newTrip = new Trips(); 
    newTrip.Name = AddTripNametxt.Text; 
    newTrip.Time = AddTripTimetxt.Text; 
    _allTrips.Add(newTrip); // use the member _allTrips 
} 

이후 목록에 대한 참조를 저장하면 추가 된 여행은 기본 양식에서도 가능합니다.

+0

분명한 답변을 보내 주셔서 감사합니다. 그것은 작동합니다! – Lei

0

당신이 그것을 즉 액세스하기 위해 클래스 변수를 추가해야합니다 생성자에 FromAalltrip을 통과 가정 : 당신이 변수를 사용할 필요가있을 때

private List<Trips> _alltrip; 

public FormA(List<Trips> alltrip) 
{ 
    _alltrip = alltrip; 
} 

가 그럼 그냥 _alltrip를 사용합니다.

관련 문제