2013-10-21 16 views
8

Ich schrieb eine Kiosk-Stil C# -Anwendung mit Visual Studio, die beim Start ausgeführt wird und sollte auf Vollbild erweitern und die Taskleiste abdecken.Beim Start Taskleiste deckt Vollbild C# -Anwendung

Ich mache die übliche Einstellung Boarder-Stil zu keinen, und füllen Sie Extents und es funktioniert perfekt, wenn ich nur die Anwendung manuell starten.

Wenn die Anwendung beim Start gestartet wird (über eine Verknüpfung im Startordner im Startmenü), wird die Taskleiste am Anfang des Programms angezeigt, und wenn Sie irgendwo auf das Formular klicken, wird das Formular nicht angezeigt zurück an die Spitze.

Hat jemand dieses Problem vor oder kennt mögliche Problemumgehungen.

+0

Nicht sicher, aber es könnte o sein Andere Programme unterbrechen es. – Rohit

+0

Dies ist auf einer sauberen Installation von Windows XP Ich kann mich nicht erinnern, welche Edition, das einzige Zeug, das installiert wurde, ist die. NET distributable und einige Treiber für einen USBCAN-Adapter. – Hugoagogo

+0

Welche Technologie verwenden Sie? WPF oder WinForms? – galenus

Antwort

0

Problemumgehung: Beim Starten, töten explorer.exe - Sie brauchen es nicht -> Taskleiste verschwinden. Bei Bedarf starten Sie den Task-Manager mit

+0

Wäre es eine einfache Möglichkeit zu prüfen, ob der Explorer vollständig geöffnet wurde, bevor das Formular angezeigt wird? – Hugoagogo

+0

Vollständig geöffnet? Kannst du genauer sein? – Ondrej

+0

Vollständig geöffnet wie in der Taskleiste wird angezeigt, so dass beim Starten des Formulars die Taskleiste ordnungsgemäß überlagert wird. – Hugoagogo

3

ich auch dies ein weiteres Mal getan haben:

public class Screensize 
{ 
    /// <summary> 
    /// Selected Win AI Function Calls 
    /// </summary> 

    public class WinApi 
    { 
     [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")] 
     public static extern int GetSystemMetrics(int which); 

     [DllImport("user32.dll")] 
     public static extern void 
      SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter, 
         int X, int Y, int width, int height, uint flags); 

     private const int SM_CXSCREEN = 0; 
     private const int SM_CYSCREEN = 1; 
     private static IntPtr HWND_TOP = IntPtr.Zero; 
     private const int SWP_SHOWWINDOW = 64; // 0x0040 

     public static int ScreenX 
     { 
      get { return GetSystemMetrics(SM_CXSCREEN); } 
     } 

     public static int ScreenY 
     { 
      get { return GetSystemMetrics(SM_CYSCREEN); } 
     } 

     public static void SetWinFullScreen(IntPtr hwnd) 
     { 
      SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW); 
     } 
    } 

    /// <summary> 
    /// Class used to preserve/restore state of the form 
    /// </summary> 
    public class FormState 
    { 
     private FormWindowState winState; 
     private FormBorderStyle brdStyle; 
     private bool topMost; 
     private Rectangle bounds; 

     private bool IsMaximized = false; 

     public void Maximize(Form targetForm) 
     { 
      if (!IsMaximized) 
      { 
       IsMaximized = true; 
       Save(targetForm); 
       targetForm.WindowState = FormWindowState.Maximized; 
       targetForm.FormBorderStyle = FormBorderStyle.None; 
       targetForm.TopMost = false; 
       WinApi.SetWinFullScreen(targetForm.Handle); 
      } 
     } 

     public void Save(Form targetForm) 
     { 
      winState = targetForm.WindowState; 
      brdStyle = targetForm.FormBorderStyle; 
      topMost = targetForm.TopMost; 
      bounds = targetForm.Bounds; 
     } 

     public void Restore(Form targetForm) 
     { 
      targetForm.WindowState = winState; 
      targetForm.FormBorderStyle = brdStyle; 
      targetForm.TopMost = topMost; 
      targetForm.Bounds = bounds; 
      IsMaximized = false; 
     } 
    } 

und rufen Sie einfach in Ihrer Form:

screensize.Maximize(this) 

Ich glaube, Sie dieses

bedeuten

Und jetzt sehe ich diesen Beitrag ist von 2013 ...

+0

Danke dafür, ich werde nicht für ein paar Wochen testen, aber es sieht sowohl gut als auch eine ziemlich einfache Lösung, UpVoted für jetzt und wird als richtig markieren, nachdem ich die Chance habe, dies zu beheben. – Hugoagogo

Verwandte Themen