Chcę uniemożliwić maksymalizację mojej aplikacji komputerowej. To nie powinna być maksymalizacja wszelkimi środkami - przez dwukrotne kliknięcie na pasku tytułowym lub klikając systemu Windows + strzałka w górę na klawiaturze, itp
-> wyłączyć zarówno MaximizeBox i MinimizeBox.
-> ja też ustawić MaximumSize i MinimumSize dla mojego WinForm
Nadal po naciśnięciu Windows + Up strzałkę, moja forma wygrana przesuwa się w lewym górnym rogu ekranu, to znaczy robi zmaksymalizowane . Proszę, powiedz mi, jakikolwiek sposób, aby temu zapobiec ...Zapobieganie maksymalizacji Winforma?
Odpowiedz
W rzeczywistości są tu dwa zupełnie odrębne zagadnienia. To prawda, że wyglądają zasadniczo tak samo z perspektywy funkcjonalnej, ale z perspektywy modelu implementacji (tak jak naturalnie użyłby system Windows), nie są ze sobą powiązane.
Tak, jak odpowiedzieli inni, można zapobiec maksymalizacji formy, ustawiając jej właściwość MaximizeBox
na false
. Spowoduje to usunięcie WS_MAXIMIZEBOX
style w głównym oknie formularza, co uniemożliwi menedżerowi okien maksymalne zwiększenie okna. Wyłącza pole maksymalizacji na pasku nagłówka okna (między okienkiem minimalizującym i zamykającym), wyłącza opcję "Maksymalizuj" w menu okna/systemu i inne metody maksymalizacji okna, o którym mógłbym zapomnieć.
Jednak to nie ma nic wspólnego z klawiatury skrótu Win + ↑, która wywołuje Aero Snap samo jak byłoby przeciągnięcie okna do magicznego pozycji sat krawędzie ekranu.Menedżer okien, czy to w wyniku błędu lub funkcji Aero Snap, nadal pozwala na efektywne "maksymalizowanie" okien, które w przeciwnym razie nie powinny być zmaksymalizowane. Ustawienie właściwości MaximizeBox
nie ma na to wpływu, więc jeśli naprawdę chcesz uniemożliwić użytkownikowi zmianę rozmiaru okna w ten sposób, będziesz musiał wyłączyć efekt Aero Snap w twoim oknie.
Niestety, nie ma metody (przynajmniej nie według mojej wiedzy) na temat programowego wyłączania Aero Snap na podstawie okna lub procesu (patrz także: this related question). Jeśli użytkownik ma włączoną funkcję Aero Snap, można założyć, że chce, aby to zachowanie i aplikacje nie miały na niego wpływu. Jedyne, co możesz zrobić, to całkowicie wyłączyć zmianę rozmiaru okna. W WinForms robisz to, ustawiając właściwość FormBorderStyle
na jedną z poniższych: FormBorderStyle.FixedSingle
, FormBorderStyle.Fixed3D
lub FormBorderStyle.FixedDialog
. Jeśli nadal chcesz zmienić rozmiar okna na inne sposoby, będziesz musiał napisać kod, aby obsługiwać go ręcznie, co nie jest szczególnie łatwym zadaniem.
Dlatego zachęcam do bardzo uważnego rozważenia, czy jest to naprawdę konieczne. Wszystkie pozostałe okna, których nie można zmaksymalizować, realizują to po prostu, ustawiając właściwość MaximizeBox
(lub wykonując odpowiednik w ich strukturze interfejsu użytkownika), co oznacza, że nadal mogą być skutecznie zmaksymalizowane za pomocą Aero Snap. Jeśli działa to w przypadku okien innych użytkowników, w tym również tych, które są częścią samego systemu Windows, powinno to prawdopodobnie zadziałać.
Natknąłem się na to, szukając podobnej odpowiedzi i ustawienie MaximizeBox na wartość false wydaje się uniemożliwiać jakąkolwiek ścieżkę maksymalizacji. Domyślam się, że to zostało naprawione od teraz i opublikowanie tej odpowiedzi. Czy też coś mi umknęło? – Karlovsky120
Formularz ma właściwość o nazwie MaximizeBox
- ustaw tę wartość na false.
Jeśli chodzi o drugie pytanie, sprawdź numer this question and it's answers, aby uzyskać najlepsze sposoby implementacji skrótów klawiaturowych w WinForm.
MaximizeBox = false nie zatrzyma skrótu Windows + Strzałka w górę, aby zmaksymalizować okno ... Jeśli się nie mylę, to znaczy, że widzę ten sam problem w mojej aplikacji .... –
Zawsze można wyłączyć skrót Windows + Up a następnie skupić się na udostępnianiu każdego innego skrótu klawiaturowego. – lifetimes
Powinien działać, ale tak nie jest. Zwalnianie go działa, https://stackoverflow.com/a/47994707/17034 –
Istnieje właściwość klasy Form o nazwie "MaximumBox", musisz ustawić False w oknie właściwości swojego formularza ... To faktycznie uniemożliwi maksymalizowanie formularza w dowolny sposób ... Również jeśli chcesz kontrolować swoje rozmiary formularzy można pracować z takimi właściwościami jak „MinimumSize, MaximumSize” ustawienie ich wartości według własnego uznania lub tworzenia programu obsługi zdarzeń dla zdarzeń MaximumSizeChanged i MinimumSizeChanged ...
To nie działa, kolego .. Okno przesuwa się do lewego górnego rogu, podobnie jak przy próbie zmaksymalizowania 16-bitowego na podstawie aplikacja na 32-bitowym systemie operacyjnym Windows ... Po prostu przechodzi do lewego górnego rogu, a następnie odmawia dowolnego ruchu, na przykład kiedy maksymalizujesz dowolne okno ... Mam na myśli to, że rozmiar pozostaje taki sam, ale wszystkie pozostałe właściwości są takie same jak w przypadku maksymalizacji normalnego okna. Czy istnieje sposób na rozwiązanie tego problemu ...? –
this.FormBorderStyle = FormBorderStyle.FixedSingle;
to linia kodu zapobiegnie użytkownik od zmiany rozmiaru okna.
Oprócz tego ukrywanie/dezaktywowanie pola maksymalizacji i powinno robić to, o co prosiłeś.
Aby wyłączyć pole maksymalnie wykorzystać tę
this.MaximizeBox = false;
Aby ukryć okno maksymalnie wykorzystać to jako dobrze
this.MinimizeBox = false;
Jeśli zmaksymalizować lub zminimalizować są ustawione na false przyciski znikają.
Buddy to zrobi, ale ma niestandardowy formularz z FormBorderStyle = FormBorderStyle.None. Czy jest inny sposób na zrobienie tego ... –
Można wyłączyć kombinację "WINKEY + UP", aby zapobiec maksymalizacji okna. Poza tym ustawiłbym maksymalny/minimalny rozmiar na stałą wartość.To rozwiązanie wydaje się być dość brudne, ale jeśli Twoim wymaganiem jest opcja "FormBorderStyle.None", to prawdopodobnie najlepsze ujęcie. –
Ustawienie MaximumSize równe rozmiarowi (lub pewnemu rozmiarowi) przynajmniej zatrzymuje przejście okna do trybu pełnoekranowego. Nadal zaskakuje do lewego górnego rogu, ale wciąż jest co najmniej oknem i wygląda na prawą - tak, jakby system Windows był głupi, a nie programem.
Można zapobiec okna przyciąganie do lewego górnego rogu, ustawiając:
private void toolbox_Move(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
}
w przypadku ruch postaci.
Możesz spróbować RegisterHotKey Win + Up, jeśli twoje okno lub aplikacja jest aktywowana i wyrejestrować ten klawisz skrótu, jeśli jest dezaktywowany. Musisz złapać klawisz skrótu i zwrócić odpowiednią wartość, aby uniemożliwić dalsze przetwarzanie.
Spójrz na WM_ACTIVATEAPP
, WM_ACTIVATE
i WM_NCACTIVATE
. Pierwszy może być użyty, jeśli chcesz wyłączyć Win + UP dla wszystkich twoich okien.
- 1. Dodawanie dynamicznie formantu do winforma
- 2. Numeryczny przykład algorytmu maksymalizacji oczekiwań
- 3. Qt C++ okno minimalizacji i maksymalizacji
- 4. Jawne okno modalne z przyciskiem maksymalizacji
- 5. Qt ukryj przyciski minimalizacji, maksymalizacji i zamknięcia
- 6. Jak dodać nową Kontrolę użytkownika do Przybornika lub nowego WinForma?
- 7. Jak uzyskać dostęp do odziedziczonych elementów sterujących w projektorze WinForma?
- 8. Zapobieganie CSRF?
- 9. Zapobieganie zamykaniu systemu Windows
- 10. WP7 Zapobieganie przewijaniu ListBox
- 11. angularjs: zapobieganie trasy zmienia
- 12. Zapobieganie kasowaniu GCC LTO
- 13. Zapobieganie wyświetlaniu znaków Emoji
- 14. Zapobieganie ponownemu wczytaniu firefox
- 15. Zapobieganie odcinaniu tytułu UiNavigationBar?
- 16. Zapobieganie zapamiętywaniu Vima
- 17. Zapobieganie zamykaniu okna startowego
- 18. Zapobieganie wielokrotnemu wykonywaniu asynktaskala
- 19. Zapobieganie zaznaczeniu w HTML
- 20. Zapobieganie resetowaniu Androida
- 21. zapobieganie usunięciu nieużywanego symbolu
- 22. Zapobieganie kliknięciu przez div
- 23. Zapobieganie wykonaniu pamięci MIPS
- 24. Zapobieganie wielokrotnym instancjom formularzy
- 25. Zapobieganie grafviz przestawiania węzłów
- 26. Zapobieganie pustym edittext
- 27. Zapobieganie zaznaczaniu tabeli tekstu
- 28. Zapobieganie Wybierz automatyczne sortowanie
- 29. Zapobieganie powielaniu wiadomości
- 30. Zapobieganie ERR_BLOCKED_BY_XSS_AUDITOR w chromie
Rozważ utworzenie drugiego pytania dotyczącego drugiego skrótu – emartel
Zrobiłem to również i znalazłem to wszystko w google. Niektóre właściwości musisz ustawić na false, niektóre trzeba przesłonić. – Pavenhimself