[英]System Tray Icon
好吧,首先我剛開始使用C#,所以我不是那里最熟練的程序員。 好的,所以這是我的問題,對你們來說可能看起來很愚蠢;)
我有一個簡單的應用程序,朋友邀請我這樣做。 到目前為止,我已經管理了一些谷歌,但我堅持這一點。 該應用程序運行良好,最小化到系統托盤,並從系統托盤最大化,這是好的。 但是,當我從該應用程序打開第二個表單時,它會在系統托盤中創建另一個圖標,並在每次打開另一個表單時開始復制。 所以最終我有很多圖標,所有圖標都是主窗體的單獨實例。 系統托盤事件
private void notifyIcon_systemTray_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (FormWindowState.Minimized == WindowState)
{
Show();
WindowState = FormWindowState.Normal;
}
}
private void CronNecessityForm_Resize(object sender, EventArgs e)
{
notifyIcon_systemTray.Visible = true;
if (FormWindowState.Minimized == WindowState)
Hide();
}
private void restoreContextMenuItem_Click(object sender, EventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
}
打開表格:
private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
{
CronPreferences.formPreferences CronPreferences = new CronPreferences.formPreferences();
CronPreferences.Show();
}
關閉它:
private void button2_Click(object sender, EventArgs e)
{
this.Hide();
}
如何將所有表單映射到系統托盤中的相同圖標?
您將需要一個他們都可以訪問的單個全局托盤圖標。 通過使用在類的不同實例中保持不變的靜態變量來執行此操作。
然后,如果你想:
如果我做對了,你只想保持應用程序的一個實例運行。 在這種情況下,您的標題有點誤導,因為您的問題與托盤圖標或多個表單無關。
另一方面,如果您的應用程序中確實有一個主窗體 ,它會打開第二個窗體 (創建托盤圖標),在這種情況下,您只需要確保第二個窗體僅實例化一次:
public class MainForm
{
private SecondForm _secondForm;
public void OpenSecondForm()
{
// create it only once
if (_secondForm == null)
_secondForm = new SecondForm();
// otherwise just show it
_secondForm.Show();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.