[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=' ...
随机推荐
- NodeJs mysql 开启事务
如题:node后台使用mysql数据库,并使用事务来管理数据库操作. 这里主要讲一个事务的封装并写了一个INSERT 插入操作. code: 基础code: db.config.js const my ...
- C++编程入门--No.6
题目:用*号输出字母C的图案. 程序分析:可先用'*'号在纸上写出字母C,再分行输出. #include <bits/stdc++.h> using namespace std; int ...
- 图论--Floyd总结
Key word: ①最短路 ②传递闭包:大小关系 数值关系 先后关系 联通关系 ③floyd变形 ④实现方式:插点发法 ⑤思想:动态规划 1.最短路: 最短路 ...
- shell之路 shell核心语法【第一篇】shell初识
shell简介 1.Shell是Unix的脚本语言,是与 Unix/Linux 交互的工具,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度 2.Shell是系统命令+程序逻辑的 ...
- redis系列之5----redis实战(redis与spring整合,分布式锁实现)
本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...
- 《新版阿里巴巴Java开发手册》提到的三目运算符的空指针问题到底是个怎么回事?
最近,阿里巴巴Java开发手册发布了最新版--泰山版,这个名字起的不错,一览众山小. 新版新增了30+规约,其中有一条规约引起了作者的关注,那就是手册中提到在三目运算符使用过程中,需要注意自动拆箱导致 ...
- 树形dp compare E - Cell Phone Network POJ - 3659 B - Strategic game POJ - 1463
B - Strategic game POJ - 1463 题目大意:给你一棵树,让你放最少的东西来覆盖所有的边 这个题目之前写过,就是一个简单的树形dp的板题,因为这个每一个节点都需要挺好处 ...
- java23种设计模式——泡MM版
一.创建型模式 1.FACTORY:追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,固然口味有所不同,但不管你带MM往麦当劳或肯德基,只管向服务员说;来四个鸡翅就行了.麦当劳和肯德 ...
- Linux共享库简单总结
库 静态库 编译的二进制会重新包含一份静态库的副本 共享库 编译 gcc -shared -o file.c -fPIC 链接 ld ld-linux.so.2 可执行程序–>动态依赖表 流程: ...
- C语言进阶_变量属性
人们总说时间会改变一些,但实际上这一切还得你自己来. 一.概念详解 变量:计算机语言中储存计算结果,其值可以被修改.通过变量名来访问计算机中一段连续的内存空间. 属性:区别于同类事物的特征. C语言中 ...