欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#窗體全屏功能實(shí)例代碼

 更新時(shí)間:2016年11月30日 22:49:12   投稿:mdxy-dxy  
簡(jiǎn)要介紹窗體全屏的方法,列出實(shí)現(xiàn)窗體的全屏功能以及全屏功能的快捷鍵的代碼,需要的朋友可以參考下

最近有朋友讓我給他弄個(gè)應(yīng)用程序全屏的功能,例如銀行的取號(hào)程序界面。所以我從網(wǎng)上查詢了一些實(shí)現(xiàn)的方法。

C#應(yīng)用程序中如何實(shí)現(xiàn)全屏幕顯示功能?
效果就像windows自帶的屏幕保護(hù)程序和眾多的游戲那樣,無(wú)論是否設(shè)置了“將任務(wù)欄保持在其他窗口的前端”都不顯示任務(wù)欄

實(shí)現(xiàn)方式一

在網(wǎng)上找來(lái)一些簡(jiǎn)單的實(shí)現(xiàn)方式:

this.FormBorderStyle = FormBorderStyle.None;  //設(shè)置窗體為無(wú)邊框樣式
this.WindowState = FormWindowState.Maximized; //最大化窗體 

然后再設(shè)置窗體的位置和大小,例如:Width=1024 Height=768 Left=0 Top=0等size的值

把以上兩句代碼直接放到Form1_Load的方法中,就可以了,比較簡(jiǎn)單,我就不貼代碼了。

實(shí)現(xiàn)方式二

調(diào)用系統(tǒng)的API函數(shù),如user32.dll中的FindWindow和ShowWindow函數(shù),具體代碼如下:

 [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;//標(biāo)記是否全屏


  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;//點(diǎn)一次全屏,再點(diǎn)還原。 
   this.SuspendLayout();
   if (m_IsFullScreen)//全屏 ,按特定的順序執(zhí)行
   {
    SetFormFullScreen(m_IsFullScreen);
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
    this.Activate();//
   }
   else//還原,按特定的順序執(zhí)行——窗體狀態(tài),窗體邊框,設(shè)置任務(wù)欄和工作區(qū)域
   {
    this.WindowState = FormWindowState.Normal;
    this.FormBorderStyle = FormBorderStyle.Sizable;
    SetFormFullScreen(m_IsFullScreen);
    this.Activate();
   }
   this.ResumeLayout(false);
  }

  /// <summary> 
  /// 設(shè)置全屏或這取消全屏 
  /// </summary> 
  /// <param name="fullscreen">true:全屏 false:恢復(fù)</param> 
  /// <param name="rectOld">設(shè)置的時(shí)候,此參數(shù)返回原始尺寸,恢復(fù)時(shí)用此參數(shù)設(shè)置恢復(fù)</param> 
  /// <returns>設(shè)置結(jié)果</returns> 
  public Boolean SetFormFullScreen(Boolean fullscreen)//, ref Rectangle rectOld
  {
   Rectangle rectOld = Rectangle.Empty;
   Int32 hwnd = 0;
   hwnd = FindWindow("Shell_TrayWnd", null);//獲取任務(wù)欄的句柄

   if (hwnd == 0) return false;

   if (fullscreen)//全屏
   {
    ShowWindow(hwnd, SW_HIDE);//隱藏任務(wù)欄

    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);//顯示任務(wù)欄
    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

 }
}

完善后的代碼:

非常感謝@iheartwater的熱心幫助,更改后的代碼能夠解決”全屏后,窗體能夠恢復(fù)到原來(lái)的狀態(tài),包括位置(Loaction)和大小(Size)“,唉,其實(shí),原因還挺簡(jiǎn)單的。

