2013-02-28 15 views
6

Mamy następujący kod:WinForms - niewłaściwy rozmiar forma

private void MainForm_Shown(object sender, EventArgs e) 
    { 
     RepositionForm(); 
    } 

    private void RepositionForm() 
    { 
     Rectangle rect = Screen.PrimaryScreen.WorkingArea; 
     this.Width = 100; 
     this.Height = 117; 
     this.TopMost = true; 
     this.Left = rect.Width - this.Width - 1; 
     this.Top = rect.Height - this.Height - 1; 
    } 

Kiedy uruchomić aplikację z Visual Studio - formularz jest wyświetlany z odpowiednim rozmiarze: 100x117. Jednak po uruchomieniu projektu przez uruchomienie pliku EXE rozmiar formularza wynosi 106x127.

The MinimumSize, MaximumSize and Size properties are set to 100x117. 
WindowsState = Minimized 
ShowIcon = False 
ShowInTaskbar = False 
Topmost = True 
MinimizeBox - False 
MaximizeBox = False 
FormBorderSize = FixedDialog 
ControlBox = True 

Jak to możliwe, że istnieje nawet różnica między uruchomieniem aplikacji?

Dzięki

+0

Całkowicie usuń obramowanie okna i sprawdź, czy działa to samo. –

+0

Czy uruchamiasz go w trybie debugowania z VS? –

+0

@ bash.d: tak, w trybie debugowania –

Odpowiedz

1

zamierzam zgadywać, że problem jest z tematem Windows i/lub Desktop Window Manager nie jest deterministyczny dla danej wersji systemu operacyjnego.

Spróbuj ustawić swój Windows Theme na podstawowy (Desktop-> Personalize), a następnie ponownie uruchom test. Jeśli uzyskasz inne wyniki, znasz go w systemie Windows, a nie w kodzie.

Możesz również sprawdzić obszar klatki systemu poza obszarem roboczym i sprawdzić, czy zmieni się to z systemu operacyjnego/kompozycji.

+1

Mam system Windows 8 i motyw Windows Basic. W systemach Windows 2003 i Windows Classic formularz ma prawidłowy rozmiar. –

+0

obejście polega na sprawdzeniu rozmiaru formularza w trybie OnLoad() i ustaleniu pewnych stałych, w kodzie, w celu sprawdzenia. Jeśli rozmiar formularza nie odpowiada temu, czego oczekujesz, wtedy uzyskaj różnicę i dodaj go, aby uzyskać prawidłowy bezwzględny rozmiar formularza. –

+0

Naprawdę próbowaliśmy umieścić to w wątku wstecz, aby umieścić ten kod w zdarzeniach Resize and Move itp. Nic nie pomaga - rozmiar formularza się nie zmienia. –