Winforms 把長ToolTip顯示為多行

2021-08-23 15:18:09 字數 1560 閱讀 8880

tooltip

在windows

中是乙個常用的顯示資訊的手段。當tooltip

的資訊很長的時候,我們最好能夠顯示為多行。也就是當tooltip

的資訊的長度超過某一閾值的時候,最好顯示為多行。windows

是提供了這樣的api

。非常遺憾的是,winforms

到目前為止暫時還不支援多行的tooltip

。如何在winforms

中設定tooltip

的最大長度,是winforms

程式設計師經常問到的乙個問題。

windows

是通過傳送ttm_setmaxtipwidth

訊息來設定tooltip

的最大長度的。因此,我們在winforms

中可以先得到乙個tooltip

的控制代碼,然後向該控制代碼傳送訊息。這裡我們需要做兩件事: 1.

得到tooltip

的控制代碼。由於handle

是tooltip

的乙個internal

屬性,在tooltip

的外部不能直接得到。好在.net

提供了反射機制,我們可以用反射來得到乙個tooltip

的控制代碼。 2.

給tooltip

傳送訊息。winforms

沒有直接提供傳送訊息的方法,因此我們必須通過p/invoke

呼叫windows api sendmessage。

做好了這兩方面的準備,我們就可以寫出如下的**:

internal

class

utility

// send a ttm_setmaxtipwidth message to a tooltip,

// to set its maximum length

public

static

void settooltipmaxlength(tooltip tooltip, int maxlength)

} 接下來我們建立乙個winforms

專案來驗證我們的辦法是不是有效,步驟如下: 1.

建立乙個新winforms

專案;

2.為form1

新增乙個按鈕,button1

,和乙個tooltip

,tooltip1;

3.開啟屬性視窗; 4.

選擇button1

,為屬性tooltop on tooltip1

設定乙個比較長的字串; 5.

在屬性視窗選擇事件頁面,為button1

新增mouseenter

事件處理器; 6.

編輯button1_mouseenter

的**如下:

const

int maxlength = 200;

private

void button1_mouseenter(object sender, eventargs e)

7.編譯並執行; 8.

把滑鼠停在button1

上,我們發現很長的tooltip

已經顯示為多行,如下面的截圖所示:

MFC 顯示 ToolTip 資訊

今天在寫程式時遇到滑鼠懸停在控制項上方顯示資訊,經查閱資料及實踐總結如下 該功能的實現主要是用ctooltipctrl類。首先在對話方塊的標頭檔案中加入初始化語句 public 下,加入 ctooltipctrl m mytip 然後在初始化對話方塊函式中加入 m mytip.create this...

cmd 把tooltip做成符合cmd規範

給屬性賦值 把傳入的屬性值和預設屬性值進行合併 function assignattribute tooltipobj,obj 1 把預設屬性值賦給tmpobj for let key in defaultobj 2 把傳來的屬性值賦給tmpobj for let key in obj 給toolt...

echart自動輪訓顯示tooltip

echart自動輪訓顯示 tooltip 1 顯示函式 echart自動輪訓顯示 tooltip 用於輪訓顯示 echart tooltip function showtooltip highlight mychart,currentindex 1000 引數解釋 a mychart echart ...