2012-11-29 12 views
11

पर सिस्टम ट्रे को छोटा करें हाय मेरे सी # एप्लिकेशन में मैं सिस्टम ट्रे पर एप्लिकेशन को कम करने की कोशिश कर रहा हूं, जब फॉर्म बंद हो जाता है। कोड मैंने कोशिश की है।सी #

public void MinimizeToTray() 
    { 
     try 
     { 
      notifyIcon1.BalloonTipTitle = "Sample text"; 
      notifyIcon1.BalloonTipText = "Form is minimized"; 

      if (FormWindowState.Minimized == this.WindowState) 
      { 
       notifyIcon1.Visible = true; 
       notifyIcon1.ShowBalloonTip(500); 
       this.Hide(); 
      } 
      else if (FormWindowState.Normal == this.WindowState) 
      { 
       notifyIcon1.Visible = false; 
      } 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

    } 

और मैं समापन घटना बनाने के लिए विधि को बुला रहा हूं। लेकिन समस्या यह है कि यह ट्रे को कम नहीं कर रहा है। यह सिर्फ फॉर्म बंद कर रहा है।

+0

जब फॉर्म बंद या कम किया जा रहा है? – Danpe

+0

क्या आप करीबी घटना को रद्द/रोक रहे हैं? यदि इस निष्पादन के बाद ऐप बंद हो जाता है तो यह कोड अधिक मदद नहीं करेगा। –

+0

जब यह बंद हो गया। – Rakesh

उत्तर

10

प्रपत्र बंद घटना में एक घटना लिखें।

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
     e.Cancel = true;       
     Hide(); 
} 

और दिखाने के लिए अधिसूचना आइकन के लिए कस्टम मेनू पट्टी का उपयोग करके लिखें।

+3

को कन्स्ट्रक्टर में लाइन जोड़ने की आवश्यकता है: यह। FormClosing + = यह।Form1_FormClosing; – temple

1

आपको FormClosing ईवेंट रद्द करना चाहिए और फिर अपना MinimizeToTray() फ़ंक्शन कॉल करना चाहिए।

यह CancelFormClosingEventArgs की संपत्ति के माध्यम से किया जाता है।

इसके अलावा, एक bool कहीं करने की अनुमति का उपयोग कर इस तरह आप एक File > Exit मेनू या कुछ और उपयोग कर रहे हैं के रूप में कुछ की स्थिति, में Form को बंद करने पर विचार करें:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if(!allowClosing) 
    { 
     e.Cancel = true; 
     MinimizeToTray(); 
    } 
} 
+0

AllowClosing का उपयोग करने के बजाय, आप FormClosingEventArgs: के साथ बंद करना चुन सकते हैं यदि (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true; यह। WindowState = FormWindowState.Minimized; } –

0

आपको फॉर्मक्लोसिंग-इवेंट का उपयोग करने की आवश्यकता है।

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
      myNotifyIcon.Visible = true; 
      this.Hide(); 
      e.Cancel = true; 
    } 
} 

यह programmaticaly प्रपत्र को बंद करने की अनुमति देगा:

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) { 
    e.Cancel = true; 
    MinimizeToTray(); 
} 
29

e.Cancel = true; कोड हमेशा घटना रद्द भले ही आप कंप्यूटर को शट डाउन, लेकिन यहाँ एक कोड है कि आप में मदद करता है हो जाएगा। जब सेट को बंद करने से WindowState

+1

यह समाधान बहुत बेहतर है, क्योंकि ** अरुण कुमार गैर असीसी का समाधान ** कभी खत्म होने वाली कहानी नहीं है: डी – Ismoh

+0

मुझे अनुभव हुआ कि यदि आप आइकन की आइकन छवि को सूचित नहीं करते हैं, तो यह विंडोज़ में सिस्टम ट्रे में नहीं दिखाया गया है 8.1। – Fer

1

कम करने के लिए को कम से कम

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) { 
    e.Cancel = true; 
    WindowState = FormWindowState.Minimized; 
} 
2
namespace MinimizeTrayNotification 
    { 
     public partial class Form1 : Form 
     { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void MinimzedTray() 
    { 
     notifyIcon1.Visible = true; 
     notifyIcon1.Icon = SystemIcons.Application; 

     notifyIcon1.BalloonTipText = "Minimized"; 
     notifyIcon1.BalloonTipTitle = "Your Application is Running in BackGround"; 
     notifyIcon1.ShowBalloonTip(500); 

    } 

    private void MaxmizedFromTray() 
    { 
     notifyIcon1.Visible = true; 
     notifyIcon1.BalloonTipText = "Maximized"; 
     notifyIcon1.BalloonTipTitle = "Application is Running in Foreground"; 
     notifyIcon1.ShowBalloonTip(500); 


    } 



    private void Form1_Resize(object sender, EventArgs e) 
    { 
     if(FormWindowState.Minimized==this.WindowState) 
     { 
     MinimzedTray(); 
     } 
     else if (FormWindowState.Normal == this.WindowState) 
     { 

      MaxmizedFromTray(); 
     } 
     } 

    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) 
    { 
     this.WindowState = FormWindowState.Normal; 
     Form1 frm = new Form1(); 
     frm.Show(); 
     MaxmizedFromTray(); 


    } 

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

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (e.CloseReason == CloseReason.UserClosing) 
     { 
      e.Cancel = true; 
      this.WindowState = FormWindowState.Minimized; 
      this.ShowInTaskbar = false; 
      this.Hide(); 

     } 


    } 

    private void notifyIcon1_Click(object sender, EventArgs e) 
    { 
     this.WindowState = FormWindowState.Normal; 
     notifyIcon1.BalloonTipText = "Normal"; 
     notifyIcon1.ShowBalloonTip(500); 
    } 
} 

}

+1

मुझे यकीन है कि कोड काम करेगा, लेकिन यह क्या हो रहा है इसके बारे में टिप्पणी या दो के साथ और भी मददगार होगा! – leo

+0

सूचित करने के लिए Icon1_MouseDoubleClick, आपको किसी फॉर्म का नया उदाहरण बनाने के बजाय 'this.Show()' का उपयोग करना चाहिए। आप शायद अपने फॉर्मों को अपने मूल्यों को बनाए रखने के लिए नियंत्रण चाहते हैं। – prospector

0

आप इस तरह के micsoft Form Closing Event रूप FormClosing घटना संभाल कर सकते हैं के रूप में सी #

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     // Determine if text has changed in the textbox by comparing to original text. 
     if (textBox1.Text != strMyOriginalText) 
     { 
      // Display a MsgBox asking the user to save changes or abort. 
      if (MessageBox.Show("Do you want to save changes to your text?", "My Application", 
       MessageBoxButtons.YesNo) == DialogResult.Yes) 
      { 
       // Cancel the Closing event from closing the form. 
       e.Cancel = true; 
       // Call method to save file... 
      } 
     } 
} 
के उदाहरण के बाद