Winform ToolTip位置设置

2023-12-04

我想知道是否可以通过 MouseHover 事件以某种方式在空桌面上的固定点中在应用程序表单之外找到工具提示的弹出窗口,当然事件是否对工具提示有用,不确定。或者任何其他方式(如果可能的话)

我并不是询问如何显示另一个表单作为实现此目标的选项。


您可以使用以下任一选项:

  1. 处理显示和隐藏ToolTip你自己。您可以使用MouseHover显示ToolTip在所需位置并使用MouseLeave把它藏起来。

  2. Using MoveWindowWindows API方法,强制工具提示显示在特定位置而不是默认位置。

Option 1

你可以处理MouseHover and MouseLeave您控制的事件并显示ToolTip在桌面窗口的特定位置,这样:

private void control_MouseHover(object sender, EventArgs e) 
{
    var control = (Control)sender;
    var text = toolTip1.GetToolTip(control);
    if (!string.IsNullOrEmpty(text))
        toolTip1.Show(text, control, control.PointToClient(new Point(100, 100)));
}
private void control_MouseLeave(object sender, EventArgs e)
{
    var control = (Control)sender;
    toolTip1.Hide(control);
}

Option 2

作为我之前提供的另一个选择对齐控件和工具提示的右边缘,你可以设置OwnerDraw的财产ToolTip to true并处理Draw控制和使用事件MoveWindowWindows API 方法移动ToolTip到所需位置:

