[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

检索了一圈没有特别好的解决办法,总是出现问题

那样的话需要单独设一些样式。

还是用回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,就解决了这个问题。

配合手动控制ToolTipVisibility属性。

后台代码:

                // 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;

原文地址:https://www.cnblogs.com/CoderMonkie/p/tooltip-in-wpf.html

时间: 2024-08-12 21:54:37

[C#] 使 ToolTip 一直显示 在 WinForm 与 WPF 中的差异的相关文章

C# 在winform或者wpf中显示控制台窗口

这儿需要使用两个系统函数: BOOL WINAPI FreeConsole(void); //// 关闭控制台窗口,参考:http://msdn.microsoft.com/en-us/library/ms683150%28VS.85%29.aspx BOOL WINAPI AllocConsole(void); //// 打开控制台窗口,参考:http://msdn.microsoft.com/en-us/library/ms681944%28VS.85%29.aspx对应DLL:Kernel

GMap.Net解决方案之在WinForm和WPF中使用GMap.Net地图插件的开发

在做地理位置相关的开发时,总是面临高额地图引擎费用让大部分用户望而却步,加之地图数据又是天价,那么GMap.NET就是首选了,它本身就是开源免费,服务器可以在本地缓存,以后访问时就可以直接访问. 可以广泛用于保密单位的空间数据服务应用,如军队.武警.公安等保密单位.下面我们就开始我们的GMap.NET的之旅吧! 什么是GMap.NET? 来看看它的官方说明:GMap.NET is great and Powerful, Free, cross platform, open source .NET

在Winform或WPF中System.Diagnostics.Process.Start的妙用

我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案是使用System.Diagnostics.Process.Start().它的作用是调用外部的命令. 先来看看它的调用方法:Process.Start () Process.Start (ProcessStartInfo) Process.Start (String)Process.Start (Strin

WinForm和WPF中注册热键

由于.Net没有提供专门的类库处理热键,所以需要直接调用windows API来解决. HotKey为.NET调用Windows API的封装代码,主要是RegisterHotKey和UnregisterHotKey class HotKey { /// <summary> /// 如果函数执行成功,返回值不为0. /// 如果函数执行失败,返回值为0.要得到扩展错误信息,调用GetLastError..NET方法:Marshal.GetLastWin32Error() /// </su

基于Winform、WPF等的客户端文件下载

有时候,我们用C#写一些客户端应用程序需要从服务器下载一些资源,如图片.dll.配置文件等.下面就来说一下,在Winform及WPF中如何下载文件. 我们的资源大多放在自己的网站上,或者从其他网站下载资源,我们需要给客户端一个URL,先给出代码: /// <summary> /// 下载文件 /// </summary> /// <param name="URL">下载文件地址</param> /// <param name=&qu

关于Winform下DataGridView中实现checkbox全选反选、同步列表项的处理

近期接手一个winform 项目,虽然之前有.net 的经验,但是对一些控件的用法还不是很熟悉. 这段时间将会记录一些在工作中遇到的坎坷以及对应的解决办法,写出来与大家分享并希望大神提出更好解决方法来促进进步. 我也会尽可能把我查找到资料的出处引出来,以此来感恩对我提供帮助的人们. 正题如下 一.关于Winform下DataGridView中实现checkbox全选反选.同步列表项的处理 1.checkbox的添加:在设计页面选择编辑列在新添加的列中注意如下几个属性: SortMode = No

WinForm 与WPF 窗体之间的想到调用

先放置一个容器控件,并设计 好WinForm(或WPF)窗口 winform 调用 wpf ElementHost el = new ElementHost(); el.Dock = DockStyle.Fill; this.panelStation.Controls.Add(el); ucStationMess_WPF stat = new ucStationMess_WPF(); el.Child = stat; 其中,panelStation 为winform 的窗口控件 ucStatio

WinForm与WPF下跨线程调用控件

Winform下: public delegate void UpadataTextCallBack(string str,TextBox text); public void UpadtaText(string str, TextBox text) { if (text.InvokeRequired) { UpadataTextCallBack upadataTextCallBack = UpadtaText; text.Invoke(upadataTextCallBack, new obje

关于WPF中TextBox行的选择与显示的问题

声明:本文是本人在51CTO上的一篇博文,今天打算将其转载到博客园,以方便自己查阅.原文地址为:http://kestrelsaga.blog.51cto.com/3015222/1542584 最近做了一个小工具,其中用到了WPF中的TextBox控件.对于这个控件的使用,其中主要的一个功能是需要选择指定的行,并将其显示在控件可见区域的视图中(如果不在可视区域时,需要控件自动滚动到改行).在我使用时,发现一个问题,如果当我先将指定的行滚动至视图中,然后在将其选中,则经常会不稳定,有时能定位并选