2012-12-11 2 views
0

각각 여러 레이블과 콤보 박스가 포함 된 여러 패널을 생성하는 코드가 있습니다. 각 패널에 포함 된 컨트롤 중 하나는 확인란입니다. 사용자가 확인란을 선택하면 확인란이 있던 전체 패널이 삭제됩니다. 패널을 생성하는 foreach 루프에서 패널 자체에 "Strip"이라는 이름으로 연결할 수 있습니다. 이 루프 외부에서 필요한 모든 매개 변수 (또는 여기서는 용어에 대해 확실하지 않은 인수)를 전송하면 해당 이름이 메소드에 들어가야 할 때 호출 부호 중 하나가 호출 된 후 호출됩니다. "callsign.Text"매개 변수로 설정하십시오. 지금, 여기 내 Checbox 생성 코드 :확인란을 선택한 후 패널을 삭제했습니다.

CheckBox check = new CheckBox(); 
check.Location = new Point(270, 10); 
check.Name = "check:" + callsign.Text; 
check.CheckedChanged += new System.EventHandler(CheckCheckedChanged(callsign.Text)); 
Strip.Controls.Add(check); 

하고 여기에 방법의 정의는 CheckCheckedChanged :

public void CheckCheckedChanged(string callsign, object sender, EventArgs e) 
{ 
} 

는 ... 우선, 나는 라인 check.CheckedChanged += new System.EventHandler(CheckCheckedChanged(callsign.Text)); 그것은 말한다 에서 오류 ko를 얻을, "CheckCheckedChanged 메서드의 오버로드가 1 개의 인수를 취합니다". 나는 틀린 것을 알고있다. 그래서 thats는 나의 첫번째 질문이다. 두 번째는 - 내가 callsign.Text의 이름을 딴 하나의 특정 패널을 삭제하는 방법을 작성하는 방법을 알아낼 수 없다면 그냥 "callsign 처분"을 쓰면 난 wouldnt 일하는 것 같아요. 미리 감사드립니다.

+0

이벤트 처리기에서'string callsign'을 삭제하여 컴파일러 오류를 제거하십시오. 패널을 삭제하지 않고 숨길 수 있습니다. –

답변

0

가장 먼저해야 할 일은 이벤트 처리기에서 string callsign 매개 변수를 제거하는 것입니다. 이것이 컴파일러 오류의 원인입니다. 그래서 메소드 서명은 다음과 같이 표시됩니다

public void CheckCheckedChanged(object sender, EventArgs e) 

을 두 번째로,이 이벤트가 이벤트 처리기에 연결되는 방식을 변경해야합니다

check.CheckedChanged += new System.EventHandler(CheckCheckedChanged(callsign.Text)); 

이 될 것입니다 :

check.CheckedChanged += new System.EventHandler(CheckCheckedChanged); 

다음, 이벤트 처리기에 코드를 삽입하여 확인란의 상태를 가져 와서 그에 따라 패널의 가시성을 설정하려고합니다. 패널을 패널 이름으로 바꿉니다.

public void CheckCheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox checkbox = sender as CheckBox; 
    if (checkbox != null) 
    { 
     ((Panel)checkbox.Parent).Visible = !checkbox.Checked; // replace this with your panel 
    } 
} 
+0

답변 해 주셔서 감사합니다. 그러나이 메서드를 입력하려고하면 컴파일러에서 패널을 알지 못합니다. C#을 처음 접했을 때 나는 완전히 혼란 스럽다. 내 생각에 떠오르는 유일한 방법은 전체 패널을 그 방법에 대한 논증으로 사용하는 것이다. 우스꽝 스럽다. 그래서 나는 전혀 모른다. ( –

+0

What 숨기려는 패널의 이름입니까? 패널의 이름으로'yourPanel '을 변경해야합니다. 게시 할 수있는 코드가 더 있습니까? –

+0

패널의 이름은 다양한 호출 부호입니다. , 웹에서 xml 파일을 다운로드 한 다음 foreach를 사용하여 필요한 패널 크기를 만들고 정보로 채 웁니다. 그 중 하나는 Label callsign이며 전체 패널에 이름을 지정합니다.이 메서드는 foreach 루프 외부에 있으므로 CanT는 거기에 사용 된 변수에 액세스하고 XmlNodeLists는 사용하지 않습니다. 각 패널마다 다른 이름과 확인란이 있으므로 각 확인란마다 다른 패널 이름을 호출하여 숨길 수 있습니다. Visu 전체를 업로드 할 수 있습니다. 알 Studio 프로젝트는 어딘가에, rapidshare에서와 마찬가지로, 괜찮 으면. –

관련 문제