[System.Runtime.InteropServices.DllImport("User32.dll")]
static extern bool MoveWindow(IntPtr h, int x, int y, int width, int height, bool redraw);
private void toolTip1_Draw(object sender, DrawToolTipEventArgs e) {
    e.DrawBackground();
    e.DrawBorder();
    e.DrawText();
    var t = (ToolTip)sender;
    var h = t.GetType().GetProperty("Handle",
      System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
    var handle = (IntPtr)h.GetValue(t);
    var location = new Point(100,100);
    MoveWindow(handle, location.X, location.Y, e.Bounds.Width, e.Bounds.Height, false);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winform ToolTip位置设置 的相关文章

随机推荐

  • 在 NumPy 中使用频率数组检索数组元素

    我有一个数字数组 a 我有第二个数组 b 指定我想要检索相应元素的次数a 如何才能实现这一目标 在这种情况下 输出的顺序并不重要 import numpy as np a np arange 5 b np array 1 0 3 2 0 d
  • Android 谷歌地图 java.lang.NoClassDefFoundError: 解析失败: Lorg/apache/http/ProtocolVersion

    我正在使用 Google 地图 Android SDK 11 6 2 也尝试过 15 0 1 但在地图显示之前出现以下崩溃 已检查清单中的API密钥 它是可用的 但仍然出现此问题 我的 targetSDk 版本为 28 是否会导致此问题 j
  • 如何获取表或视图中的列列表?

    有时 我有兴趣获取 SQL Server 2008 R2 数据库中的一个表或视图中的列列表 例如 如果您在不使用昂贵的现成产品的情况下构建数据库文档 那么它很有用 获取此信息的简单方法是什么 另一种方法是查询 INFORMATION SCH
  • 在 Unity 中打电话?

    我在我的 C 脚本中使用了 Application OpenURL tel 79011111115 出现拨号器 但未拨打电话 如果是 Java 我可以说它的工作原理如下 Intent call new Intent Intent ACTIO
  • 如果对象返回为空字符串而不是空结构,如何解组 json 对象

    我收到一些 JSON 数据 但如果对象为空 它不会返回空结构 而是返回空 字符串代替 并且在解组时 它返回一个错误 所以而不是数据 key is key 即使使用 omitempty 字段也不起作用 例子 https play golang
  • 将数据从 PostgreSQL 传输到 MySQL

    您好 有什么方法可以将表布局和数据从 Postgres 数据库自动传输到 MySQL 吗 我必须将架构和数据迁移到 MYSQL 最简单的可能是使用 Postgres 将数据库 架构和数据 导出为 SQLpg dump效用 那么import将
  • 实体框架 4:多对多关系 IQueryable 而不是 ICollection

    大家 早安 我试图首先解决我在 EF 代码中遇到的问题 我的架构如下 public class Article IUrlNode Key public Guid ArticleID get set public string Title g
  • 为什么arguments.callee.caller.name未定义?

    为什么这不提醒 http 127 0 0 1 sendRequest 可在http jsfiddle net Gq8Wd 52 var foo sendRequest function alert bar getUrl var bar ge
  • docker: MISCONF Redis配置为保存RDB快照

    与此类似的问题还有很多 例如 Redis配置为保存RDB快照 但目前无法持久保存在磁盘上 Ubuntu Server MISCONF Redis 配置为保存 RDB 快照 但目前无法保留在磁盘上 可能修改数据集的命令被禁用 但这些都不能解决
  • 具有不同构造函数参数的装饰器

    我想使用温莎城堡创建一个记录整数的类 但我想用其他类来装饰它几次 如果涉及的所有具体实体都具有可以解决的依赖关系 我可以看到这是如何工作的 但这里的情况并非如此 考虑这段代码 public interface IRecorder void
  • 通过用麦克风录制播放声音来测量扬声器音量

    我想通过播放声音并同时在本地麦克风上收听来测量系统的扬声器音量 这是针对特定应用的 准确记录的声音并不重要 重要的是区分播放声音之前和播放过程中记录的麦克风音量 这个想法是在扬声器关闭或声音太低时警告用户 如何在播放声音时录制声音并确定音量
  • jQuery Zoom 在颜色框内

    是否可以在 colorbox 中使用 Jack Moore 的 jQuery Zoom 插件 document ready function a photo zoom url photo big jpg 我很确定你可以这样做 a color
  • 我如何在 Haskell 中使用lens来复制Python的枚举?

    蟒蛇的枚举在列表上可以写成zip 0 我查看了 Control Lens Traversal 和 Control Lens Indexed 但我无法弄清楚如何使用镜头将其推广到任何合理的容器 我犹豫是否要说 可遍历 我正在猜测itraver
  • 更改对象上的修改子句错误

    我怎样才能 用达夫尼语 陈述 ensures 保证方法返回的对象将是 新的 即不会与其他地方使用的对象相同 尚未 以下代码显示了一个最小的示例 method newArray a array
  • 使用 Google GCM 发送推送通知

    我一直在关注设置 GCM 客户端应用程序教程并尝试了解他们提供的演示应用程序 但我无法理解如何使用此服务发送推送通知 上述指南引导我进入 生成 InstanceID 令牌 屏幕 其中有永无休止的进度条 该程序源码可以在这里获取 https
  • 如何将目录树添加到 ClearCase 存储库?

    我有一个包含子目录的目录树 我想将其添加到 ClearCase 存储库中 目前我需要重命名目录 对每个目录使用 CC 的 mkdir 等等 有没有办法自动执行此操作 可能是我不知道的 ClearCase 命令 或者脚本 我建议使用clear
  • 从字符串 Pandas 数据框中提取日期

    我在 pandas 数据框中有这一列 Date X 它是一个对象 我无法在这里使用 pandas to datetime 函数 我想将此列转换为 1 到 365 的范围 以便我可以进行分析 29JAN14 21 16 00 01FEB14
  • 使用 jspdf 导出 PDF 而不渲染 CSS

    我正在使用 jspdf debug js 从网站导出不同的数据 但存在一些问题 我无法让它在导出的 PDF 中渲染 CSS 如果我在导出的页面中有图像 则PDF 返回空白 有谁知道解决这个问题的方法吗 这里有一个jsfiddle显示它没有渲
  • Axhspan 始终位于图形前面

    我正在尝试用分散的点绘制一个图 我想显示 xy 计划中的特定区域 我已经了解了如何使用 axhspan 和 axvspan 但它产生的彩色区域总是隐藏我的观点 我的意思是 我可以看到我的点将 alpha 设置为不同于 alpha 的值 但它
  • Winform ToolTip位置设置

    我想知道是否可以通过 MouseHover 事件以某种方式在空桌面上的固定点中在应用程序表单之外找到工具提示的弹出窗口 当然事件是否对工具提示有用 不确定 或者任何其他方式 如果可能的话 我并不是询问如何显示另一个表单作为实现此目标的选项