【背景】
寫了個C#的小程序,其中在Settings窗體中有些配置參數,希望在鼠標移動到對應的配置選項上,動態顯示相關的說明解釋內容。
【解決過程】
1.原先就已經知道,有些控件,是帶ToolTipText的屬性的,所以直接寫入對應提示內容就可以了。
但是現在想要實現的是帶提示內容的控件,也包括那些本身沒有ToolTip屬性的控件。
所以想要找到對應的解決辦法。
2.網上有人說,從ToolBox中拖一個ToolTip,放到對應控件上即可,我試了試,不好用。
因為有些提示內容,是想要單獨添加給某個checkbox之類的控件的,
而單獨的拖動ToopTip過去,往往只能放到比較大的面板上,比如TabPage上面,所以很不方便自定義。
3.后來參考這里:C#如何實現當鼠標移到button上時,提示該button的功能?
添加對應代碼。
再后來也找到了官網的解釋:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.tooltip?view=net-5.0
還是看官方文檔比較實在,其中也有對應sample code,供參考
ToolTip 類
定義
表示一個長方形的小彈出窗口,該窗口在用戶將指針懸停在一個控件上時顯示有關該控件用途的簡短說明。
public class ToolTip : System.ComponentModel.Component, System.ComponentModel.IExtenderProvider
- 繼承: Object --> MarshalByRefObject --> Component --> ToolTip
示例
下面的代碼示例創建類的一個實例 ToolTip ,並將該實例與在其中創建該實例的關聯 Form 。 然后,該代碼初始化延遲屬性 AutoPopDelay 、 InitialDelay 和 ReshowDelay 。 此外,類的實例 ToolTip 將 ShowAlways 屬性設置為, true
以使 ToolTip 文本始終顯示,而不管窗體是否處於活動狀態。 最后,該示例將工具提示文本與窗體上的兩個控件(和)相關聯 Button CheckBox 。 此代碼示例要求在示例中定義的方法位於 Form 包含 Button 名為的控件 button1
和 CheckBox 名為的控件 checkBox1
,並且該方法是從的構造函數中調用的 Form 。
// This example assumes that the Form_Load event handling method // is connected to the Load event of the form. private void Form1_Load(object sender, System.EventArgs e) { // Create the ToolTip and associate with the Form container. ToolTip toolTip1 = new ToolTip(); // Set up the delays for the ToolTip. toolTip1.AutoPopDelay = 5000; toolTip1.InitialDelay = 1000; toolTip1.ReshowDelay = 500; // Force the ToolTip text to be displayed whether or not the form is active. toolTip1.ShowAlways = true; // Set up the ToolTip text for the Button and Checkbox. toolTip1.SetToolTip(this.button1, "My button1"); toolTip1.SetToolTip(this.checkBox1, "My checkBox1"); }
注解
使用 ToolTip 類,可以在用戶將指針放在控件上時向用戶提供提示。 ToolTip類通常用於向用戶通知控件的預期用途。 例如,可以指定接受名稱的控件的工具提示文本 TextBox ,並指定要鍵入到控件中的名稱的格式。 除了提供提示外,還可以使用 ToolTip 類來提供運行時狀態信息。 例如, ToolTip 當用戶將指針移到 PictureBox 顯示 Internet 連接狀態的控件上時,可以使用類來顯示連接速度和行質量數據。
ToolTip類可以在任何容器中使用。 若要顯式指定容器,請使用 ToolTip(IContainer) 構造函數。 單個 ToolTip 組件通常用於為單個窗體上的多個控件創建工具提示。 創建后 ToolTip ,使用單獨的方法調用將 SetToolTip 工具提示顯示文本關聯到單個控件。 然后,當用戶將指針移到控件上時,將顯示帶有其文本的工具提示。 對於同一控件,可以多次調用, SetToolTip 以更改與該控件關聯的文本。 若要獲取與控件關聯的文本,請使用 GetToolTip 方法。若要刪除與類的實例關聯的所有工具提示文本 ToolTip ,請使用 RemoveAll 方法。
備注
對於禁用的控件,不顯示工具提示文本。 除非將 ShowAlways 屬性設置為 true
,否則在其容器處於非活動狀態時,不會顯示工具提示。
ToolTip類提供以下屬性和方法來修改工具提示的默認行為和外觀。
類別 | 關聯成員 |
---|---|
手動顯示 | Active, Show, Hide, ShowAlways, Popup, StopTimer |
工具提示計時 | AutoPopDelay, InitialDelay, ReshowDelay, AutomaticDelay, StopTimer |
Content | SetToolTip, GetToolTip, StripAmpersands, ToolTipIcon, ToolTipTitle, RemoveAll |
外觀 | BackColor, ForeColor, IsBalloon, OwnerDraw, UseAnimation, UseFading |
如果要禁用所有 ToolTip 文本,使其無法在應用程序中顯示,則可以使用 Active 屬性。 通常,工具提示是由操作系統繪制的,但若要自定義的外觀 ToolTip ,可以將屬性設置 OwnerDraw 為 true
並處理 Draw 事件。
ToolTipTitle類實現 System.ComponentModel.IExtenderProvider 接口,該接口具有一個方法 CanExtend 。 工具提示在設計時擴展相同窗體上的控件,添加 ToolTip
屬性。 有關擴展程序提供程序的詳細信息,請參閱 擴展程序提供程序。
構造函數
ToolTip() | 初始化沒有指定容器的 ToolTip 的新實例。 |
ToolTip(IContainer) | 使用指定的容器初始化 ToolTip 類的新實例。 |
屬性
Active | 獲取或設置一個值,指示工具提示當前是否活動。 |
AutomaticDelay | 獲取或設置工具提示的自動延遲。 |
AutoPopDelay | 獲取或設置當指針在具有指定工具提示文本的控件內保持靜止時,工具提示保持可見的時間期限。 |
BackColor | 獲取或設置工具提示的背景色。 |
CanRaiseEvents | 獲取一個指示組件是否可以引發事件的值。 (繼承自 Component) |
Container | 獲取包含 IContainer 的 Component。 (繼承自 Component) |
CreateParams | 獲取用於工具提示窗口的創建參數。 |
DesignMode | 獲取一個值,用以指示 Component 當前是否處於設計模式。 (繼承自 Component) |
Events | 獲取附加到此 Component 的事件處理程序的列表。 (繼承自 Component) |
ForeColor | 獲取或設置工具提示的前景色。 |
InitialDelay | 獲取或設置工具提示顯示之前經過的時間。 |
IsBalloon | 獲取或設置一個指示工具提示是否應使用氣球狀窗口的值。 |
OwnerDraw | 獲取或設置一個值,該值指示工具提示是由操作系統繪制還是由你提供的代碼繪制。 |
ReshowDelay | 獲取或設置指針從一個控件移到另一控件時,必須經過多長時間才會出現后面的工具提示窗口。 |
ShowAlways | 獲取或設置一個值,該值指示是否顯示工具提示窗口,甚至是在其父控件不活動的時候。 |
Site | (繼承自 Component) |
StripAmpersands | 獲取或設置一個值,該值確定如何處理 &。 |
Tag | 獲取或設置包含由程序員提供的數據的對象,這些數據與 ToolTip 關聯。 |
ToolTipIcon | 獲取或設置一個值,該值定義要在工具提示文本旁顯示的圖標的類型。 |
ToolTipTitle | 獲取或設置工具提示窗口的標題。 |
UseAnimation | 獲取或設置一個值,該值確定在顯示工具提示時是否應使用動畫效果。 |
UseFading | 獲取或設置一個值,該值確定在顯示工具提示時是否應使用淡入淡出效果。 |
方法
CanExtend(Object) | 如果工具提示可以向指定的目標組件提供一個擴展程序屬性,則返回 |
CreateObjRef(Type) | 創建一個對象,該對象包含生成用於與遠程對象進行通信的代理所需的全部相關信息。 (繼承自 MarshalByRefObject) |
Dispose() | 釋放由 Component 使用的所有資源。 (繼承自 Component) |
Dispose(Boolean) | 釋放由 Component 占用的非托管資源,還可以另外再釋放托管資源。 |
Equals(Object) | 確定指定對象是否等於當前對象。 (繼承自 Object) |
Finalize() | 在垃圾回收器回收 Cursor 之前,釋放非托管資源並執行其他清理操作。 |
GetHashCode() | 作為默認哈希函數。 (繼承自 Object) |
GetLifetimeService() | 檢索控制此實例的生存期策略的當前生存期服務對象。 (繼承自 MarshalByRefObject) |
GetService(Type) | 返回一個對象,該對象表示由 Component 或它的 Container 提供的服務。 (繼承自 Component) |
GetToolTip(Control) | 檢索與指定控件關聯的工具提示文本。 |
GetType() | 獲取當前實例的 Type。 (繼承自 Object) |
Hide(IWin32Window) | 隱藏指定的工具提示窗口。 |
InitializeLifetimeService() | 獲取生存期服務對象來控制此實例的生存期策略。 (繼承自 MarshalByRefObject) |
MemberwiseClone() | 創建當前 Object 的淺表副本。 (繼承自 Object) |
MemberwiseClone(Boolean) | 創建當前 MarshalByRefObject 對象的淺表副本。 (繼承自 MarshalByRefObject) |
RemoveAll() | 移除當前與工具提示組件關聯的所有工具提示文本。 |
SetToolTip(Control, String) | 使工具提示文本與指定的控件相關聯。 |
Show(String, IWin32Window) | 設置與指定控件關聯的工具提示文本,然后以模式方式顯示工具提示。 |
Show(String, IWin32Window, Int32) | 設置與指定控件關聯的工具提示文本,然后在指定時間段內保持該工具提示的顯示。 |
Show(String, IWin32Window, Int32, Int32) | 設置與指定控件關聯的工具提示文本,然后在指定的相對位置以模式方式顯示該工具提示。 |
Show(String, IWin32Window, Int32, Int32, Int32) | 設置與指定控件關聯的工具提示文本,然后在指定的相對位置和在指定的時間段內保持該工具提示的顯示。 |
Show(String, IWin32Window, Point) | 設置與指定控件關聯的工具提示文本,然后在指定的相對位置以模式方式顯示該工具提示。 |
Show(String, IWin32Window, Point, Int32) | 設置與指定控件關聯的工具提示文本,然后在指定的相對位置和在指定的時間段內保持該工具提示的顯示。 |
StopTimer() | 停止用於隱藏所顯示工具提示的計時器。 |
ToString() | 返回此控件的字符串表示形式。 |
事件
適用於
產品 | 已引入 |
---|---|
.NET | 5.0 |
.NET Core | 3.0 |
.NET Framework | 1.1 |