Windows Forms, .net 2.0다른 양식과 동일한 z- 순서로 새 양식 만들기
주 응용 프로그램 스레드의 양식 (A)은 다음과 같습니다. (BeginInvoke를 사용하여) 숨기려면 주 응용 프로그램 폼을 일으키는 및 자신의 스레드 (별도의 (B) 새 폼을 만듭니다. 메시지 펌프).
두 개의 스레드가 복잡하게 들릴 수도 있지만 불행하게도 필요합니다.
새 메시지 펌프의 새 양식은 최상위가 아닌 양식 맨 위에 표시됩니다 (예상 한대로!). 그러나 원래 응용 프로그램이 바탕 화면 위에 있지 않은 경우 이는 매우 성가시다.
원본 양식 (A)의 z- 순서가 숨기기 전에 무엇인지 결정하고 싶습니다. 원래 양식의 Z- 순서를 미러링하여 새 양식 (B)을 작성하십시오.
아이디어가 있으십니까?
[이것은 또한 현재 사용자의 바탕 화면 (예 : 암호가 설정되지 않은 화면)에있는 경우 화면 보호기를 통해 나타나는 B 형의 부작용을 가지고 있습니다. 이 문제를 피하고 싶습니다 ...]
두 번째 형식은 자체 스레드입니다. 나는 개발자가 왜 누군가가 그들에게 왜 그런지 설명 할 수 없을 때까지 자신의 폼을 "멀티 스레드"해야한다고 확신하는 무수한 시간을 보았다. 나는 그럴 수 없다는 말은 아니지만, 종종 사용자가 잘못된 접근법을 가지고있다. –
주 스레드는 여러 가지 양식, 하위 양식 등이 포함 된 복잡한 LOB 응용 프로그램입니다. 두 번째 스레드는 나중에 복원 할 수있는 현재 대화 상자를 포함하여 모든 양식을 숨김으로써 주 응용 프로그램을 "잠급니다"보안 절차입니다. 이러한 형태 중 일부는 제 3 자 라이브러리에 의해 만들어지며 당사가 통제 할 수 없습니다. 보안 요구 사항이 디자인 첫날부터 있었다면 두 번째 응용 프로그램 펌프가 필요하지 않을 수도 있지만 잠금이 타사 양식 등을 처리 할 수있는 "일반"이라는 것을 의미합니다. –
대화 상자 가져 오기를 시도 했습니까? .ShowDialog (Me) 또는 .ShowDialog (this)를 사용하여 전달하십시오. 부모에 대한 참조와 함께 ShowDialog를 사용하면 모든 입력에서 부모 폼이 잠기고 포커스가 허용되지 않습니다. –