Jak wziąć formularz, który jest obecnie zminimalizowany i przywrócić go do poprzedniego stanu. Nie mogę znaleźć żadnego sposobu, aby ustalić, czy jego poprzednia wersja była WindowState
została Normal
lub Maximized
; ale wiem, że informacje muszą być przechowywane gdzieś, ponieważ Windows nie ma problemu z robieniem tego z aplikacjami na pasku zadań.C# Programowo Unminimize form
Odpowiedz
Nie ma zarządzanego API dla tego. Aby to zrobić, należy PInvoke GetWindowPlacement i sprawdzić pod kątem WPF_RESTORETOMAXIMIZED
.
Aby uzyskać szczegółowe informacje, patrz: Microsoft How To (który demonstruje technikę w VB).
w C#, byłoby to:
[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;
Trzeba również:
this.WindowState = FormWindowState.Minimized;
this.WindowState = FormWindowState.Maximized;
Ach, źle na pytanie:
Restore WindowState from Minimized powinno być to, czego szukasz. Mówi można naśladować zachowanie paska zadań takiego:
SendMessage(form.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
To nie jest odpowiedź na jego pytanie - on pyta, czy iść na Normal lub Zmaksymalizowana jeśli formularz jest aktualnie zminimalizowana ... –
zaktualizowałem moją odpowiedź. Źle zrozumiałem pytanie. –
To jest znacznie czystsze rozwiązanie - bardzo proste w realizacji. –
Jeśli chcesz zapisać stan poprzedni, gdy istnieje zmiana (maksymalizacji/minimalizacji), będziesz musiał zahaczyć w przypadku SizeChanged
według this post on MSDN . Możesz pobrać tam WindowState
i zapisać go.
Jest lepsza opcja niż przechowywanie tego samodzielnie. Jest już śledzony przez interfejs API systemu Windows. –
można śledzić zmiany stanu okno w czasie zdarzenia Resize. Tak:
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. Objective-c form framework
- 2. Start stop Service from Form App C#
- 3. Visual C# Form prawy przycisk myszy
- 4. C# Windows Form Transparent Background Image
- 5. programowo w C#
- 6. C# - sposób programowo przesuwać pokaz slajdów Powerpoint?
- 7. Otwórz program DateTimePicker C# programowo
- 8. Dodanie metatagu programowo w C#
- 9. Programowo wywoływać webmethods w C#
- 10. Programowo wyeksportuj kontroler raportowania C#
- 11. Logowanie do witryny przy użyciu C# programowo
- 12. ASP.NET Form - Zmiany form name \ id do aspnetForm
- 13. Sortowanie kolumn danychGridView w języku C#? (Windows Form)
- 14. Przewijany Form w C#, AutoScroll = true nie działa
- 15. Osadzanie programu PowerPoint Viewer w C# Win Form
- 16. Jak używać komponentu WinRT w aplikacji C# console (windows form)?
- 17. jQuery Plugin Validation & Form
- 18. Form-Providers ngForm
- 19. Zawieszenie Przerysuj Windows Form
- 20. Django Form przycisk Prześlij
- 21. Prześlij problemu Form ... Enter
- 22. Korzystanie FOSRestBundle z form
- 23. Symfony2 Form Entity Update
- 24. Django Javascript validation Form
- 25. Aplikacja Windows Form freezely when run overnight
- 26. Ustawianie programu dllimport programowo w C#
- 27. Jak programowo wyświetlić WPF/C# Windows.Control.ToolTip?
- 28. C# Jak programowo tabulować między kontrolkami
- 29. Programowo zrobić "Git winy-w" w C#
- 30. Jak programowo przenieść Uibutton. Cel C xCode
@Dan: Dzięki - Naprawiłem błędy - (pisałam w locie, a kopiowanie z pinvoke.net, które miało problem z ref/out) ... –
@Dan: Brzmi jak to zadziałało dla ciebie, chociaż , przynajmniej ;) –