C# Winform消息通知系統托盤氣泡提示框ToolTip控件

氣球狀提示框的介紹和系統通知變化

NotifyIcon控件表示系統右下角任務欄上的托盤圖標,其ShowBalloonTip方法用於顯示任務欄中一定時間的具有指定標題、消息內容和圖標的氣球狀提示框(氣泡提示框)。

也可以通過NotifyIcon屬性BalloonTipIconBalloonTipTextBalloonTipText指定相關內容。

單獨介紹它的變化,是因為在Win7及之前的系統中,該方法顯示提示為氣球狀的提示框,基本效果如下:

但是在Win10,氣球狀的提示框已經該系統本地的toast通知效果取代,也就是,使用NotifyIcon的ShowBalloonTip方法,將會顯示系統本地通知,具體效果如下:

並且notifyIcon.ShowBalloonTip(timeout)第一個參數timeout,從Windows Vista開始,此參數已經無效,通知的顯示時間基於系統的輔助功能設置,所以一般設置為0即可。

消息通知的提示

新建項目NotificationTrayToolTip,添加兩個按鈕,一個顯示,一個關閉,以及一個名為notifyIcon的NotifyIcon控件(初始可見性設置為false:notifyIcon.Visible = false;)。

設計器中為notifyIcon的Icon屬性指定一個圖標文件。

ShowBalloonTip()方法及指定消息類型

顯示氣泡提示按鈕的點擊事件中,設置notifyIcon可見,並執行ShowBalloonTip()方法,其第二個參數為標題,第三個參數為消息內容,最後一個為消息類型。

private void buttonPro1_Click(object sender, EventArgs e)
{
    notifyIcon.Visible = true;
    // timoeout參數已經無效,通知的顯示時間基於系統的輔助功能設置
    notifyIcon.ShowBalloonTip(0, "消息標題-Error", "這是一個錯誤類型的消息內容", ToolTipIcon.Error);
}

系統toast通知顯示內容對應notifyIcon控件的屬性或參數:

關閉消息提示按鈕的點擊事件代碼中,設置Visible = false關閉系統提示:

private void buttonPro2_Click(object sender, EventArgs e)
{
    notifyIcon.Visible = false;
    //notifyIcon.Visible = true;
}

notifyIcon.Visible = false會清空所有相關的系統操作中心裡面的消息通知。

NotifyIcon屬性設置消息

通過屬性也可以指定消息內容、標題、類型等:

notifyIcon.BalloonTipIcon = ToolTipIcon.Warning;
notifyIcon.BalloonTipText = "測試";
notifyIcon.BalloonTipTitle = "標題";
notifyIcon.ShowBalloonTip(0);

BalloonTipIcon不同的消息類型

ToolTipIcon消息類型圖標的取值有四種,和方法中的對應:

  • ToolTipIcon.Info
  • ToolTipIcon.Warning
  • ToolTipIcon.Error
  • ToolTipIcon.None

ToolTipText屬性

Winform中許多控件都提供有ToolTipText屬性,用於設置提示消息,用於在鼠標位於控件上方(懸停)時,顯示提示語。

通常都是容器控件的子控件項有這個屬性,用於提示不同的子項信息。

一般在設置子項控件的ToolTipText後,要想使提示生效,還需要設置父容器控件的ShowItemToolTips為true(DataGridViewShowCellToolTips屬性)。

如下,ToolStrip、MenuStrip1、ListView、DataGridView、TabControl等幾種控件啟用tip提示,並為子項設置不同的提示信息。

//必須設置ShowToolTips為true,當鼠標位於tab時顯示提示
tabControl1.ShowToolTips = true;
tabPage1.ToolTipText = "你好,我是tab提示";
dataGridView1.ShowCellToolTips = true;
dataGridView1[0, 0].ToolTipText = "單元格的tip";
toolStrip1.ShowItemToolTips = true;
toolStripLabel1.AutoToolTip = true;
toolStripLabel1.ToolTipText = "toolStrip1子項的提示";
menuStrip1.ShowItemToolTips = true;
menuStrip按鈕ToolStripMenuItem.AutoToolTip = true;
menuStrip按鈕ToolStripMenuItem.ToolTipText = "menuStrip1子項的提示";
listView1.ShowItemToolTips = true;
listView1.Items[0].ToolTipText = "我是listViewItem的提示";

接本效果如下:

但默認提供的提示文本的顯示,並不及時,並且,如果窗體不是焦點窗體,這些提示也都是無效的(而有的子項,如果是激活狀態,tip也會無效)

ToolTip提示控件顯式或主動的提示消息

通過ToolTip控件可以設置在哪個控件上顯示什麼提示信息,以及通過事件觸發的方式(比如hover、鼠標進入、鍵盤按鍵),顯式的或多種條件下,展示提示框。

一個ToolTip同時為多個控件設置提示

ToolTip.SetToolTip(Control control, String caption)方法為指定control控件設置caption提示消息。

並且,一個ToolTip可以應用多個控件。

toolTip.SetToolTip(button1, "我是按鈕1提示");
toolTip.SetToolTip(radioButton1, "單選提示,必需選擇");
toolTip.SetToolTip(buttonPro1, "使用ToolTip的提示");

顯式設置ToolTip

根據需要在事件中顯式的進行提示:

button1.MouseEnter += Button1_MouseEnter;
//...
private void Button1_MouseEnter(object sender, EventArgs e)
{
    toolTip.SetToolTip(button1, "鼠標進入提示");
}

註:消息提示是跟隨鼠標的,如果鼠標未在控件位置上方,提示也不會顯示出來。

以上就是C# Winform消息通知系統托盤氣泡提示框ToolTip控件的詳細內容,更多關於C# Winform消息通知氣泡提示框的資料請關註WalkonNet其它相關文章!

推薦閱讀: