C# 替代标题栏按钮的工具提示文本(关闭、最大化、最小化、帮助)
我一直在尝试更改窗体主标题栏上按钮的工具提示文本,但没有成功 简而言之,我们利用Windows窗体的“帮助”按钮来实现其他用途。这很好用。问题是,当鼠标悬停在该按钮上时,会出现“帮助”工具提示,这对应用程序没有任何意义 理想情况下,可以通过某种方式更改我的应用程序的工具提示文本;然而,在这一点上,只要找到一种完全禁用工具提示的方法,我就会感到满意 我知道你可以通过修改regedit中的“UserPreferencesMask”键来禁用整个操作系统的工具提示,但是我真的希望有一种方法可以让它只影响我的应用程序 同样,理想情况下,可以用托管代码实现这一点,但我不反对链接到WindowsAPI或类似的东西C# 替代标题栏按钮的工具提示文本(关闭、最大化、最小化、帮助),c#,winforms,winapi,tooltip,winforms-interop,C#,Winforms,Winapi,Tooltip,Winforms Interop,我一直在尝试更改窗体主标题栏上按钮的工具提示文本,但没有成功 简而言之,我们利用Windows窗体的“帮助”按钮来实现其他用途。这很好用。问题是,当鼠标悬停在该按钮上时,会出现“帮助”工具提示,这对应用程序没有任何意义 理想情况下,可以通过某种方式更改我的应用程序的工具提示文本;然而,在这一点上,只要找到一种完全禁用工具提示的方法,我就会感到满意 我知道你可以通过修改regedit中的“UserPreferencesMask”键来禁用整个操作系统的工具提示,但是我真的希望有一种方法可以让它只影响
感谢您对解决此问题的任何建议 作为一种解决方法,您可以不使用“帮助”按钮,而是:添加自定义按钮
虽然不是那么完美,但它向你展示了想法。这是一个非常有趣的问题。我的第一个想法是使用GetSysMenu修改系统菜单。我试图删除并重命名“关闭”项,但关闭按钮的工具提示没有改变。然后我尝试捕获工具提示窗口的HWND,但没有成功。如果我让表单(我在Delphi中工作)显示一个名为“Test”的工具提示,我可以通过FindWindow(nil,“Test”)获取它的HWND,然后我可以在它附近发送消息WM_ 在下面的示例代码中,我使用计时器不断搜索工具提示。这对性能不利,因此您可能希望确切地知道工具提示何时出现。在这种情况下,当工具提示与客户机控件关联时,可以简单地使用OnHint事件
procedure TForm1.Timer1Timer(Sender: TObject);
var
h: HWND;
begin
h := FindWindow(nil, 'Test');
if h <> 0 then
SendMessage(h, WM_CLOSE, 0, 0);
end;
程序TForm1.Timer1Timer(发送方:TObject);
变量
h:HWND;
开始
h:=FindWindow(无,“测试”);
如果h0那么
SendMessage(h,WM_CLOSE,0,0);
结束;
但是,当工具提示与标题栏按钮关联时,存在两个问题
我当然建议避免改变标准系统设施的用途。我可以想象这会导致可访问性问题,特别是对于使用辅助软件的用户。这个解决方案并不能真正满足我的需要。我们使用第三方库(DevExpress)允许对WinForms组件进行蒙皮。在本例中绘制的按钮只是一个平面windows按钮。此外,它似乎有一些严重的闪烁问题和重画问题。您的共享示例应用程序在Windows 7操作系统中运行不完美,我的意思是它在Windows 7中消失。如果您有任何其他想法,请在此处共享它好吗?提前谢谢。