আমি কীভাবে একটি উইনফর্মস অ্যাপ্লিকেশনটিকে পুরো স্ক্রিনে যেতে পারি


109

আমার একটি উইনফর্মস অ্যাপ্লিকেশন রয়েছে যা আমি পূর্ণ স্ক্রিন তৈরি করার চেষ্টা করছি (কিছুটা ভিএস পূর্ণ স্ক্রিন মোডে যা করে) এর মতো।

বর্তমানে আমি সেটিং করছি FormBorderStyleকরার Noneএবং WindowStateকরতেMaximized যা আমাকে একটু বেশি স্থান দেয়, কিন্তু এটা টাস্কবার উপর কাভার করে না যদি এটা দৃশ্যমান হয়।

সেই জায়গাটি ব্যবহার করার জন্য আমার কী করা দরকার?

বোনাস পয়েন্টগুলির জন্য, আমার MenuStripঅটোহাইডটি সেই জায়গাটি ছেড়ে দেওয়ার জন্য আমি কি কিছু করতে পারি ?

উত্তর:


150

বেস প্রশ্নে নিম্নলিখিতটি কৌশলটি করবে (টাস্কবারটি আড়াল করে)

private void Form1_Load(object sender, EventArgs e)
{
    this.TopMost = true;
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
}

তবে মজার বিষয় হল, আপনি যদি শেষ দুটি লাইনটি অদলবদল করেন তবে টাস্কবারটি দৃশ্যমান থাকবে। আমি মনে করি এই ক্রিয়াগুলির ক্রমটি বৈশিষ্ট্যগুলি উইন্ডো দিয়ে নিয়ন্ত্রণ করা শক্ত হবে।


4
অর্ডারিং ইস্যু কেন এটি আগে আমার পক্ষে কাজ করছিল না। আমি আসলে সেই ক্রমে বৈশিষ্ট্যগুলি সেট করেছিলাম, তবে যখন ফর্মটি ইতিমধ্যে সীমানা নির্ধারণ করে সর্বাধিক করা হয় তখন টাস্কবারটি কভার করার জন্য প্রসারিত হয় না। আমি ফর্মটি "পুনরুদ্ধার" করে সীমান্ত পরিবর্তন করে এবং পরে সর্বাধিক করে কাজ করেছি around

3
আমার এটি সঠিক ক্রমে রয়েছে এবং এটি কার্যকর হয় না। টাস্কবার সর্বদা দৃশ্যমান এবং অ্যাপ্লিকেশন এর নীচে নয়, এটি সেখানে টাস্কবারের জন্য বিনামূল্যে স্পাভ রেখে গেছে। (উইন 7)
প্রেজা 8

@ প্রেজা 8 - গ্রেডির মন্তব্য পড়ুন, এটি আপনার পরিস্থিতিতে প্রযোজ্য কিনা তা পরীক্ষা করে দেখুন।
হেন্ক হলটারম্যান

1
আমি দুঃখিত, আমি এখানে দীর্ঘকাল যাচ্ছিলাম না এবং আমি কীভাবে এটি করেছি তা ভুলে গিয়েছিলাম তবে আমি মনে করি যে কয়েকটি আদেশের এলোমেলো ক্রম চেষ্টা করার পরেও সহায়তা করে।
Preza8

দ্রষ্টব্য: কিছু কারণে আমাকে সম্পত্তিগুলি সেট করতে হয়েছিল এবং কোডে রেখে দিতে হয়েছিল
জো ফিলিপস

22

একটি পরীক্ষিত এবং সহজ সমাধান

আমি এসও এবং কিছু অন্যান্য সাইটে এই প্রশ্নের উত্তর খুঁজছি, তবে একটি উত্তর আমার কাছে খুব জটিল ছিল এবং কিছু অন্যান্য উত্তর কেবল সঠিকভাবে কাজ করে না, তাই অনেক কোড পরীক্ষার পরে আমি এই ধাঁধাটি সমাধান করেছি।

দ্রষ্টব্য: আমি উইন্ডোজ 8 ব্যবহার করছি এবং আমার টাস্কবারটি স্বয়ংক্রিয় লুকানোর মোডে নেই।

আমি আবিষ্কার করেছি যে কোনও পরিবর্তন সম্পাদন করার আগে উইন্ডোস্টেটটি সাধারণ হিসাবে সেট করা অচ্ছাদিত টাস্কবারের সাহায্যে ত্রুটি থামিয়ে দেবে।

কোড

আমি এই ক্লাসটি তৈরি করেছি যার দুটি পদ্ধতি রয়েছে, প্রথমটি "সম্পূর্ণ স্ক্রিন মোডে" প্রবেশ করে এবং দ্বিতীয়টি "পূর্ণ স্ক্রিন মোড" ছেড়ে যায়। সুতরাং আপনাকে কেবল এই শ্রেণীর একটি অবজেক্ট তৈরি করতে হবে এবং এন্টারফুলস্ক্রিনমোড পদ্ধতিতে বা লেভফুলস্ক্রিনমোড পদ্ধতিতে আর্গুমেন্ট হিসাবে আপনি পূর্ণ স্ক্রিন সেট করতে চান এমন ফর্মটি পাস করতে হবে:

class FullScreen
{
    public void EnterFullScreenMode(Form targetForm)
    {
        targetForm.WindowState = FormWindowState.Normal;
        targetForm.FormBorderStyle = FormBorderStyle.None;
        targetForm.WindowState = FormWindowState.Maximized;
    }

    public void LeaveFullScreenMode(Form targetForm)
    {
        targetForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
        targetForm.WindowState = FormWindowState.Normal;
    }
}

ব্যবহারের উদাহরণ

    private void fullScreenToolStripMenuItem_Click(object sender, EventArgs e)
    {
        FullScreen fullScreen = new FullScreen();

        if (fullScreenMode == FullScreenMode.No)  // FullScreenMode is an enum
        {
            fullScreen.EnterFullScreenMode(this);
            fullScreenMode = FullScreenMode.Yes;
        }
        else
        {
            fullScreen.LeaveFullScreenMode(this);
            fullScreenMode = FullScreenMode.No;
        }
    }

আমি এই একই উত্তরটি অন্য একটি প্রশ্নের উপরে রেখেছি যে আমি নিশ্চিত নই যে এটির একটি সদৃশ কিনা তা নয়। (অন্য প্রশ্নের লিঙ্ক: টাস্কবারের শীর্ষে কীভাবে একটি উইন্ডোজ ফর্মটি পূর্ণ স্ক্রিনে প্রদর্শন করবেন? )


2
কৌতূহলের বাইরে আপনার কাছে কেন সত্য / মিথ্যা শর্তটি বর্ণনা করার জন্য পুরো এনাম আছে?
নাথান রিডলি

2
আমি এটি অনেক আগে লিখেছিলাম যখন আমি কেবল কোড লেখার জন্য আঁকড়ে ছিলাম, দয়া করে আমার তরুণ নির্বোধ মনে রাখবেন। এটি প্রকৃতপক্ষে কোনও ধারণা রাখে না এবং আমার কেবল একটি বুলিয়ান প্রকারটি ব্যবহার করা উচিত ছিল।
জিগান্ড

এটি আমার পক্ষে কাজ করেছিল এবং আমাকে targetForm.WindowState = FormWindowState.Normal;পুরো পর্দা ছাড়ার শুরুতেও সেট করতে হয়েছিল। ব্যবহারকারী যখন সর্বাধিক উইন্ডো থেকে পূর্ণ পর্দায় যাচ্ছে ক্ষেত্রে পরিচালনা করার জন্য এটি।
gneri

6

এবং মেনুস্ট্রিপ-প্রশ্নের জন্য, সেট করে দেখুন

MenuStrip1.Parent = Nothing

যখন পূর্ণস্ক্রিন মোডে থাকে তখন এটি অদৃশ্য হয়ে যায়।

এবং পূর্ণস্ক্রিনমোড থেকে বেরিয়ে আসার সময়, menustrip1.parentফর্মটিতে আবার রিসেট করুন এবং মেনুস্ট্রিপ আবার স্বাভাবিক হবে।


5

আপনার সিস্টেমের স্ক্রিনটি ফিট করার জন্য আপনি নীচের কোডটি ব্যবহার করতে পারেন এবং টাস্ক বারটি দৃশ্যমান।

    private void Form1_Load(object sender, EventArgs e)
    {   
        // hide max,min and close button at top right of Window
        this.FormBorderStyle = FormBorderStyle.None;
        // fill the screen
        this.Bounds = Screen.PrimaryScreen.Bounds;
    }

