8

私は自分のアプリを持っていて、タスクバーなしでフルスクリーンモードで実行したいと思っています。Windowsバーを非表示にする方法を見つけましたが、アプリを起動すると、この最後が非表示になっているにもかかわらず、Windowsタスクバーのスペースがカバーされません。

私はこれを見つけましたが、うまくいきませんでした。ひるみに関しては、この例を見つけることができませんでした。FormBorderStyle = NoneWindowsState=Maximizedがあります

解決:

私はそれをする方法を見つけます。重要なヒントは、WindowState = Normalにすることです(この問題を見つけるのに少し時間がかかりました)。WindowState = Maximizedの場合、フォームの高さをディスプレイの最大の高さに設定することはできません。

私はそれを精査するためにこのコードを書きました、そしてそれはうまくいきます。button1(フルスクリーン)とbutton2(デフォルト画面に戻す)の2つのボタンを持つフォームです

    public partial class Form1 : Form
    {
        public Form1(){
               InitializeComponent();            
        }

    [DllImport("Coredll")]
    internal static extern IntPtr FindWindow(String lpClassName, String lpWindowName);

    [DllImport("coredll.dll")]
    internal static extern bool EnableWindow(IntPtr hwnd, Boolean bEnable);

    [DllImport("coredll.dll")]
    private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);


    public static bool EnableTaskBar(Boolean enable)
    {
        IntPtr hwnd;
        hwnd = FindWindow("HHTaskBar", "");

        if (enable) SetHHTaskBar();
        else HideHHTaskBar();

        return EnableWindow(hwnd, enable);
    }

    public static void HideHHTaskBar()
    {
        IntPtr iptrTB = FindWindow("HHTaskBar", null);
        MoveWindow(iptrTB, 0, Screen.PrimaryScreen.Bounds.Height,
        Screen.PrimaryScreen.Bounds.Width, 26, true);
    }

    public static void SetHHTaskBar()
    {
        IntPtr iptrTB = FindWindow("HHTaskBar", null);
        MoveWindow(iptrTB, 0, 294,
        Screen.PrimaryScreen.Bounds.Width, 26, true);
    }


    private void button1_Click(object sender, EventArgs e)
    {
        EnableTaskBar(false);
        this.Width = Screen.PrimaryScreen.Bounds.Width;
        this.Height = Screen.PrimaryScreen.Bounds.Height;
        this.Left = 0;
        this.Top = 0;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        EnableTaskBar(true);
    }
}

それが同じ問題を抱えている他の人に役立つことを願っています!

助けてくれてありがとう!

4

2 に答える 2

8

タスクバーを非表示にした後、フォームのサイズと位置を明示的に設定します。

myForm.Width = Screen.PrimaryScreen.Bounds.Width;
myForm.Height = Screen.PrimaryScreen.Bounds.Height;
myForm.Left = 0;
myForm.Top = 0;
于 2012-05-28T19:15:30.060 に答える
0

私は常にSHFullScreenを使用して、必要に応じてこれを実現してきました。PInvokeを使用して呼び出す必要があります。

于 2012-05-28T19:49:07.247 に答える