Làm cách nào để lấy một biểu mẫu hiện đang thu nhỏ và khôi phục lại trạng thái trước đó của nó. Tôi không thể tìm thấy bất kỳ cách nào để xác định xem WindowState
trước đó của mình là Normal
hoặc Maximized
; nhưng tôi biết thông tin phải được lưu trữ ở đâu đó bởi vì các cửa sổ không có vấn đề gì với các ứng dụng trên thanh tác vụ.C# Rút gọn theo lập trình mẫu
Trả lời
Không có API được quản lý cho điều này. Cách để làm điều đó là để PInvoke GetWindowPlacement và kiểm tra WPF_RESTORETOMAXIMIZED
.
Để biết chi tiết, hãy xem Microsoft How To (đây là minh họa kỹ thuật trong VB).
Trong C#, đây sẽ là:
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
private struct WINDOWPLACEMENT
{
public int length;
public int flags;
public int showCmd;
public System.Drawing.Point ptMinPosition;
public System.Drawing.Point ptMaxPosition;
public System.Drawing.Rectangle rcNormalPosition;
}
public void RestoreFromMinimzied(Form form)
{
const int WPF_RESTORETOMAXIMIZED = 0x2;
WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
placement.length = Marshal.SizeOf(placement);
GetWindowPlacement(form.Handle, ref placement);
if ((placement.flags & WPF_RESTORETOMAXIMIZED) == WPF_RESTORETOMAXIMIZED)
form.WindowState = FormWindowState.Maximized;
else
form.WindowState = FormWindowState.Normal;
}
this.WindowState = FormWindowState.Normal;
Bạn cũng có:
this.WindowState = FormWindowState.Minimized;
this.WindowState = FormWindowState.Maximized;
Ah, tôi hiểu lầm câu hỏi:
Restore WindowState from Minimized nên được những gì bạn đang tìm kiếm. Nó nói rằng bạn có thể bắt chước các hành vi thanh tác vụ như thế này:
SendMessage(form.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
Điều đó không trả lời câu hỏi của anh ấy - anh ấy hỏi có nên chuyển sang Bình thường hoặc Tối đa nếu biểu mẫu hiện đang được thu nhỏ ... –
Tôi đã cập nhật câu trả lời của mình. Tôi hiểu lầm câu hỏi. –
Đây là một giải pháp sạch hơn - rất đơn giản để thực hiện. –
Nếu bạn muốn lưu trữ các trạng thái trước đó bất cứ khi nào có một sự thay đổi (tối đa/tối thiểu), bạn sẽ phải móc vào các sự kiện SizeChanged
, theo this post on MSDN . Bạn có thể lấy số WindowState
tại đó và lưu trữ.
Có một lựa chọn tốt hơn so với lưu trữ này cho mình. Nó đã được theo dõi bởi Windows API. –
Bạn có thể theo dõi những thay đổi trạng thái cửa sổ thông qua các sự kiện Resize. Như thế này:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
prevState = currState = this.WindowState;
}
protected override void OnResize(EventArgs e) {
if (currState != this.WindowState) {
prevState = currState;
currState = this.WindowState;
}
base.OnResize(e);
}
private FormWindowState prevState, currState;
}
- 1. Trình rút gọn URL hoạt động như thế nào?
- 2. qUnit Phương pháp rút gọn
- 3. Trình rút gọn URL khi đang chạy trên trang web
- 4. Sử dụng trả lại và rút gọn nếu trong C#
- 5. không mong muốn Decimal Rút gọn
- 6. T-SQL VARCHAR (MAX) rút gọn
- 7. Tập lệnh Python để rút gọn CSS?
- 8. Cách rút gọn các trang aspx
- 9. Đánh giá mẫu Ember theo lập trình
- 10. Thêm mẫu mã Java theo lập trình
- 11. Thử nghiệm javascript được rút gọn
- 12. MVC4 Google phông chữ và rút gọn
- 13. Tự động rút gọn phía máy chủ?
- 14. alias namespace rút gọn trong aspx
- 15. C# tạo báo cáo theo lập trình
- 16. Có lý do nào khiến MicrosoftAjax.js không được rút gọn?
- 17. Làm cách nào để rút gọn tệp cấu hình .emacs?
- 18. Sử dụng lập trình "lập trình C" (Tìm hiểu theo cách thức C)
- 19. Kết hợp và rút gọn RequireJS với Grunt
- 20. Cách đặt lại biểu mẫu theo cách lập trình?
- 21. Cách tạo biểu mẫu Dojo dijoit theo cách lập trình
- 22. Tìm lập trình nếu theo C++ hoặc C++/CLI
- 23. Android: Điền Spinner từ mã Java theo lập trình
- 24. grunt.js - Nhiều khu khi rút gọn các file
- 25. Có thể tham số truyền URL rút gọn không?
- 26. Tính toán trung bình được rút gọn trong MySQL
- 27. MVC - Việc rút gọn HTML có xứng đáng không?
- 28. Kết hợp và rút gọn nhiều tệp CSS/JS
- 29. Mã khuôn khổ thực thể Đầu tiên, trình rút gọn hoặc getter không?
- 30. Làm thế nào để tăng tốc quá trình rút gọn của UglifyJS 2?
@Dan: Cảm ơn - Tôi đã sửa các lỗi - (Tôi đang gõ khi đang di chuyển, và sao chép từ pinvoke.net, có vấn đề về ref/out sai ...) –
@Dan: Âm thanh như thế này hiệu quả với bạn, mặc dù , ít nhất ;) –