最终目标是将工具提示添加到ListBox中的对象。我发现了一些这样做的例子,即:
private void OnListBoxMouseMove ( object sender, MouseEventArgs e )
{
string strTip = "";
// Get the item
int nIdx = listBox1.IndexFromPoint(e.Location);
if ((nIdx >= 0) && (nIdx < listBox1.Items.Count))
strTip = listBox1.Items[nIdx].ToString();
toolTip1.SetToolTip(listBox1, strTip);
}
但是,我的页面将其作为System.Windows.Input.MouseEventArgs
对象而不是Systems.Windows.Forms
放置,因此e.Location
不存在。
反正有从正确的名称空间接收此事件吗?另一个因素可能是ListBox位于System.Windows.Controls
命名空间中?
答案 0 :(得分:0)
为了实现最终目标,为列表框中的每个项目添加工具提示,我只是将事件处理程序添加到xmal中的列表框中。
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="MouseEnter" Handler="mouseEnterMethodName"></EventSetter>
</Style>
</ListBoxItemTemplate>
然后在cs中将发送方简单地转换为ListBoxItem,然后将ListBoxItem.ToolTip设置为所需的任何值。了解WPF和Winforms在不同的命名空间中工作非常有用。谢谢大家!
答案 1 :(得分:-1)
我相信您正在使用WPF,这应该是您正在寻找的答案:
Displaying a tooltip text on a listbox specific item
文章文字:
您好,如果要在列表框中的各个项目上显示工具提示,这是一种快速简便的方法。它不需要自定义控件,并且代码很小。
首先创建一个方法来处理鼠标移动事件,然后将其挂接到ListBox的MouseMove事件。您还将需要一个ToolTip对象作为表单的成员变量。创建和更新工具提示所需的代码是:
private void onMouseMove(object sender, MouseEventArgs e)
{
if(sender is ListBox)
{
ListBox listBox = (ListBox)sender;
Point point = new Point(e.X, e.Y);
int hoverIndex = listBox.IndexFromPoint(point);
if(hoverIndex >= 0 && hoverIndex < listBox.Items.Count)
{
tt.SetToolTip(listBox, listBox.Items[hoverIndex].ToString());
}
}
}
有关更多信息,请检查end of this article
第二个问题,您可以使用ToolTip.AutomaticDelay Property。