Tôi đang viết một lớp nhỏ để lái thử nghiệm tích hợp của một ứng dụng biểu mẫu giành chiến thắng. Lớp trình điều khiển thử nghiệm có quyền truy cập vào Biểu mẫu chính và tìm kiếm điều khiển cần được sử dụng theo tên và sử dụng nó để lái thử nghiệm. Để tìm điều khiển, tôi đang đi qua cây Control.Controls. Tuy nhiên, tôi gặp khó khăn khi tôi muốn điều khiển trong cửa sổ hộp thoại (một biểu mẫu tùy chỉnh được hiển thị dưới dạng hộp thoại). Làm thế nào tôi có thể giữ nó?Tôi làm cách nào để có được tham chiếu đến biểu mẫu phương thức hoạt động hiện tại?
Trả lời
Bạn có thể lấy tham chiếu đến biểu mẫu hiện đang hoạt động bằng cách sử dụng thuộc tính tĩnh Form.ActiveForm
.
Chỉnh sửa: Nếu không Form
có tiêu điểm, Form.ActiveForm
sẽ trả lại null
.
Một cách để làm được việc này là sử dụng bộ sưu tập Application.OpenForms
và lấy mục cuối cùng, phù thủy sẽ là hoạt động Form
khi nó được hiển thị bằng ShowDialog
:
// using Linq:
lastOpenedForm = Application.OpenForms.Cast<Form>().Last()
// or (without Linq):
lastOpenedForm = Application.OpenForms[Application.OpenForms.Count - 1]
Tôi không chắc liệu bạn có thể truy cập các điều khiển trên hộp thoại được tạo trước hay không; họ dường như tất cả đóng gói với nhau. Bạn có thể có thêm may mắn xây dựng một hộp thoại của riêng bạn mà làm những gì bạn muốn nó làm. Sau đó, bạn có thể truy cập vào .Controls bên trong của nó.
Có, tôi đang sử dụng biểu mẫu tùy chỉnh được hiển thị dưới dạng hộp thoại – Grzenio
Đúng tôi nếu tôi là sai, mặc dù, có vẻ như bạn đang cố gắng truy cập vào các điều khiển trên biểu mẫu hộp thoại khi nó không hoàn toàn có thể.
Ý của tôi là, ShowDialog
sẽ "giữ" chuỗi mà biểu mẫu được tạo và sẽ không trả lại quyền kiểm soát cho ứng dụng (hoặc lớp thử nghiệm của bạn) cho đến khi ShowDialog
xử lý xong, trong trường hợp đó mã người dùng của bạn sẽ tiếp tục trên con đường của nó.
Hãy thử truy cập hoặc thao tác các điều khiển từ một chuỗi riêng biệt (trong trường hợp này, cấu trúc lại lớp trình điều khiển thử nghiệm để sinh ra một chuỗi riêng biệt cho mỗi biểu mẫu mới phải được hiển thị và thử nghiệm).
Có, tôi đã tạo một chuỗi mới, vì vậy nó không bị chặn. Tôi cũng đang tìm câu trả lời được cung cấp bởi @Julien Poulin – Grzenio
Ngoài ra nếu bạn vứt bỏ mẫu cha mẹ, phương thức vứt bỏ sẽ chạy ngay cả với một dạng thức hoạt động. Có thể bạn có thể muốn truy cập vào mẫu phương thức sau đó. – mike100111
- 1. Làm cách nào để tham chiếu biểu mẫu hiện tại trong biểu thức trong Microsoft Access?
- 2. Làm cách nào tôi có thể tham chiếu đến một phương thức?
- 3. Tham chiếu đến System.data.entity.design.dll không hoạt động
- 4. Cách kích hoạt một phương thức chung để thực hiện hành động làm tham số
- 5. Làm cách nào để công thức của tôi luôn tham chiếu đến trang tính cuối cùng?
- 6. Tôi làm cách nào để chuyển tham chiếu đến call_user_func?
- 7. Tham chiếu có hoạt động với các mẫu hành vi/nhận thức của con người tồn tại không?
- 8. Biểu mẫu web ASP.NET jQuery AJAX Chuyển nhiều tham số đến Phương thức web
- 9. Ngăn chặn biểu mẫu ràng buộc để rvalue tham chiếu
- 10. Tìm Tham chiếu đến Lớp & Phương pháp
- 11. django __unicode __() - làm cách nào tôi có thể gọi phương thức này trong một mẫu
- 12. Làm thế nào để bạn có thể lập trình xác định số tham chiếu đến một phương thức với C#
- 13. Làm cách nào để chuyển tham chiếu dưới dạng tham số phương thức trên AppDomain?
- 14. Ngoại lệ tham chiếu Null trong biểu thức LINQ động
- 15. Làm thế nào để có được một tham chiếu tĩnh đến một cửa sổ WPF?
- 16. Làm thế nào để có được một tham chiếu đến thuộc tính hiện tại mô-đun trong Python
- 17. Lỗi tham chiếu không xác định cho phương thức mẫu
- 18. Lỗi: "Không thể tạo tham chiếu tĩnh đến phương thức không tĩnh findViewById (int) từ loại Hoạt động"
- 19. "Không thể tạo biểu mẫu. Không có biểu mẫu MDI hiện đang hoạt động" lỗi
- 20. Tham chiếu đến đại biểu UIApplication
- 21. Tại sao một đại biểu không thể tham chiếu đến một phương thức không tĩnh khi được sử dụng trong một phương thức tĩnh?
- 22. Tôi làm cách nào để có được ngày hiện tại?
- 23. Các biểu thức lambda hoạt động như thế nào?
- 24. không thể thực hiện mối quan hệ được tham chiếu để hoạt động
- 25. Tôi làm cách nào để có được Python hoạt động trong một NetBeans hiện có?
- 26. Tôi làm cách nào để xóa tham chiếu vấn đề
- 27. Cách sử dụng ISynchronizeInvoke mà không cần tham chiếu đến Biểu mẫu
- 28. Cú pháp để tham chiếu một phương thức trả về một biểu thức cho phương thức khác?
- 29. Làm cách nào để tôi tham chiếu cá thể GroovyObject từ các phương thức MetaClass trong Groovy?
- 30. Làm cách nào để thực hiện tìm kiếm Java IDE làm cho tham chiếu phương thức theo lập trình?
Có vẻ như trả về null cho dù tôi có làm gì. Bất kỳ ý tưởng? – Grzenio
Cập nhật câu trả lời khi không có Biểu mẫu nào tập trung –
Application.OpenForms hoạt động, cổ vũ – Grzenio