문제

버튼 클릭으로 읽기 전용으로 양식에 많은 컨트롤을 설정하고 다시 클릭 할 수 있기를 원합니다. 그들을 통과하는 방법이 있습니까? this.Controls 아마도......

감사!

도움이 되었습니까?

해결책

모든 컨트롤을 읽도록 설정하려면 다음과 같은 작업을 수행 할 수 있습니다.

foreach(Control currentControl in this.Controls)
{
    currentControl.Enabled = false;
}

당신이 정말로하고 싶은 것이 컨트롤 중 일부를 읽도록 설정한다면, 관련 컨트롤 목록을 유지 한 다음 모든 것이 아니라 해당 목록에서 foreach를 수행하는 것이 좋습니다.

다른 팁

활성화 / 비활성화를 쉽게 설정하는 것은 쉽습니다. Gwliosa'a 답변을 참조하십시오.

그러나 모든 컨트롤에 읽기 전용 속성이있는 것은 아닙니다. 다음과 같은 것을 사용할 수 있습니다.

foreach (Control c in this.Controls)
{
  if (c is TextBox)
    (c as TextBox).Readonly = newValue;
  else if (c is ListBox)
    (c as ListBox).Readonly = newValue;
  // etc
}

개인적으로 나는 모든 컨트롤 (및 하위 제어)을 Panel - 싱글의 상태를 변경하십시오 Panel. 즉, 이전 값을 저장할 필요가 없다는 것을 의미합니다 (예 : 다시 활성화 된 것으로 가정하고 싶지 않을 수도 있습니다).

gwllosa에서 제안한 활성화 된 속성을 사용하는 것이 좋습니다.

        foreach (Control ctrl in this.Controls)
        {
            Type t = ctrl.GetType();

            PropertyInfo propInfo = t.GetProperty("ReadOnly");

            if (propInfo != null)
                propInfo.SetValue(ctrl, true, null);
        }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top