Làm cách nào để có thể đưa cửa sổ ứng dụng bảng điều khiển lên phía trước trong C# (đặc biệt khi chạy trình gỡ rối Visual Studio)?đưa cửa sổ bảng điều khiển lên phía trước trong C#
Trả lời
Đó là hacky, thật khủng khiếp, nhưng nó làm việc cho tôi (nhờ, pinvoke.net!):
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
public class Test
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);
public static void Main()
{
string originalTitle = Console.Title;
string uniqueTitle = Guid.NewGuid().ToString();
Console.Title = uniqueTitle;
Thread.Sleep(50);
IntPtr handle = FindWindowByCaption(IntPtr.Zero, uniqueTitle);
if (handle == IntPtr.Zero)
{
Console.WriteLine("Oops, cant find main window.");
return;
}
Console.Title = originalTitle;
while (true)
{
Thread.Sleep(3000);
Console.WriteLine(SetForegroundWindow(handle));
}
}
}
Xin đừng bao giờ thêm mã này vào mã của bạn để nó xuất hiện trên đầu trang khi gỡ lỗi. – tvanfosson
@tv - Có thể bạn có thể đưa ra lời giải thích cho tuyên bố tuyệt đối của bạn. Cá nhân tôi nghĩ rằng đây là việc sử dụng các chức năng quản lý cửa sổ hợp pháp và được khuyến nghị. Nó không phải là cách tiếp cận DRY tốt nhất nhưng với một chút refactoring nó là một thực tế phổ biến trong việc phát triển ứng dụng win32. Nó không phải là hackey, đó là cách bạn di chuyển các cửa sổ xung quanh màn hình nền. –
chỉ để thêm, nếu bạn đang tìm cách để chạy mã này chỉ khi trong trình gỡ lỗi studio trực quan bạn có thể sử dụng như sau: if (Debugger.IsAttached == true) {...} –
Nhận hai màn hình (ít nhất) và VisualStudio mở trong màn hình phụ. Khi bạn chạy ứng dụng của bạn từ bên trong VisualStudio, nó sẽ khởi động theo mặc định trên màn hình chính. Vì đó là ứng dụng cuối cùng được mở, nó bắt đầu trên đầu và thay đổi sang VisualStudio không ảnh hưởng đến nó. Làm việc cho tôi anyway.
Nếu bạn chưa có màn hình thứ hai, IMHO, bạn nên làm như vậy.
Đây là những gì tôi sẽ làm.
[DllImport("kernel32.dll", ExactSpelling = true)]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetForegroundWindow(IntPtr hWnd);
public void BringConsoleToFront()
{
SetForegroundWindow(GetConsoleWindow());
}
Khá một câu trả lời muộn, nhưng tôi đã sử dụng các công việc sau đây xung quanh:
Nếu bạn đang chạy một ứng dụng giao diện điều khiển với Windows Forms, và bạn muốn mang lại cho giao diện điều khiển phía trước của mẫu đơn, có không có cách nào lành mạnh để làm điều này, như chúng ta đã thấy ở trên. Tuy nhiên, có một cách để làm điều này với Windows Forms - bạn có thể sử dụng BringToFront()
và SendToBack()
để thay đổi các lớp cửa sổ trong chương trình của bạn. Chương trình của tôi đã có một biểu mẫu và một giao diện điều khiển - giao diện điều khiển cần thiết ở phía trước, vì vậy tôi đã gửi biểu mẫu tới mặt sau.
Hạn chế: nếu người dùng của bạn đa nhiệm và bạn muốn bảng điều khiển ở phía trước mọi thứ, thao tác này sẽ không hoạt động. Tuy nhiên, nếu bạn chỉ muốn ảnh hưởng đến các cửa sổ trong chương trình của bạn, đây là một giải pháp thích hợp.
- 1. Làm thế nào để đưa một cửa sổ WPF lên phía trước?
- 2. đưa popup lên trước
- 3. GCC/C cách ẩn cửa sổ bảng điều khiển?
- 4. WPF - Đưa cửa sổ ra trước
- 5. tiêu đề cửa sổ bảng điều khiển c
- 6. Ẩn cửa sổ bảng điều khiển từ Process.Start C#
- 7. Gỡ lỗi C++/SDL với cửa sổ bảng điều khiển
- 8. Đưa cửa sổ lên mặt trước trong C# bằng cách sử dụng Win32 API
- 9. Trong Google Chrome, làm cách nào để đưa cửa sổ bật lên hiện có lên phía trước bằng javascript từ cửa sổ chính?
- 10. Điều khiển trục z/đưa lên trước khi chạy (Delphi)
- 11. Hiển thị/Ẩn cửa sổ bảng điều khiển của ứng dụng giao diện điều khiển C#
- 12. Mang điều khiển Winforms về phía trước
- 13. Nhúng cửa sổ Bảng điều khiển bên trong Cửa sổ WPF
- 14. Tắt hiển thị cửa sổ bảng điều khiển
- 15. Làm thế nào để mang một cửa sổ lên phía trước?
- 16. cập nhật cửa sổ bảng điều khiển với java
- 17. iPad có thể điều hướng điều khiển được đặt bên trong cửa sổ bật lên?
- 18. Cách hiển thị các mục danh sách trên cửa sổ bảng điều khiển trong C#
- 19. Làm thế nào để Mang Widget Đưa lên phía trước trong Qt?
- 20. Làm thế nào để làm cho một cửa sổ Tkinter nhảy lên phía trước?
- 21. Làm thế nào để cửa sổ PyQT4 nhảy lên phía trước?
- 22. Chiều rộng cửa sổ bật lên Bootstrap cho cửa sổ bật lên-bên trong
- 23. Quá trình khởi chạy trong C# Không có cửa sổ điều khiển mất tập trung
- 24. Điều khiển không cửa sổ là gì?
- 25. Làm cách nào để ngăn cửa sổ bảng điều khiển đóng khi chạy ứng dụng bảng điều khiển?
- 26. Đầu ra In Đẹp theo định dạng cây ngang trong cửa sổ bảng điều khiển
- 27. Cửa sổ bảng điều khiển vẫn xuất hiện ngay cả sau khi ProcessWindowStyle.Hidden;
- 28. Cuộn bảng điều khiển trung tâm trong điều khiển C#
- 29. Cửa sổ Matplotlib xuất hiện ở phía sau?
- 30. Javaw vẫn tạo cửa sổ bảng điều khiển; Tại sao điều này?
Trong bối cảnh nào và tại sao bạn muốn thực hiện việc này? Trong khi có trường hợp hợp pháp, thường là loại điều này là rắc rối hơn nó có giá trị. – ICR