2010-09-20 14 views
11

Mam do czynienia z problemem podczas wyświetlania ekranu powitalnego w systemie z dwoma monitorami. Po uruchomieniu aplikacji na ekranie głównym, a następnie wskaźnik myszy zostanie przeniesiony na drugi monitor, zanim pojawi się ekran powitalny, mój ekran powitalny "podąża" za wskaźnikiem myszy. Oznacza to, że ekran powitalny jest wyświetlany na drugim wyświetlaczu, a po zakończeniu pracy zniknie, a aplikacja zostanie wyświetlona na monitorze głównym. To wygląda dość brzydko i nieprofesjonalnie.C# Jak wymusić wyświetlenie ekranu SLPash na ekranie głównym w systemie z dwoma monitorami?

Próbowałem ustawić właściwość FormStartPosition.CenterScreen we właściwościach formularza i ustawić go w czasie wykonywania w konstruktorze mojego formularza, ale nic z tego nie zadziałało. Przy okazji, używam C#.

Jakieś wskazówki, aby ekran powitalny był wyświetlany na tym samym monitorze, co moja aplikacja?

Każda pomoc zostanie doceniona.

Pozdrowienia, Victor

+0

Ekran powitalny "podążający" wskaźnikiem myszy jest bardzo nietypowy. Nie dzieje się to przez przypadek, na pewno jest jakiś kod, który można skomentować, aby wyłączyć tę funkcję. Nie mogę ci pomóc znaleźć tego kodu oczywiście. –

+0

@HansPassant: To "zachowanie" dotyka mojej aplikacji WinForm nawet w .NET 4.0. Wyświetlam okno dialogowe logowania przy starcie i uparcie nalega na pojawienie się na jakimkolwiek monitorze, aby "posiadać" mysz w danym momencie. To * bardzo * denerwujące. Co ciekawsze, poprawka w tym poście nie działała dla mnie. –

Odpowiedz

7

W Menem, trzeba wymusić formularz, aby rozpocząć na monitorze podstawowym. Oto, jak otworzyć formularz w (0, 0) na monitorze głównym.

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     Form1 f = new Form1(); 
     f.StartPosition = FormStartPosition.Manual; 
     f.Location = Screen.PrimaryScreen.Bounds.Location; 

     Application.Run(f); 
    } 
+0

Cześć Alex, dzięki za odpowiedź, niestety to nie pomogło rozwiązać problemu. Powinienem był wspomnieć, że ekran powitalny jest zawarty w dll (komponent utworzony w C#), który jest wywoływany przez aplikację C++. Tak więc ekran powitalny musi zostać wyświetlony na ekranie, na którym uruchomiona jest aplikacja C++. Próbowałem dołączyć linię f.Location = Screen.PrimaryScreen.Bounds.Location; w konstruktorze ekranu slpash, ale to nie pomogło. Jakieś pomysły? – user452852

+1

Witam, problem został rozwiązany, w tym następujące linie w moim konstruktorze formularza: this.Location = Screen.PrimaryScreen.Bounds.Location; this.CenterToScreen; Jeśli używam tego.StartPosition = FormStartPosition.CenterScreen; wtedy dostaję opisany problem. Dzięki za pomoc ! – user452852

+0

Cieszę się, że to pomogło ci skierować cię we właściwym kierunku. –

Powiązane problemy