C#窗体全屏功能

最近有朋友让我给他弄个应用程序全屏的功能,例如银行的取号程序界面。所以我从网上查询了一些实现的方法。

C#应用程序中如何实现全屏幕显示功能?
 效果就像windows自带的屏幕保护程序和众多的游戏那样,无论是否设置了“将任务栏保持在其他窗口的前端”都不显示任务栏

实现方式一

在网上找来一些简单的实现方式:

this.FormBorderStyle = FormBorderStyle.None;     //设置窗体为无边框样式
this.WindowState = FormWindowState.Maximized;    //最大化窗体 

然后再设置窗体的位置和大小,例如:Width=1024 Height=768 Left=0 Top=0等size的值

把以上两句代码直接放到Form1_Load的方法中,就可以了,比较简单,我就不贴代码了。

参考出处:http://blog.csdn.net/friendan/article/details/7350570

============================================================

实现方式二

调用系统的API函数,如user32.dll中的FindWindow和ShowWindow函数,具体代码如下:

        [DllImport("user32.dll", EntryPoint = "ShowWindow")]
        public static extern Int32 ShowWindow(Int32 hwnd, Int32 nCmdShow);

        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        private static extern Int32 FindWindow(string lpClassName, string lpWindowName);

代码如下:

using System;
using System.Windows.Forms;

using System.Drawing;
using System.Runtime.InteropServices;

namespace FullScr
{
    public partial class Form1 : Form
    {

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

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        /// <summary>
        ///  全屏按钮的Click事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            m_IsFullScreen = !m_IsFullScreen;//点一次全屏,再点还原。
            this.SuspendLayout();
            if (m_IsFullScreen)//全屏 ,按特定的顺序执行
            {
                SetFormFullScreen(m_IsFullScreen);
                this.FormBorderStyle = FormBorderStyle.None;
                this.WindowState = FormWindowState.Maximized;
                this.Activate();//
            }
            else//还原,按特定的顺序执行——窗体状态,窗体边框,设置任务栏和工作区域
            {
                this.WindowState = FormWindowState.Normal;
                this.FormBorderStyle = FormBorderStyle.Sizable;
                SetFormFullScreen(m_IsFullScreen);
                this.Activate();
            }
            this.ResumeLayout(false);
        }

        /// <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

        public const Int32 SPIF_UPDATEINIFILE = 0x1;
        public const Int32 SPI_SETWORKAREA = 47;
        public const Int32 SPI_GETWORKAREA = 48;
        public const Int32 SW_SHOW = 5;
        public const Int32 SW_HIDE = 0;

        [DllImport("user32.dll", EntryPoint = "ShowWindow")]
        public static extern Int32 ShowWindow(Int32 hwnd, Int32 nCmdShow);

        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        private static extern Int32 FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
        private static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, ref Rectangle lpvParam, Int32 fuWinIni);

        #endregion

    }
}

参考出处:http://www.cnblogs.com/ArcScofield/archive/2013/01/02/Form_Fullscreen.html

时间: 2024-10-09 05:25:41

C#窗体全屏功能的相关文章

mfc如何实现全屏功能

很多的播放器都有快捷键控制窗口以全屏幕的方式显示.给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以工作了. 很多的播放器都有快捷键控制窗口以全屏幕的方式显示.给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以工作了. 代码如下: void CFullScreenDlg::FullScreenView(void) { RECT rectDesktop; WINDOWPL

Delphi7 实现窗体全屏方法

设置要全屏的窗体的ALign 属性为ALcLient ,此法最快.当然对我来说,我并不知道这个,所以走了远路,等后来在实现窗体禁止移动的时候才想到了这里,汗.注意:这种全屏方式不会挡了系统的任务栏....同时可以防止窗体移动, 方法二: 用代码控制.在窗体的创建事件中,此方法运行后窗体也可以移动.影响美观.应该再加入禁止窗体移动的代码)写入 var TrayWnd: HWnd; // 任务栏句柄 Rec : TRect; begin TrayWnd := FindWindow('Shell_Tr

无法实现APP全屏功能的“隐藏原因”

之前在开发项目的过程中需要隐藏顶部的ActionBar实现全屏的功能,然而在AndroidManifest文件中直接设置theme为全屏的NoActionBar模式却一直报错. 最后才发现,IDE自动生成的Blank Activity是自动继承自ActionBarActivity类的,主题设置为NoActionBar自然会报错.很多小的bug虽然很不起眼,但想要在出问题的时候找到它们有时还真的是一件费时又费力的事情啊

vitamio videoView 用隐藏除videoview的控件,并旋转屏幕方向实现的全屏功能,出现的画面不能填充满videoview(画面不完整)

使用vitamio 封装的播放器 当切换到全屏模式,有时候会出现播放的画面不是全屏的情况, 全屏时,画面只占左半部分并出现拉伸效果,还显示不全,等等其他情况 阅读分析源代码发现是getHolder().setFixedSize(mSurfaceWidth, mSurfaceHeight); 的2个参数没有改变导致该方法调用没起作用 解决办法在setVideoLayout 里面重新调用getHolder().setFixedSize(this.getWidth(), this.getHeight(

C++ winForm中如何时窗体全屏并透明 但是能够使键盘鼠标透过,即加一个全屏遮罩

1.将form的Opacity从100%调为我们想要的透明度,例如this->Opacity = 0.2; 2.在form_load函数中加入: HWND hWnd=::FindWindow(NULL,L"Form1");     DWORD   dwNewLong =   GetWindowLong(hWnd,   GWL_EXSTYLE);      dwNewLong   |=   WS_EX_TRANSPARENT   |WS_EX_LAYERED;      SetWi

MFC窗体去边框、置顶、全屏、激活

静态移除长提边框很简单,直接设置"Border"属性为"none"即可 "Maximize Box", "Minimize Box" 设置是否显示 最大化/最小化按钮: "System Menu" 设置 是否显示 关闭按钮: 1. 代码中动态移除窗体边框的方法 DWORD dwStyle = GetStyle(); //等价于GetWindowLong(m_hWnd, GWL_STYLE); DWORD d

HTML5 全屏特性

全屏功能是浏览器很早就支持的一项功能了,可以让你页面中的video, image ,div 等等子元素实现全屏浏览,从而带来更好的视觉体验,来看看怎么使用吧.先来看看有哪些API和事件支持. API // 元素请求全屏显示 element.requestFullscreen() // 检测文档的当前状态是否允许执行全屏操作 document.fullscreenEnabled() //当前显示的元素是否处于全屏状态,如果处于,则返回为非空对象,否则返回null document.fullscre

右键全屏as3

(as3)右键菜单全屏与退出全屏的切换 //舞台设置 stage.frameRate=24; //右键设置 var myContextMenu:ContextMenu = new ContextMenu(); removeDefaultItems(); addCustomMenuItems(); this.contextMenu = myContextMenu; function removeDefaultItems():void { myContextMenu.hideBuiltInItems

Android 去掉标题全屏显示

自己测试时出现无法实现去掉标题和全屏功能.最后发现只要public class SocketActivity extends Activity {} 而不能用ActionBarActivity. 先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文