2010-09-20 17 views
27

Jak zapobiec zmianie rozmiaru okna aplikacji.C# jak uniemożliwić użytkownikowi zmianę rozmiaru okna aplikacji?

jak mogę to zrobić?

+0

możliwe duplikat [Jak mogę zapobiec formę przed zmieniany przez użytkownika?] (Http://stackoverflow.com/questions/1119256/how-do-i-prevent-a-form-from -sing-resized-by-user) –

+0

możliwy duplikat [Jak mogę zapobiec zmianie rozmiaru okna/formularza przez użytkowników, gdy aplikacja jest uruchomiona] (http: // stackoverflow.com/questions/1330339/how-can-i-prevent-users-from-change-the-window-form-size-when-application-is-r) – bluish

Odpowiedz

40

Na głównej Form (lub dowolnej Form, że nie chce być zmienny rozmiar), zmienić właściwość FormBorderStyle do Fixed______ (FixedSingle, Fixed3D, FixedDialog, FixedToolWindow).

+0

Dzięki. Działa to i jest bardziej smaczne niż ustawienie wartości maksymalnej na wartość minimalną i inne ataki hakerskie. – Phil

+1

FixedToolWindow jest szczególnie "w stanie palety". –

5

innym sposobem jest zdefiniowanie rozmiaru formularza i ustawienie rzeczywistego rozmiaru jako MinimumSize i MaximumSize za pośrednictwem właściwości.

Nie zmienia to Twojego BorderStyle, a użytkownik końcowy nie może zmienić rozmiaru formularza.

+4

Prawidłowe rozwiązanie. Ale nie podoba mi się, gdy Windows wygląda na skalowalny, a ja je zmieniam i nic się nie dzieje. – colithium

1

spróbuj tego:

Change FormBorderStyle to Fixed(Single,3D,Dialog) 
+1

Można zmienić rozmiar, przeciągając krawędzie. – colithium

3

Istnieje kilka obejścia tego:

  1. Ustaw maksymalny rozmiar właściwość na wartość wolisz. Jeśli nie chcesz, aby okno aplikacji również się skurczyło, ustaw właściwość minimalnej wielkości. Jeśli wolisz, aby aplikacja miała dokładnie taki sam rozmiar jak czas projektowania, ustaw maksymalny rozmiar i minimalny rozmiar okna. (Po ustawieniu maksymalnego rozmiaru lub minimalnego rozmiaru od projektanta, nie można programowo zmienić rozmiaru okna, chyba że programistycznie ponownie ustawi się rozmiar i minimalny rozmiar programu).

  2. Ustaw FormBorderStyle na FixedSingle lub FixedDialog. Różnica w wyglądzie nie będzie zauważalna dla niewprawnych oczu, ale jedną znaczącą różnicą, jaką odkryłem z mojego doświadczenia, jest to, że kiedy robisz to FixedSingle, wciąż możesz zmieniać rozmiar programowo. W FixedDialog nie jest to możliwe. To ogromna zaleta dla właściwości FixedSingle. (Jeśli chcesz programowo zmienić rozmiar okna po przejściu do FixedDialog, musisz najpierw zmienić programowo FormBorderStyle, co spowoduje nieznaczny efekt mrugnięcia podczas uruchamiania aplikacji).

Po prostu przejdź do FixedSingle. Aby uzyskać sens, wykonaj następujące czynności:

a. Ustaw opcję zmaksymalizuj właściwość pola na wartość false.

b. Ustaw SizeGripStyle na Hide. (@kolithium wskazuje na to)

-2

Występuje problem z odszukaniem tych właściwości w niższej wersji programu Visual Studio, np. 2008, a ResizeMode nie pojawia się tutaj.

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
    e.Cancel = true; 
    this.WindowState = FormWindowState.Minimized; 
    } 
} 
+3

W jaki sposób pomaga ten kod? – aKzenT

0

Jeśli chcesz użyć domyślnego FormBorderStyle, a jednocześnie jest w stanie zapobiec użytkownika od ponownego zaklejania formę, można po prostu ustawić MaximumSize i MinimumSize właściwości postaci, jak chcesz.

this.MaximumSize = new Size(XX,YY); 
this.MinimumSize = new Size(X,Y); 
Powiązane problemy