我创建了ListView
并添加了两个带有长文本的项目。
当我选择第一个项目时,第二个项目的文本被剪裁,例如" MyIte ...."。
因此,当在此项目下移动鼠标指针时,我会看到包含所有文本的工具提示。
如何禁用此工具提示?
设置属性ListView.ShowItemToolTips = false
没有帮助。
答案 0 :(得分:2)
class Undergraduate(Student):
#Initializer
def __init__(self, first_name='', last_name='', phone_number='', address=None, social_sec_num='', emailAddress='', major=0, desc='', gpa=0.0, level=''):
super().__init__(first_name, last_name, phone_number, address, social_sec_num, emailAddress, major, desc, gpa)
self.__level = level
#Mutator
def setLevel(self, level):
if (self.__level == "Freshman" or self.__level == "Sophomore" or self.__level == "Junior" or self.__level == "Senior"):
self.__level = level
else:
raise ValueError("Level must be Freshman, Sophomore, Junior, or Senior")
#Accessor
def getLevel(self):
return self.__level
#String Representation
def __str__(self):
undergraduate_string = \
"First Name: %s" %self.getFirstName() + "\n" +\
"Last Name: %s" %self.getLastName() + "\n" +\
"Phone Number: %s" %self.getPhoneNumber() + "\n" +\
"Address: %s" %self.getAddress() + "\n" +\
"Social Security Number: %s" %self.getSocialSecNum() + "\n" +\
"Email Address: %s" %self.getEmailAddress() + "\n" +\
"Major: %d" %self.getMajor() + "\n" +\
"Description: %s" %self.getDesc() + "\n" +\
"GPA: %.2f" %self.getGpa() + "\n" +\
"Level: %s" %self.getLevel()
return undergraduate_string
在收到带有ListView
lparam的WM_Notify
邮件时会显示商品工具提示。因此,要禁用工具提示,您可以处理TTN_NEEDTEXT
消息,如果控件收到该消息,则忽略它。
您可以继承ListView并覆盖ListView
,但作为另一种选择,您可以注册WndProc
以接收ListView消息,这样您就可以过滤消息。
<强>实施强>
NativeWindow
<强>用法强>
要禁用ListView的工具提示,您只需创建上述类的实例:
public class ListViewToolTipHelper : NativeWindow
{
private ListView parentListView;
private const int WM_NOTIFY = 78;
private const int TTN_FIRST = -520;
private const int TTN_NEEDTEXT = (TTN_FIRST - 10);
public struct NMHDR
{
public IntPtr hwndFrom;
public IntPtr idFrom;
public Int32 code;
}
public bool TooltipEnabled { get; set; }
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NOTIFY && !TooltipEnabled)
{
var nmHdr = (NMHDR) m.GetLParam(typeof(NMHDR));
if (nmHdr.code == TTN_NEEDTEXT)
return;
}
base.WndProc(ref m);
}
public ListViewToolTipHelper(ListView listView)
{
this.parentListView = listView;
this.AssignHandle(listView.Handle);
}
}
再次启用工具提示:
ListViewToolTipHelper helper;
helper = new ListViewToolTipHelper(this.listView1);
另一种解决方法
您可以使用此解决方法禁用helper.TooltipEnabled = true;
的工具提示,但副作用是表单中的所有其他工具提示也将以此方式禁用。
ListView