Я хотел бы остановиться на ответе Фермина, чтобы, возможно, сделать его чудесное решение чуть более ясным.
В той форме, в которой вы работаете (вероятно, в файле .Designer.cs), вам нужно добавить обработчик событий MouseMove к вашему CheckedListBox (Фермин изначально предлагал обработчик событий MouseHover, но это не сработало ).
this.checkedListBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.showCheckBoxToolTip);
Затем добавьте два атрибута класса к вашей форме, объект ToolTip и целое число, чтобы отслеживать последний флажок, подсказка которого была показана
private ToolTip toolTip1;
private int toolTipIndex;
Наконец, вам нужно реализовать метод showCheckBoxToolTip (). Этот метод очень похож на ответ Фермина, за исключением того, что я объединил метод обратного вызова события с методом ShowToolTip (). Также обратите внимание, что одним из параметров метода является MouseEventArgs. Это связано с тем, что для атрибута MouseMove требуется MouseEventHandler, который затем предоставляет MouseEventArgs.
private void showCheckBoxToolTip(object sender, MouseEventArgs e)
{
if (toolTipIndex != this.checkedListBox.IndexFromPoint(e.Location))
{
toolTipIndex = checkedListBox.IndexFromPoint(checkedListBox.PointToClient(MousePosition));
if (toolTipIndex > -1)
{
toolTip1.SetToolTip(checkedListBox, checkedListBox.Items[toolTipIndex].ToString());
}
}
}