Modified Code
 public partial class FrmFullScreen : Form
 {
  Boolean m_IsFullScreen = false;//標(biāo)記是否全屏

  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;//點(diǎn)一次全屏,再點(diǎn)還原。 
   this.SuspendLayout();
   if (m_IsFullScreen)//全屏 ,按特定的順序執(zhí)行
   {
    SetFormFullScreen(m_IsFullScreen);
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
    this.Activate();//
   }
   else//還原,按特定的順序執(zhí)行——窗體狀態(tài),窗體邊框,設(shè)置任務(wù)欄和工作區(qū)域
   {
    this.WindowState = FormWindowState.Normal;
    this.FormBorderStyle = FormBorderStyle.Sizable;
    SetFormFullScreen(m_IsFullScreen);
    this.Activate();
   }
   this.ResumeLayout(false);
  }
  /// <summary>
  /// 全屏的快捷功能,F(xiàn)11相當(dāng)于單機(jī)按鈕;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鍵盤(pán)退出全屏
   {
    if (m_IsFullScreen)
    {
     e.Handled = true;
     this.WindowState = FormWindowState.Normal;//還原 
     this.FormBorderStyle = FormBorderStyle.Sizable;
     SetFormFullScreen(false);
    }
   }
  }
  /// <summary> 
  /// 設(shè)置全屏或這取消全屏 
  /// </summary> 
  /// <param name="fullscreen">true:全屏 false:恢復(fù)</param> 
  /// <param name="rectOld">設(shè)置的時(shí)候,此參數(shù)返回原始尺寸,恢復(fù)時(shí)用此參數(shù)設(shè)置恢復(fù)</param> 
  /// <returns>設(shè)置結(jié)果</returns> 
  public Boolean SetFormFullScreen(Boolean fullscreen)//, ref Rectangle rectOld
  {
   Rectangle rectOld=Rectangle.Empty;
   Int32 hwnd = 0;
   hwnd = FindWindow("Shell_TrayWnd", null);//獲取任務(wù)欄的句柄

   if (hwnd == 0) return false;

   if (fullscreen)//全屏
   {
    ShowWindow(hwnd, SW_HIDE);//隱藏任務(wù)欄

    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);//顯示任務(wù)欄

    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
 }

窗體全屏

窗體全屏的方法:

隱藏任務(wù)欄、設(shè)置工作區(qū)域
窗體最大化、設(shè)置窗體邊框樣式

相關(guān)文章

  • C#如何實(shí)現(xiàn)圖片的剪裁并保存

    C#如何實(shí)現(xiàn)圖片的剪裁并保存

    基于c#實(shí)現(xiàn)圖片的裁剪并保存功能,實(shí)現(xiàn)方法非常簡(jiǎn)單的,前端采用的cropper插件,但是在本文中沒(méi)有給大家多介紹,需要的朋友可以到腳本之家去查找這個(gè)插件。好了,如果大家對(duì)c#實(shí)現(xiàn)圖片裁剪并保存功能感興趣的朋友一起看看吧
    2016-11-11
  • C#中const和readonly的用法比較

    C#中const和readonly的用法比較

    今天小編就為大家分享一篇關(guān)于C#中const和readonly的用法比較,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • C#中Cookie之存儲(chǔ)對(duì)象

    C#中Cookie之存儲(chǔ)對(duì)象

    這篇文章主要介紹了在項(xiàng)目中,需要將用戶的信息存到Cookie中,但是cookie只能保存字符串,所以需要先序列號(hào),然后在存儲(chǔ)在cookie中,有需要的朋友可以借鑒下
    2015-07-07
  • c# 9.0新特性nint和Pattern matching的使用方法

    c# 9.0新特性nint和Pattern matching的使用方法

    這篇文章主要介紹了c# 9.0新特性nint和Pattern matching的使用方法,文中講解非常細(xì)致,幫助你更好的學(xué)習(xí)c# 9.0,有需求的朋友可以參考下
    2020-06-06
  • C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法

    C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)為一張大尺寸圖片創(chuàng)建縮略圖的方法,涉及C#創(chuàng)建縮略圖的相關(guān)圖片操作技巧,需要的朋友可以參考下
    2015-06-06
  • C#值類(lèi)型、引用類(lèi)型中的Equals和==的區(qū)別淺析

    C#值類(lèi)型、引用類(lèi)型中的Equals和==的區(qū)別淺析

    這篇文章主要介紹了C#值類(lèi)型、引用類(lèi)型中的Equals和==的區(qū)別淺析,本文分別對(duì)C#值類(lèi)型和引用類(lèi)型中的Equals和==做了講解和給出了實(shí)例,需要的朋友可以參考下
    2015-01-01
  • C#自定義基于控制臺(tái)的Timer實(shí)例

    C#自定義基于控制臺(tái)的Timer實(shí)例

    這篇文章主要介紹了C#自定義基于控制臺(tái)的Timer實(shí)現(xiàn)方法,可以簡(jiǎn)單模擬timer控件的相關(guān)功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 淺析c# 接口

    淺析c# 接口

    這篇文章主要介紹了c# 接口的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下。
    2020-07-07
  • C#使用iTextSharp將PDF轉(zhuǎn)成文本的方法

    C#使用iTextSharp將PDF轉(zhuǎn)成文本的方法

    這篇文章主要介紹了C#使用iTextSharp將PDF轉(zhuǎn)成文本的方法,涉及C#操作pdf文件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#中日期時(shí)間的簡(jiǎn)單操作

    C#中日期時(shí)間的簡(jiǎn)單操作

    這篇文章介紹了C#中日期時(shí)間的簡(jiǎn)單操作,有需要的朋友可以參考一下
    2013-08-08

最新評(píng)論