2017-01-10 2 views
-2

패널이 있습니다. 사용자가 정보를 저장하거나 뒤로 버튼을 클릭 할 때 텍스트 입력란에 문자열을 입력하고 숫자 카운터 및 십진수에 문자열을 입력 할 경우 모든 값을 기본값으로 되돌리려면 그것을 자동으로 할 수있는 새로운 폼 케이스 였지만 패널에서 controls.clear를 보았지만 모든 패널 텍스트 상자를 제거하고 어쨌든 새로운 인스턴스를 만들 수있는 방법을 사용하지 않았습니까?모든 패널 값 지우기

답변

0

당신은 그들 모두의 이름을 할 필요없이, 모든 컨트롤을 취소 할 수 Controls Collection를 사용할 수 있습니다

foreach (Control c in Page.Controls) 
{ 
    TextBox  t = (c as TextBox); 
    NumericUpDown n = (c as NumericUpDown); 

    if (t != null) 
     t.Text = ""; 

    if (n != null) 
     n.Value = 0; 
} 

당신은 자식 컨트롤을 처리하는-루프 또는 재귀 배수를 사용해야합니다.

+0

이 작업을 수행하고 있지만 페이지에서 오류가 발생했습니다. 페이지에서 무엇을 의미합니까? 나는 그것을 내 양식 이름으로 변경하려했지만 작동하지 않았다. –

+0

this. 컨트롤이 작동하지만 체크 박스가 아니라고 선언했다. 체크 박스 cb = (체크 박스로 c); if (cb.Checked) cb.Checked = false; 하지만 나에게 널 예외를주는 나는 4 개의 체크 박스가 있고 어떤 것은 체크 될지도 모르겠다. 만약 체크되거나 그렇지 않으면 왜 나에게 널 줄 것인가? –

+0

체크 박스가 아닌 컨트롤의 경우 null입니다. if (cb! = null && cb.Checked) cb.Checked = false; – buffjape

0

Panels.Clear(); Panel 컨테이너 내의 모든 자식 컨트롤을 제거합니다. 일반적으로 수행 할 작업은 기본값으로 되돌리려는 컨트롤의 기본값을 수동으로 설정하거나 컨트롤을 반복하고 재설정 할 수 있습니다.

개인적으로 나는 여러 유형의 컨트롤을 재설정해야하는 상황에서 수동 접근 방식을 선호합니다. 그렇지 않으면 몇 가지 문제가 발생할 수 있습니다. 그러니 예를 들어

는 :

Textbox.Text = ""; 
Textbox.Text = string.Empty; 
Textbox.Text.Clear(); 
0

당신은 패널에서 모든 컨트롤을 제거하는 메소드를 호출하고 있습니다.

대신 컨트롤의 각 값을 적절한 기본값으로 설정하는 메서드를 Form에 작성해야합니다. 텍스트 문자열 값을 빈 문자열로, 수치 상향 조정 값을 0.0으로 설정합니다. 그 메소드의 이름은 ClearPanelValues() 또는 무언가입니다. 그런 다음 패널에서 값을 지우려면 ClearPanelControls()으로 전화하십시오.

public void ClearPanelValues() 
{ 
    textBox1.Text = ""; 
    textBox2.Text = ""; 
    numericUpDown1.Value = 0; 
    // etc. etc. 
}