[C#] 使 ToolTip 一直显示 (在 WinForm 与 WPF 中的差异解决方案)
需求
自己绘制的UI,检测鼠标位置,适时显示出 ToolTip
1 WinForm 的 ToolTip
// Member define:
private ToolTip _toolTip = new ToolTip(new Container());
// constructor: initialize
this._toolTip.AutoPopDelay = 100;
this._toolTip.ShowAlways = true;
// MouseMove Event: logic-process
// On some condition:
this._toolTip.ToolTipTitle = "Title Of ToolTip";
this._toolTip.SetToolTip("Content String Here!");
一个ShowAlways属性就可以了。
逻辑就放在MouseMove中实时判断,
符合条件就调用最后那两句。
(当然,按需改成动态数据)
2 WPF 的 ToolTip
检索了一圈没有特别好的解决办法,总是出现问题
在对象控件的MouseMove事件中设置ToolTip的位置
How make a tooltip follow the mousepointer
在首次显示关闭前一直活动鼠标的话位置显示倒是没有问题,
但不活动直到显示完【首次显示】就会关闭,设IsOpen=True会出现位置不对的情况另一种方案就是不用 ToolTip,改用 Popup
How can I display a tooltip constantly while a control is focused?
那样的话需要单独设一些样式。
还是用回ToolTip再尝试解决一下。相信多试试办法总会有的。
XAML文件:
<Canvas ToolTipService.ShowDuration="0" ToolTipService.InitialShowDelay="0" ToolTipService.BetweenShowDelay="0" MouseMove="MainCanvas_MouseMove">
<Canvas.ToolTip>
<ToolTip x:Name="tip" PlacementTarget="{Binding ElementName=MainCanvas}" Content="A tooltip!" Visibility="Collapsed"></ToolTip>
</Canvas.ToolTip>
</Canvas>
ToolTipService.ShowDuration="0"
让首次显示时长为0,就解决了这个问题。
配合手动控制ToolTip的Visibility属性。
后台代码:
// Position:
tip.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;
tip.HorizontalOffset = e.GetPosition((IInputElement)sender).X + 10;
tip.VerticalOffset = e.GetPosition((IInputElement)sender).Y + 10;
// logic for Show/Hide:
tip.Visibility = showTip ? Visibility.Visible : Visibility.Collapsed;
// Be open constantly while mouse-moving:
tip.IsOpen = true;
[C#] 使 ToolTip 一直显示 (在 WinForm 与 WPF 中的差异解决方案)的更多相关文章
- 在Winform或WPF中System.Diagnostics.Process.Start的妙用
原文:在Winform或WPF中System.Diagnostics.Process.Start的妙用 我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑 ...
- GMap.Net开发之在WinForm和WPF中使用GMap.Net地图插件
GMap.NET是什么? 来看看它的官方说明:GMap.NET is great and Powerful, Free, cross platform, open source .NET contro ...
- GMap.Net解决方案之在WinForm和WPF中使用GMap.Net地图插件的开发
在做地理位置相关的开发时,总是面临高额地图引擎费用让大部分用户望而却步,加之地图数据又是天价,那么GMap.NET就是首选了,它本身就是开源免费,服务器可以在本地缓存,以后访问时就可以直接访问. 可以 ...
- WinForm和WPF中注册热键
由于.Net没有提供专门的类库处理热键,所以需要直接调用windows API来解决. HotKey为.NET调用Windows API的封装代码,主要是RegisterHotKey和Unregist ...
- C# 在winform或者wpf中显示控制台窗口
这儿需要使用两个系统函数: BOOL WINAPI FreeConsole(void); //// 关闭控制台窗口,参考:http://msdn.microsoft.com/en-us/library ...
- 基于Winform、WPF等的客户端文件下载
有时候,我们用C#写一些客户端应用程序需要从服务器下载一些资源,如图片.dll.配置文件等.下面就来说一下,在Winform及WPF中如何下载文件. 我们的资源大多放在自己的网站上,或者从其他网站下载 ...
- winform,wpf全屏 还显示任务栏的解决方法
原文:winform,wpf全屏 还显示任务栏的解决方法 以wpf为例: 全屏代码: this.Topmost = true; this.WindowStyle = System.Windows.Wi ...
- CentOS6.8 使man支持显示中文
1.安装显示中文的man命令 wget https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz ...
- FusionCharts:tooltip分行显示
FusionCharts:tooltip分行显示 tooltip分行显示:如果tooltip过长,可分行显示,在tooltip中增加{br} <chart> <set label=' ...
随机推荐
- Soldiers Sortie
这部2006年上映的作品豆瓣评分9.3,时至今日仍然有人乐此不疲地讨论剧情和启发,我想称之为经典应该不算过分. 这部剧我至少完整看过3遍,随着阅历增加,对某些角色的体会也变得更深刻. 许三多 许三多是 ...
- 带权并查集--hdu3047 ZJnu stadium
题意:给出一个n,m,n表示的是有n 个人,m表示的是 有m 对关系: 接下来输入的就是这m对关系,a,b,x:表示的是a,b相距x个距离:然后判断输入的是否与这个数的上面的数信息一致, 输出不一致的 ...
- ln命令:软链接与硬链接的区别与应用
ln命令:软链接与硬链接的区别与应用 摘要 Linux系统中,链接是一个十分常见且实用的文件处理命令,它分为软链接和硬链接两种类型.软链接类似于Windows中的快捷方式,硬链接又有着与原文件保持同步 ...
- mysql查询表内所有字段名和备注
select distinct column_name as 字段名,column_comment as 字段备注 from information_schema.columns where tabl ...
- 送你一份Redis书单,以后使用缓存的问题不用再问我啦!
点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书!
- 基于胜率矩阵的PageRank排序
在做博弈模型评估的时候,遇到一个问题是如何评价多个模型的优劣.例如我有训练好的三个围棋模型A,B,C,两两之间对打之后有一个胜负关系,如何对这三个模型进行排序呢?通常对于人类选手这种水平有波动的情 ...
- .Net Core微服务化ABP之六——处理Authentication
上篇中我们已经可以实现sso,并且为各个服务集成sso认证.本篇处理权限系统的角色问题,权限系统分两层,第一层为整体系统角色权限,区分app用户.后台用户.网站用户的接口权限,第二层为业务系统权限,对 ...
- 设计模式之GOF23装饰模式
装饰模式decorator 作用: -动态的为一个对象增加新功能 -装饰模式是一种用于代替继承的技术,无需通过增加子类就能扩展对象的新功能,适用对象的组合关系代替继承关系,更加灵活,同时避免类型体系的 ...
- [hdu5445 Food Problem]多重背包
题意:一堆食物,有价值.空间.数量三种属性,一些卡车,有空间,价格,数量三种属性.求最少的钱(不超过50000)买卡车装下价值大于等于给定价值的食物,食物可以拆开来放. 思路:这题的关键是给定的条件: ...
- [hdu5033]单调队列
题意:x轴上有n棵树,询问你站在某个点的视角.从左至右,单调队列(类似凸包)维护下.我强迫症地写了个模板QAQ #include <iostream> #include <cstdi ...