Application.OpenForms.Count는 항상 0을 반환합니다
Windows Forms 애플리케이션에서 Application.OpenForms 속성에 액세스하는 것은 일반적으로 컬렉션을 얻는 데 사용됩니다. 현재 열려 있는 양식 중 그러나 Application.OpenForms.Count 속성이 지속적으로 0을 반환할 수 있는 알려진 버그가 있습니다.
이 문제는 양식 생성 후 특정 속성이 수정될 때 발생합니다. 이러한 속성 포함:
때 CreateWindowEx()를 호출하여 폼의 창을 만든 후에 이러한 속성이 변경되면 Windows Forms는 원래 창을 삭제하고 업데이트된 스타일 플래그를 사용하여 새 창을 만들어야 합니다. 그러나 버그로 인해 Application 클래스가 OpenForms 컬렉션에 새 양식을 올바르게 추가하지 않습니다. 이로 인해 Application.OpenForms.Count 속성이 항상 0을 반환하게 됩니다.
해결 방법
이 버그를 방지하려면 위에서 언급한 속성 중 하나를 항상 양식의 생성자. CreateWindowEx()가 호출된 후 실행되는 이벤트 핸들러나 다른 코드에서 이를 변경하지 마십시오.
Application.OpenForms의 대안
일반적으로 의존하지 않는 것이 좋습니다. 이 버그로 인해 Application.OpenForms 속성에 문제가 발생했습니다. 대신 생성자를 통해 메시지 상자를 표시해야 하는 클래스에 양식 인스턴스를 전달하는 것이 좋습니다. MessageBox는 일반적으로 올바른 상위 창을 자동으로 결정하고 대부분의 경우 활성 창 위에 메시지 상자를 표시합니다.
위 내용은 내 Windows Forms 앱에서 Application.OpenForms.Count가 항상 0을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!