ben

OMÜ , Bilgisayar Mühendisliği, 13'

28 Ekim 2017 Cumartesi

winform full ekran

Yazdığım projenin çalıştığında tam ekran olmasını  kapatılamamasını ve windows başlat cubugunun dahi görünmemesini istiyorum. Bunun için ufak bir araştırma yaptım ve deneme amaçlı biraz kodlama yaptım.

öncelikle bir winform açıp içerisinde winapi classı oluşturup içine yazalım. Bu sınıfta GetSystemMetrics  fonksiyonu ile kullanıcının çalıştıgı ekranın maksimum ölçülerini aldık. SetWindowPos ile de bu ekran ayarlarını çağırdığımız akrana ayarlamasını yapmak  için kullandık.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace icon
{
    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;

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

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

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


bir de openstate adında bir class acalım. Bu sınıfta formun tam ekran olma fonksiyonunu ve kucuk ekran olma fonksiyonunu winapi sınıfı kullanarak oluşturalım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace icon
{
    internal class OpenState
    {
        private bool IsMaximized = false;

        public void FullEkran(Form AnaForm)
        {
            if (!IsMaximized)
            {
                IsMaximized = true;
                AnaForm.WindowState = FormWindowState.Maximized;
                AnaForm.FormBorderStyle = FormBorderStyle.None;
                AnaForm.TopMost = true;
                WinApi.SetWinFullScreen(AnaForm.Handle);
            }
        }

        public void KucukEkran(Form Form1)
        {
            Form1.WindowState = FormWindowState.Normal;
            IsMaximized = false;
        }
    }
}

Burada ki Form1 projemizde tam ekran yapmaya çalıştığımız Formumuzun adıdır. şimdi ayarlama yapmak istediğimiz formumuza yazdığımız bu sınıfları kullanarak ayarlama yapalım.

using System.Threading.Tasks;
using System.Windows.Forms;

namespace fullekran
{
    public partial class Form1 : Form
    {
        OpenState openstate = new OpenState();
        public Form1()
        {            
            InitializeComponent();
            this.WindowState = FormWindowState.Maximized;
            this.TopMost = true;
        }
       
        private void button1_Click(object sender, EventArgs e)
        {
            openstate.KucukEkran(this);
        }

         private void Form1_Load(object sender, EventArgs e)
        {
            openstate.FullEkran(this);
        }
   }
}



Not : Bu özelliğin çalışması için formun FormBorderStyle özelliğini properties ekranından none yapmanız gerekiyor

Formu çalıştırdığınızda  tüm ekranı kaplayacak ve windowsa ait görev çubuğuda ekranda görünmeyecektir. ekranı kapatmak bir buton da olmayacaktır. Fakat klavyedeki windows tusu alt+f4 gibi tuşlarla bu ekrandan çıkılabilir. bunları da engellemek isterseniz buradaki yazıdan devam edebilirsiniz

Hiç yorum yok: