সিস্টেম ট্রেতে অ্যাপ্লিকেশনটি ছোট করুন


114

আমার কাছে সি # এবং ভিজ্যুয়াল স্টুডিও 2010 দ্বারা চালিত একটি উইন্ডোজ ফর্ম অ্যাপ রয়েছে।

সিস্টেম ট্রেতে (টাস্কবার নয়) আমি কীভাবে আমার অ্যাপ্লিকেশনটিকে ন্যূনতম করতে পারি, তারপরে সিস্টেম ট্রেতে দ্বিগুণ ক্লিক করার পরে এটিকে ফিরিয়ে আনতে পারি? কোন ধারণা? এছাড়াও, আমি কীভাবে সিস্টেম ট্রেতে আইকনটিতে কিছু মেনু তৈরি করতে পারি এবং যখন আমি ডানদিকে ক্লিক করি, এটি লগইন, সংযোগ বিচ্ছিন্ন, সংযোগ, এর মতো কোনও মেনু দেখায়। এছাড়াও, সিস্টেম ট্রে থেকে উঠে আসা একটি বালুনের মতো দেখানোর কোনও পদ্ধতি আছে কি?

PS: আমি ইতিমধ্যে একটি বিজ্ঞপ্তি আইকন যুক্ত করেছি, তবে কীভাবে এটি ব্যবহার করতে হয় তা আমি জানি না।


এখানে আপনি দুর্দান্ত একটি নমুনা কোড ডাউনলোড করতে পারেন সহজ-talk.com/dotnet/.net-framework/…
বিকাশকারী

আপনি ফর্মের Designer.cs এ গিয়ে ইভেন্ট হ্যান্ডলারটি "নিবন্ধন" করতে বা এটির কোনওটিই কাজ করবে না নিশ্চিত হয়ে যেতে চাইছেন (আমি এটি প্রকাশ করতে পারিনি)। আপনি এটির মতো কিছু যুক্ত করে এটি করতে পারেন: এটির পুনরায় আকার দিন + নতুন সিস্টেম.এভেন্টহ্যান্ডলার (এটি.ম্যানেজমেন্টফর্ম_সিজাইজ);
ব্র্যাড

উত্তর:


149

ফর্মটির পুনরায় আকার ইভেন্টটি পরিচালনা করুন। এই হ্যান্ডেলারটিতে, আপনি ফর্মটি নূন্যতম করতে ট্রে ট্রেজে না তা টাস্কবারে আকার পরিবর্তন করতে পুনরায় আকারের ইভেন্টের মৌলিক কার্যকারিতাটিকে ওভাররাইড করুন। এটি আপনার ফর্মের পুনরায় আকার ইভেন্ট ইভেন্ট হ্যান্ডলারে নিম্নলিখিতটি দ্বারা করা যেতে পারে: ফর্মের উইন্ডোস্টেট সম্পত্তি ফর্মউইন্ডোস্টেটে সেট করা আছে কিনা তা পরীক্ষা করুন in যদি হ্যাঁ, আপনার ফর্মটি আড়াল করুন, বিজ্ঞপ্তি আইকনটি সক্ষম করুন এবং বেলুনের টিপটি দেখান যা কিছু তথ্য দেখায়। উইন্ডোস্টেটটি একবার ফর্মউইন্ডোস্টেট হয়ে যায়। নরমাল হয়ে গেলে, নোটফাইআইকন আইটেমটি তার দৃশ্যমান সম্পত্তিটিকে মিথ্যাতে সেট করে অক্ষম করে। এখন, আপনি টাস্কবারের নোটিফাইকন আইকনটিতে ডাবল ক্লিক করলে উইন্ডোটি আবার প্রদর্শিত হবে। এর জন্য নোটিফাইকন এর মাউসডুবলক্লিক ইভেন্টটি পরিচালনা করুন। এখানে আপনি শো () পদ্ধতিটি ব্যবহার করে ফর্মটি দেখান।

private void frmMain_Resize(object sender, EventArgs e)
{
    if (FormWindowState.Minimized == this.WindowState)
    {
       mynotifyicon.Visible = true;
       mynotifyicon.ShowBalloonTip(500);
       this.Hide();
    }

    else if (FormWindowState.Normal == this.WindowState)
    {
       mynotifyicon.Visible = false;
    }
}

5
আপনি Form.FormBorderStyle প্রপার্টি পরিবর্তন করতে পারেন msdn.microsoft.com/en-us/library/...
সিডি ..

tnx! এটি কাজ করেছে .. উপরের ডানদিকে এইগুলি হ্রাস করতে, বন্ধ করতে, সর্বাধিকীকরণ করতে কোনও ধারণা? tnx
চাই


tnx এটাও কাজ করেছে! এছাড়াও, যখন আমি সিস্টেম ট্রেতে আইকনটিতে দু'বার ক্লিক করি তখন উইন্ডোটি অন্যান্য অ্যাপ্লিকেশনগুলির সাথে শীর্ষে থাকে না, আমাকে প্রদর্শন করার জন্য টাস্কবারের উইন্ডোটি ক্লিক করে চেষ্টা করতে হবে। আমরা কীভাবে এটি পরিচালনা করতে পারি? tnx so much
WantIt


69

আমি পুরো সমাধানটি সম্পাদন করতে এটি পেয়েছি। উপরের উত্তরটি টাস্ক বার থেকে উইন্ডোটি সরাতে ব্যর্থ।

private void ImportStatusForm_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(3000);
        this.ShowInTaskbar = false;
    }
}

private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = true;
    notifyIcon.Visible = false;
}

এছাড়াও ফর্ম ডিজাইনার ব্যবহার করে বিজ্ঞপ্তি আইকন নিয়ন্ত্রণের নীচের বৈশিষ্ট্যগুলি সেট করা ভাল।

this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't think there is an error.
this.notifyIcon.BalloonTipText = "[Balloon Text when Minimized]";
this.notifyIcon.BalloonTipTitle = "[Balloon Title when Minimized]";
this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); //The tray icon to use
this.notifyIcon.Text = "[Message shown when hovering over tray icon]";

7
আপনি এর this.Show();আগে নিখোঁজ রয়েছেনthis.WindowState = FormWindowState.Normal;
বিকাশকারী

1
"ব্যবহারকারী জিনিস দেয় না" এ টাইপ করুন। ;)
অ্যান্ড্রু

1
@ ডেভেলপারউজক, তিনি ফোন করছেন না বলে এটি অনুপস্থিত Hide()। তবে সেই পদ্ধতির সাথে সমস্যা হ'ল আপনি আল্ট-ট্যাব টিপলে উইন্ডোটি এখনও উপস্থিত হয়। আমি কল করতে পছন্দ করি Hide()এবং সেভাবে আপনার ShowInTaskbarসম্পত্তিটি মোটেই ব্যবহার করতে হবে না ।
অ্যান্ড্রু

@ অ্যান্ড্রু ব্যবহার করার সময় আমার সমস্যা হচ্ছে Show()এবং Hide(); লুকানোর পরে, দেখানোর পরে এবং লুকানোর পরে, এটি আর প্রদর্শিত হবে না।
newbieguy

@ নিউ বিগিগু, আমার ধারণা আপনার একটি নতুন প্রশ্ন তৈরি করা দরকার, কারণ কোনও উত্তর সম্পর্কে মন্তব্য করার জন্য আপনার সমস্যাটি উপযুক্ত নয়। আপনি যে কোডটি ব্যবহার করছেন সে হিসাবে আপনাকে আরও তথ্য সরবরাহ করতে হবে। আপনি যে উত্তরটি ব্যবহার করার চেষ্টা করেছেন তার লিঙ্ক অন্তর্ভুক্ত করতে পারেন।
অ্যান্ড্রু

17

আমি সাথে যেতে হবে

private void Form1_Resize(object sender, EventArgs e)
{
     if (FormWindowState.Minimized == this.WindowState)
     {
          notifyIcon1.Visible = true;
          notifyIcon1.ShowBalloonTip(500);
          this.Hide();    
     }
     else if (FormWindowState.Normal == this.WindowState)
     {
          notifyIcon1.Visible = false;
     }
}

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
     this.Show();
     this.WindowState = FormWindowState.Normal;
}

17

আপনার বিজ্ঞপ্তি আইকনটিতে আইকন ফাইল যুক্ত করতে ভুলবেন না বা এটি ট্রেতে উপস্থিত হবে না।


বিষয়টির সর্বাধিক প্রয়োজনীয় অংশ। আপনি কি আরও কিছু তথ্য যুক্ত করতে পারেন, কীভাবে এটি ডিফল্ট আইকনটি ব্যবহার করতে বাধ্য করবেন?
টুডো

12

এটা চেষ্টা কর

 private void Form1_Load(object sender, EventArgs e)
    {
        notifyIcon1.BalloonTipText = "Application Minimized.";
        notifyIcon1.BalloonTipTitle = "test";
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {
            ShowInTaskbar = false;
            notifyIcon1.Visible = true;
            notifyIcon1.ShowBalloonTip(1000);
        }
    }

    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        ShowInTaskbar = true;
        notifyIcon1.Visible = false;
        WindowState = FormWindowState.Normal;
    }

1
যদি আপনি কল করার পরিবর্তে কেবল টাস্কবার থেকে আড়াল করেন this.Hide()তবে আল্ট-ট্যাব করার সময় উইন্ডোটি উপস্থিত থাকে।
অ্যান্ড্রু

3

আমি আমার অ্যাপ্লিকেশনগুলিতে এই পদ্ধতিটি ব্যবহার করি এটি মোটামুটি সহজ এবং স্ব-বর্ণনামূলক তবে আমি আপনার মন্তব্যের উত্তরে আরও বিশদ দিতে পেরে খুশি।

    public Form1()
    {
        InitializeComponent();

        // When window state changed, trigger state update.
        this.Resize += SetMinimizeState;

        // When tray icon clicked, trigger window state change.       
        systemTrayIcon.Click += ToggleMinimizeState;
    }      

    // Toggle state between Normal and Minimized.
    private void ToggleMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;
        this.WindowState = (isMinimized) ? FormWindowState.Normal : FormWindowState.Minimized;
    }

    // Show/Hide window and tray icon to match window state.
    private void SetMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;

        this.ShowInTaskbar = !isMinimized;           
        systemTrayIcon.Visible = isMinimized;
        if (isMinimized) systemTrayIcon.ShowBalloonTip(500, "Application", "Application minimized to tray.", ToolTipIcon.Info);
    }

2
এটি এবং অন্যান্য সমাধানগুলির একটি সমস্যা রয়েছে: ফর্মটি যদি অন্য উইন্ডোগুলির নীচে লুকানো থাকে তবে ব্যবহারকারী সম্ভবত আইকনে ক্লিক করার সময় এটি হ্রাস করতে চান না। পরিবর্তে এটি ফোকাস করা উচিত। : এখানে আমার প্রশ্ন দেখতে পাবেন stackoverflow.com/questions/36797442/...
maf-নরম

1

সিস্টেম ট্রেতে ছবিতে ক্লিক করার পরে, আপনি ফ্রেমটি দৃশ্যমান কিনা তা যাচাই করতে পারেন এবং তারপরে আপনাকে দৃশ্যমান = সত্য বা মিথ্যা সেট করতে হবে


1

... এবং আপনার ডান ক্লিকের বিজ্ঞপ্তি মেনুটির জন্য ফর্মটিতে একটি প্রসঙ্গ মেনু যুক্ত করুন এবং এটি সম্পাদনা করুন এবং প্রতিটি কনটেক্সট মেনুয়েটেমগুলিতে ডাবল ক্লিক করে মাউসক্লিক ইভেন্টগুলি সেট করুন এবং তারপরে নোটিফিকন সম্পত্তিতে কনটেক্সটমেনুস্ট্রিপ নির্বাচন করে notifyicon1 এ সংযুক্ত করুন।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.