2009-10-12 35 views
82

Biểu mẫu Windows có thuộc tính win1.Handle, nếu tôi nhớ lại, trả về tay cầm của tay cầm cửa sổ chính?Tìm tay cầm vào cửa sổ WPF

Có cách nào tương đương để có được tay cầm của Cửa sổ WPF không?

tôi thấy đoạn mã sau trên mạng,

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle; 

nhưng tôi không nghĩ rằng sẽ giúp tôi vì ứng dụng của tôi có nhiều cửa sổ.

Cảm ơn !!

+20

Hãy để tôi cung cấp cho bạn một số lời khuyên thân thiện, Evan. Đừng làm chương trình đình đám hàng hóa! Dissect mã bạn tìm thấy trực tuyến. Bạn có thể thấy rõ ràng rằng nó vượt qua Application.Current.MainWindow, và từ đó bạn có thể giải thích rằng bằng cách chuyển nó tham chiếu đến một cửa sổ khác, bạn sẽ nhận được câu trả lời của mình. Tôi đã không bao giờ được sử dụng WindowInteropHelper, nhưng vẫn có thể trả lời câu hỏi chỉ đơn giản là lý luận nó ra. –

+1

bạn nói đúng, cảm ơn! Hôm nay tôi mệt rồi :) – Evan

+5

Không sao cả! Và tôi không có ý đó là sự chỉ trích, chỉ là hữu ích. Tất cả chúng tôi đã thực hiện một ít hàng hóa-culting bây giờ và sau đó. :) –

Trả lời

111

Vâng, thay vì đi qua Application.Current.MainWindow, chỉ cần chuyển một tham chiếu đến bất kỳ cửa sổ nào bạn muốn: new WindowInteropHelper(this).Handle v.v.

32

Chỉ cần sử dụng cửa sổ của bạn với lớp WindowsInteropHelper:

// ... Window myWindow = get your Window instance... 
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle; 

Ngay bây giờ, bạn đang yêu cầu cho cửa sổ chính của ứng dụng, trong đó sẽ luôn có một. Bạn có thể sử dụng kỹ thuật tương tự này trên bất kỳ cửa sổ nào, tuy nhiên, miễn là nó là một lớp Window có nguồn gốc từ System.Windows.Window.

3

Nếu bạn muốn xử lý cửa sổ cho TẤT CẢ các ứng dụng của bạn Window s vì một số lý do, bạn có thể sử dụng thuộc tính Application.Windows để lấy tất cả Windows và sau đó sử dụng WindowInteropHandler để xử lý như bạn đã chứng minh.

6

bạn có thể sử dụng:

Process.GetCurrentProcess().MainWindowHandle 
+5

Ông đã nói rằng ông không muốn mainwindow – EaterOfCode

Các vấn đề liên quan