展会信息港展会大全

C#窗体全屏功能 最大化 隐藏任务栏、工作区域 窗体边框样式
来源:互联网   发布日期:2016-01-27 15:28:06   浏览:3930次  

导读:窗体全屏的方法:隐藏任务栏、设置工作区域窗体最大化、设置窗体边框样式全屏窗体代码 public partial class FrmFullScreen : Form { Boolean m_IsFullScreen = false; 标记是否全屏 ...

窗体全屏的方法:

隐藏任务栏、设置工作区域

窗体最大化、设置窗体边框样式

全屏窗体代码

public partial class FrmFullScreen : Form

{

Boolean m_IsFullScreen = false;//标记是否全屏

Rectangle rectOld = Rectangle.Empty;

public FrmFullScreen()

{

InitializeComponent();

}

/// <summary>

/// 全屏按钮的Click事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnFullScreen_Click(object sender, EventArgs e)

{

m_IsFullScreen = !m_IsFullScreen;//点一次全屏,再点还原。

SetFormFullScreen(m_IsFullScreen);

this.SuspendLayout();

if (m_IsFullScreen)//全屏

{

this.WindowState = FormWindowState.Maximized;

this.FormBorderStyle = FormBorderStyle.None;

}

else//还原 TODO:还原后的窗体应该与全屏前的大小一致

{

this.WindowState = FormWindowState.Normal;

this.FormBorderStyle = FormBorderStyle.Sizable;

}

this.ResumeLayout(false);

}

/// <summary>

/// 全屏的快捷功能,F11相当于单机按钮;Esc健,如果全屏则退出全屏

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnFullScreen_KeyDown(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.F11)

{

btnFullScreen.PerformClick();

e.Handled = true;

}

else if (e.KeyCode == Keys.Escape)//esc键盘退出全屏

{

if (m_IsFullScreen)

{

e.Handled = true;

SetFormFullScreen(false);

this.WindowState = FormWindowState.Normal;//还原

this.FormBorderStyle = FormBorderStyle.Sizable;

}

}

}

/// <summary>

/// 设置全屏或这取消全屏

/// </summary>

/// <param name="fullscreen">true:全屏 false:恢复</param>

/// <param name="rectOld">设置的时候,此参数返回原始尺寸,恢复时用此参数设置恢复</param>

/// <returns>设置结果</returns>

public Boolean SetFormFullScreen(Boolean fullscreen)//, ref Rectangle rectOld

{

Rectangle rectOld=Rectangle.Empty;

Int32 hwnd = 0;

hwnd = FindWindow("Shell_TrayWnd", null);//获取任务栏的句柄

if (hwnd == 0) return false;

if (fullscreen)//全屏

{

ShowWindow(hwnd, SW_HIDE);//隐藏任务栏

SystemParametersInfo(SPI_GETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);//get屏幕范围

Rectangle rectFull = Screen.PrimaryScreen.Bounds;//全屏范围

SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectFull, SPIF_UPDATEINIFILE);//窗体全屏幕显示

}

else//还原

{

ShowWindow(hwnd, SW_SHOW);//显示任务栏

SystemParametersInfo(SPI_SETWORKAREA, 0, ref rectOld, SPIF_UPDATEINIFILE);//窗体还原

}

return true;

}

#region user32.dll

[DllImport("user32.dll", EntryPoint = "ShowWindow")]

public static extern Int32 ShowWindow(Int32 hwnd, Int32 nCmdShow);

public const Int32 SW_SHOW = 5; public const Int32 SW_HIDE = 0;

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]

private static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, ref Rectangle lpvParam, Int32 fuWinIni);

public const Int32 SPIF_UPDATEINIFILE = 0x1;

public const Int32 SPI_SETWORKAREA = 47;

public const Int32 SPI_GETWORKAREA = 48;

[DllImport("user32.dll", EntryPoint = "FindWindow")]

private static extern Int32 FindWindow(string lpClassName, string lpWindowName);

#endregion

}

赞助本站

人工智能实验室

相关热词: 全屏 窗体 C

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港