Можете ли вы сказать мне, как выполнить этот код с помощью указателя мыши в моем списке?
Чтобы найти местоположение мыши в событии при наведении, сначала вы можете использовать Control.MousePosition
, чтобы найти указатель мыширасположение экрана, а затем, используя ListBox.PointToClient
, преобразуйте его в положение мыши на элементе управления.Тогда вся остальная логика похожа на ту, что у вас уже есть:
$point = $listBox.PointToClient([System.Windows.Forms.Control]::MousePosition)
$index = $listBox.IndexFromPoint($point)
if($index -ge 0) {
$toolTip.SetToolTip($listBox, $listBox.GetItemText($listBox.Items[$index]))
}
else {
$toolTip.SetToolTip($listBox, "")
}
Просто, чтобы сделать ее немного лучше, я использовал ListBox.GetItemText
метод, который лучше, чем ToString
метод предметов.В случае, если вы устанавливаете сложный объект в качестве источника данных в списке и задаете свойство отображаемого элемента, он извлекает текст элемента на основе отображаемого имени, в противном случае возвращается ToString
элемента.
Также donне забудьте, что для обработки события MouseHover
необходимо использовать Add_MouseHover
.