ব্যবহার করার দরকার নেই:

    this.TopMost = true;

এই লাইনটি alt+tabঅন্য অ্যাপ্লিকেশনে স্যুইচ করতে হস্তক্ষেপ করে । ("টপমস্ট" অর্থ উইন্ডোটি অন্য উইন্ডোগুলির উপরে থাকে, যদি না সেগুলিকে "টপমস্ট" হিসাবে চিহ্নিত করা হয়।)


4

আমি সম্প্রতি একটি মিডিয়াপ্লেয়ার অ্যাপ্লিকেশন তৈরি করেছি এবং প্রোগ্রামটি পূর্ণ স্ক্রিনে চলাকালীন যখন টাস্কবারটি লুকানো ছিল তা নিশ্চিত করার জন্য আমি এপিআই-কলগুলি ব্যবহার করেছি এবং যখন প্রোগ্রামটি ফুলস্ক্রিনে ছিল না বা ফোকাস ছিল না বা প্রস্থান করা হয়েছিল তখন টাস্কবারটি পুনরুদ্ধার করেছি।

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer

Sub HideTrayBar()
    Try


        Dim tWnd As Integer = 0
        Dim bWnd As Integer = 0
        tWnd = FindWindow("Shell_TrayWnd", vbNullString)
        bWnd = FindWindowEx(tWnd, bWnd, "BUTTON", vbNullString)
        ShowWindow(tWnd, 0)
        ShowWindow(bWnd, 0)
    Catch ex As Exception
        'Error hiding the taskbar, do what you want here..
    End Try
End Sub
Sub ShowTraybar()
    Try
        Dim tWnd As Integer = 0
        Dim bWnd As Integer = 0
        tWnd = FindWindow("Shell_TrayWnd", vbNullString)
        bWnd = FindWindowEx(tWnd, bWnd, "BUTTON", vbNullString)
        ShowWindow(bWnd, 1)
        ShowWindow(tWnd, 1)
    Catch ex As Exception
    'Error showing the taskbar, do what you want here..     
               End Try


End Sub

6
যদি দুটি প্রোগ্রাম এটি করে? আপনার প্রোগ্রামটি যদি টাস্কবারটি আনহাইড করার সুযোগ পাওয়ার আগে ক্রাশ হয়ে যায় তবে কী হবে?
Tmdean

@ টিএমডিয়ান: আমার ক্ষেত্রে এটি কোনও সমস্যা ছিল না, এই প্রোগ্রামটি ম্যাশাইনগুলিতে চলছে যা কেবলমাত্র আমার প্রোগ্রামটি ওয়েটিংরুমের পর্দার উপর চালানোর জন্য উত্সর্গীকৃত ছিল।
স্টেফান

@ টিএমডিয়ান: দুটি প্রোগ্রাম যদি এটি কার্যকর করে তবে মূল বিষয়টি সঠিকভাবে পরিচালনা না করা হলে বিষয়গুলিতে গোলমাল হতে পারে The
স্টিফান

2

আপনার উইন্ডোটি শীর্ষস্থানীয় হতে হবে।


1
কোন পাশা. এমনকি যদি আমি উইন্ডোটিকে শীর্ষস্থানে স্থাপন করি তবে এটি টাস্কবারটি কভার করে না।

3
চেষ্টা করুন: বাউন্ডস = স্ক্রিন.প্রাইমারিস্ক্রিন.বাউন্ডস; codeproject.com/KB/cs/scrframework.aspx , আরো অধিকৃত হয়ে গেছে multimon মত
ট্রন

1

এটি নেট নেট ২.০ এ কাজ করবে কিনা জানি না, তবে এটি আমাকে নেট .২.২.২ এ কাজ করেছে। কোডটি এখানে:

