나는 win form 어플리케이션의 통합 테스트를 이끌 기위한 작은 클래스를 작성 중이다. 테스트 드라이버 클래스는 기본 Form에 대한 액세스 권한을 가지며 이름에 의해 사용되어야하는 컨트롤을 찾고이를 사용하여 테스트를 수행합니다. 컨트롤을 찾으려면 Control.Controls 트리를 탐색합니다. 그러나 대화 상자 창 (대화 상자로 표시되는 사용자 지정 양식)에서 컨트롤을 가져 오려고 할 때 멈추게됩니다. 나는 그것을 어떻게 잡을 수 있습니까?현재 활성 모달 폼에 대한 참조를 얻으려면 어떻게해야합니까?
답변
정적 인 Form.ActiveForm
속성을 사용하여 현재 활성화 된 양식에 대한 참조를 얻을 수 있습니다.
편집 : Form
에 포커스가없는 경우 Form.ActiveForm
은 null
을 반환합니다. 이 문제를 해결 얻을
한 가지 방법은이 ShowDialog
사용하여 표시 할 때, 마녀 활성 Form
될 Application.OpenForms
수집을 사용하고 마지막 항목을 검색하는 것입니다 : 내가 틀렸다면
// using Linq:
lastOpenedForm = Application.OpenForms.Cast<Form>().Last()
// or (without Linq):
lastOpenedForm = Application.OpenForms[Application.OpenForms.Count - 1]
미리 빌드 된 대화 상자의 컨트롤에 액세스 할 수 있는지 확실하지 않습니다. 그들은 모두 함께 포장 된 것처럼 보입니다. 행운을 빌어 자신이 원하는 것을하는 대화 상자를 만들 수 있습니다. 그런 다음 내부의 .Controls에 액세스 할 수 있습니다.
예, 대화 상자로 표시되는 사용자 지정 양식을 사용하고 있습니다. – Grzenio
저를 수정, 그래도 가능하지 않은 경우 대화 상자 양식의 컨트롤에 액세스하려고 시도하는 것처럼 들립니다.
내 말은 ShowDialog
은 양식이 만들어진 스레드를 "보류"하고 ShowDialog
이 처리를 완료 할 때까지 응용 프로그램 (또는 테스트 클래스)에 제어를 반환하지 않습니다.이 경우 사용자 코드 그것의 경로에 계속할 것입니다.
별도의 스레드 (이 경우 표시 및 테스트해야하는 각 새 양식에 대해 별도의 스레드를 생성하도록 테스트 드라이버 클래스를 리팩터링)에서 컨트롤에 액세스하거나 조작하십시오.
예, 새 스레드를 만들었으므로 차단되지 않았습니다. @Julien Poulin이 제공 한 답변을 찾고있었습니다 – Grzenio
또한 부모 폼을 처리하는 경우 dispose 메서드는 활성 모달 폼에서도 실행됩니다. 가능한 경우 모달 형식에 액세스 할 수 있습니다. – mike100111
- 1. Eclipse 플러그인에서 현재 프로젝트에 대한 참조를 얻으려면 어떻게해야합니까?
- 2. 현재 표시된 Java Swing JDialog 상자에 대한 참조를 얻으려면 어떻게해야합니까?
- 3. 다른 클래스에 대한 참조를 제대로 얻으려면 어떻게해야합니까?
- 4. CAL에서 모듈 인스턴스에 대한 참조를 얻으려면 어떻게해야합니까?
- 5. ActionFilter에서 ModelState 속성에 대한 참조를 얻으려면 어떻게해야합니까?
- 6. 데이터리스트의 OnItemBound에서 컨트롤에 대한 참조를 얻으려면 어떻게해야합니까?
- 7. 함수 내에서 함수에 대한 참조를 얻으려면 어떻게해야합니까?
- 8. Java에서 현재 활성 모달 대화 상자를 가져옵니다.
- 9. 하위 뷰에 대한 rootViewController에 대한 참조를 얻으려면 어떻게해야합니까?
- 10. Java의 익명의 내부 클래스에서 동봉하는 클래스에 대한 참조를 얻으려면 어떻게해야합니까?
- 11. VS 2008에서 F # 언어 참조를 얻으려면 어떻게해야합니까?
- 12. 현재 네트워크 위치 이름을 얻으려면 어떻게해야합니까?
- 13. 현재 GPS 위치를 얻으려면 어떻게해야합니까?
- 14. 바운드 DataGridViewComboBoxCell에서 기본 객체에 대한 참조를 얻으려면 어떻게해야합니까?
- 15. C99 코드에 대한 문자와 정확한 식별자 상호 참조를 얻으려면 어떻게해야합니까?
- 16. Python : 모듈 자체의 모듈에 대한 참조를 얻으려면 어떻게해야합니까?
- 17. Apple Script : iTunes에서 다음 트랙에 대한 참조를 얻으려면 어떻게해야합니까?
- 18. WatiN : 텍스트를 찾을 때 포함하는 요소에 대한 참조를 얻으려면 어떻게해야합니까?
- 19. 변수를 플래시로 선언 한 연금술 asm에 대한 참조를 얻으려면 어떻게해야합니까?
- 20. 응용 프로그램의 활성 ChildWindow를 얻으려면 어떻게해야합니까?
- 21. 현재 컨텍스트에서 WCF 서비스 인스턴스에 대한 액세스 권한을 얻으려면 어떻게해야합니까?
- 22. JSP 용 Struts의 활성 폼에 대한 일반적인 참조가 있습니까?
- 23. 응용 프로그램의 활성 ChildWindow를 얻으려면 어떻게해야합니까?
- 24. ScriptManager, Page, 정적 메서드 ... 페이지가없는 현재 ScriptManager를 얻으려면 어떻게해야합니까?
- 25. Adobe AIR : 현재 끝점 URI를 얻으려면 어떻게해야합니까?
- 26. IronRuby에서 현재 작업 디렉토리를 얻으려면 어떻게해야합니까?
- 27. 현재 프로세스에 대한 작업 개체 (있는 경우)를 얻으려면 어떻게해야합니까?
- 28. UIScrollView에서 현재 줌 레벨을 얻으려면 어떻게해야합니까?
- 29. 비동기 작업에서 현재 창에 대한 참조를 얻는 방법은 무엇입니까? 안드로이드
- 30. 'hello world'jquery-ui 모달 폼에 대한 도움이 필요하십니까?
내가하는 일이 무엇이든 null을 반환하는 것 같습니다. 어떤 아이디어? – Grzenio
폼에 포커스가 없을 때 업데이트 됨 –
Application.OpenForms works, cheers – Grzenio