回答
您可以使用Mouse Enter Event
linkLabel1.MouseEnter += new EventHandler(linkLabel1_MouseEnter);
private void linkLabel1_MouseEnter(object sender, EventArgs e)
{
MessageBox.Show("Mouse is within link area");
}
我們可以用鼠標懸停嗎? –
@SudhakarTillapudi就我所知。它將與鼠標輸入有不同的效果。在鼠標懸停。鼠標必須超過控制幾秒鐘,但鼠標輸入立即 – 2013-12-03 18:31:16
這是不正確的。這將告訴你鼠標是否在控制範圍內,而不是它是否實際在鏈路本身。一個例子是,如果您有一個LinkLabel控件停靠在大容器的頂部或底部,並將其左對齊或右對齊,以便控件覆蓋整個容器寬度,但其內部的鏈接不對齊。如果將鼠標光標移動到除文本之外的控件的空白區域,則「MouseEnter」事件仍會觸發。 –
這不能做。在撰寫本文時,the other answer中建議的MouseEnter
事件將在鼠標進入控制區域時觸發,而不管它是否實際上是鏈接文本。
如果您的LinkLabel
控件的邊界相對於其內容較小,那麼MouseEnter
事件可能運行得足夠好。但是,如果(例如)當鼠標懸停在鏈接文本上並且文本中的控件周圍存在大量區域時,您希望鏈接改變顏色,則此方法無效。
在一個有點不相干的筆記上,這也可以防止您檢測LinkLabel
中的哪個鏈接目前正在被覆蓋,如果您有多個鏈接,如here所述。
有人想知道更多的細節:LinkLabel.LinkArea
財產不是你正在尋找,要麼。這隻會確定LinkLabel
中的哪些字符實際上是鏈接的一部分,而不是它們在屏幕上佔用的實際區域。要結束,唯一能夠獲得所需功能的方法是實現自己的自定義控件,該控件的行爲與控件的行爲相似,但添加了您的方法和/或屬性需要。
由於原來的LinkLabel具有保護功能PointInLink這並不難做到:
using System;
using System.Windows.Forms;
namespace MyControlNameSpace
{
/// <summary>
/// Data for a HoveredLinkChanged-Handler.
/// </summary>
public class HoveredLinkChangedEventArgs : EventArgs
{
private readonly LinkLabel.Link m_Link;
/// <summary>
/// Creates data for a HoveredLinkChanged-Handler
/// </summary>
/// <param name="link">the Link, with the mouse pointer over it</param>
public HoveredLinkChangedEventArgs(LinkLabel.Link link)
{
m_Link = link;
}
/// <summary>
/// Returns the hovered Link
/// </summary>
public LinkLabel.Link HoveredLink
{
get { return m_Link; }
}
}
/// <summary>
/// The structure of a HoveredLinkChanged-Handler
/// </summary>
public delegate void HoveredLinkChangedEventHandler(
object sender, HoveredLinkChangedEventArgs e);
/// <summary>
/// Adds to LinkLabel the possiblity to react on changes
/// of the hovered Link (e.g. to alter a TooltipText).
/// </summary>
public class LinkLabelEx : LinkLabel
{
private Link m_HoveredLink;
/// <summary>
/// Occurs, when another Link is hovered.
/// </summary>
public event HoveredLinkChangedEventHandler HoveredLinkChanged;
/// <summary>
/// Raises the HoveredLinkChanged event
/// </summary>
/// <param name="hoveredLink">the hovered Link</param>
protected virtual void OnHoveredLinkChanged(Link hoveredLink)
{
if (HoveredLinkChanged != null)
HoveredLinkChanged(this,
new HoveredLinkChangedEventArgs(hoveredLink));
}
/// <summary>
/// Raises the Control.OnMouseMove(MouseEventArgs) event.
/// </summary>
/// <param name="e">a MouseEventArgs containing the event data</param>
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
Link currentLink = PointInLink(e.X, e.Y);
if (Equals(currentLink, m_HoveredLink)) return;
m_HoveredLink = currentLink;
OnHoveredLinkChanged(m_HoveredLink);
}
}
}
再就是隻有兩件事情剩下要做的:
添加事件處理程序到您的LinkLabelEx,如:
linkLabelEx1.HoveredLinkChanged += linkLabelEx1_HoveredLinkChanged;
設置根據EventArgs的給出的鏈接,例如的ToolTipText:
void linkLabelEx1_HoveredLinkChanged(object sender, HoveredLinkChangedEventArgs e)
{
string ttt = e.Link == null
? string.Empty
: e.Link.Description;
toolTip1.SetToolTip((Control)sender, ttt);
}
- 1. 檢測鼠標在iframe上的位置
- 2. 檢測鼠標點擊位置
- 3. 檢測鼠標位置是否在一組位置規則內?
- 4. 檢索鼠標位置
- 5. C#XNA鼠標位置
- 6. 鼠標點擊位置上的PictureBox未檢測到在標籤
- 7. wxPython:檢測鼠標點擊位圖
- 8. 使用Java檢測鼠標在屏幕上的任意位置
- 9. 鼠標位置()
- 10. 設置鼠標位置不工作c#
- 11. 檢測光標位置
- 12. 檢查屏幕上的鼠標位置
- 13. C#Monogame - 檢測鼠標暫停
- 14. C#WinForms trayapp MenuItem鼠標懸停檢測
- 15. 如何檢測任意鼠標位置(x,y)上的元素?
- 16. 打開圖層3的鼠標位置檢測工作不
- 17. 如何在循環中檢測鼠標在datagrid上的位置?
- 18. 在Firefox中檢測鼠標在Firefox中的位置
- 19. 如何檢測jQuery中的鼠標點擊位置
- 20. 如何讓我的組件檢測鼠標位置?
- 21. 在matplotlib畫布上檢測相對鼠標位置
- 22. 鼠標位置並點擊sfml中的檢測
- 23. 如何在java中檢測鼠標位置
- 24. 加載Silverlight窗口後檢測鼠標位置
- 25. 如何檢測我的鼠標位置是否在矩形c#內?
- 26. jQuery鼠標位置
- 27. Vb.net鼠標位置
- 28. 在鼠標位置
- 29. C++檢查光標位置
- 30. Monogame/C# - 鼠標位置閃爍
你的意思是鼠標懸停? –
這是winform,asp.net,wpf嗎? – 2013-12-03 18:23:42
winform和鼠標在 – williamtroup