using System;
using System.Drawing;
using System.Windows.Forms;

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

    // CODE STARTS HERE

    private System.Drawing.Size oldsize = new System.Drawing.Size(300, 300);
    private System.Drawing.Point oldlocation = new System.Drawing.Point(0, 0);
    private System.Windows.Forms.FormWindowState oldstate = System.Windows.Forms.FormWindowState.Normal;
    private System.Windows.Forms.FormBorderStyle oldstyle = System.Windows.Forms.FormBorderStyle.Sizable;
    private bool fullscreen = false;
    /// <summary>
    /// Goes to fullscreen or the old state.
    /// </summary>
    private void UpgradeFullscreen()
    {
        if (!fullscreen)
        {
            oldsize = this.Size;
            oldstate = this.WindowState;
            oldstyle = this.FormBorderStyle;
            oldlocation = this.Location;
            this.WindowState = System.Windows.Forms.FormWindowState.Normal;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Bounds = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
            fullscreen = true;
        }
        else
        {
            this.Location = oldlocation;
            this.WindowState = oldstate;
            this.FormBorderStyle = oldstyle;
            this.Size = oldsize;
            fullscreen = false;
        }
    }

    // CODE ENDS HERE
}

ব্যবহার:

UpgradeFullscreen(); // Goes to fullscreen
UpgradeFullscreen(); // Goes back to normal state
// You don't need arguments.

বিজ্ঞপ্তি: আপনার এটি অবশ্যই আপনার ফর্মের শ্রেণির (উদাহরণ partial class Form1 : Form { /* Code goes here */ }:) এর মধ্যে স্থাপন করা উচিত বা এটি কাজ করবে না কারণ আপনি যদি এটি কোনও ফর্মটিতে না রাখেন তবে কোড thisএকটি ব্যতিক্রম তৈরি করবে।


1

ফর্ম সরানোর ইভেন্টে এটি যুক্ত করুন:

private void Frm_Move (object sender, EventArgs e)
{
    Top = 0; Left = 0;
    Size = new System.Drawing.Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
}

1

আমি জিংড আইডিয়াতে কাজ করেছি এবং এটি ব্যবহার সহজ করে তুলেছি ।

আমিও পূর্ণস্ক্রিন মোডে টগল করার জন্য স্ট্যান্ডার্ড এফ 11 কী যুক্ত করেছি ।

সেটআপ

সবকিছু এখন সম্পূর্ণ স্ক্রিন শ্রেণিতে রয়েছে, সুতরাং আপনার ফর্মটিতে আপনাকে ভেরিয়েবলগুলির একটি গুচ্ছ ঘোষণা করতে হবে না। আপনি কেবলমাত্র আপনার ফর্মের নির্মাতাতে একটি পূর্ণস্ক্রিন অবজেক্টটি ইনস্ট্যান্ট করুন:

FullScreen fullScreen;

public Form1()
{
    InitializeComponent();
    fullScreen = new FullScreen(this);
}

দয়া করে নোট করুন এটি অনুমান করে আপনি ফর্মস্ক্রিন অবজেক্ট তৈরি করার সময় ফর্মটি সর্বাধিক নয়।

ব্যবহার

আপনি পূর্ণ স্ক্রিন মোড টগল করতে কেবল সংঘর্ষের ফাংশনগুলির একটি ব্যবহার করেন:

fullScreen.Toggle();

বা আপনার যদি স্পষ্টভাবে এটি পরিচালনা করতে হয়:

fullScreen.Enter();
fullScreen.Leave();

কোড

using System.Windows.Forms;


class FullScreen
{ 
    Form TargetForm;

    FormWindowState PreviousWindowState;

    public FullScreen(Form targetForm)
    {
        TargetForm = targetForm;
        TargetForm.KeyPreview = true;
        TargetForm.KeyDown += TargetForm_KeyDown;
    }

    private void TargetForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyData == Keys.F11)
        {
            Toggle();
        }
    }

    public void Toggle()
    {
        if (TargetForm.WindowState == FormWindowState.Maximized)
        {
            Leave();
        }
        else
        {
            Enter();
        }
    }
        
    public void Enter()
    {
        if (TargetForm.WindowState != FormWindowState.Maximized)
        {
            PreviousWindowState = TargetForm.WindowState;
            TargetForm.WindowState = FormWindowState.Normal;
            TargetForm.FormBorderStyle = FormBorderStyle.None;
            TargetForm.WindowState = FormWindowState.Maximized;
        }
    }
      
    public void Leave()
    {
        TargetForm.FormBorderStyle = FormBorderStyle.Sizable;
        TargetForm.WindowState = PreviousWindowState;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.