zoukankan      html  css  js  c++  java
  • 关于wpf中popup跟随鼠标移动显示

    最近在做一个画图工具,里面有一个功能是需要实现,当鼠标移动的时候在,鼠标的旁边显示坐标信息。

    第一反应是想到了tooltip,但是tooltip有许多的限制,查询资料的过程中看到了popup,popup比tooltip更加灵活,下面讲讲tooltip跟popup的区别:

    1.tooltip会自动显示,自动隐藏,而popup则需要设置IsOpen属性,并且在Popup.StaysOen属性为true时,Popup控件会一直显示,直到显式地将IsOpen属性设置为False。当Popup.StaysOen属性为false时,当用户在其他地方单击鼠标时,Popup控件就会消失。

    2.如果Popup控件的IsOpen属性设置为True时,可以通过Popup控件的PopupAnimation属性设置弹出方式,Placement属性设置弹出位置,如Placement="Mouse",表示在鼠标位置处弹出“提示框”。

    3.Popup控件不和任何控件相关联,无论在哪定义Popup标签都可以。

    下面的例子能实现鼠标在移动的时候,popup跟随鼠标移动,并显示坐标信息。

    popup部分代码:

    1 <Popup Name="pop1" StaysOpen="True" AllowsTransparency="True" FlowDirection="LeftToRight" 
    2                PopupAnimation="Fade" Placement="Mouse">
    3             <TextBlock Name="txt" Text=""  Width="90" Height="30"></TextBlock>
    4 </Popup>

    代码解释:StaysOpen="True"才能使Popup一直显示。若StaysOpen="False",那么Popup会在上一次的坐标点不动,需要单击鼠标左键才会切换

    到当前坐标点。

    后台代码:

    复制代码
    1  private void touchPad_MouseMove(object sender, MouseEventArgs e)
    2 {
    3    pop1.IsOpen = false;
    4    pop1.IsOpen = true;
    5    point = e.GetPosition(inkCanv2); 
    6    txt.Text = ("x:" + point.X.ToString() + " y:" +   point.Y.ToString());//显示鼠标当前坐标点
    7 }
    复制代码

    说明:为何要先IsOpen = false再IsOpen = false,下边有解释。http://bbs.csdn.net/topics/390770640

    摘录一下大神的原话:

    “在其他地方点击之后,pop1并不是自动关闭了,而是跑到其他控件后面去了 
    所以你再让它打开,它其实已经是打开的,而且已经在后面,所以看不到了. 
    你先让它关闭,再打开,就又跑到前面来了.”

    http://www.cnblogs.com/TomZeng/p/6698450.html

  • 相关阅读:
    2020-11-07:已知一个正整数数组,两个数相加等于N并且一定存在,如何找到两个数相乘最小的两个数?
    2020-11-06:go中,谈一下调度器。
    Python2和Python3中urllib库中urlencode的使用注意事项
    python爬虫基础
    python自动抢票
    Movist for Mac 1.4.2 破解版 | Mac上好用的视频播放器有哪些?7 款本地视频播放器实测对比
    前端自动化及优化
    移动端库
    jQuery
    JavaScript
  • 原文地址:https://www.cnblogs.com/sjqq/p/7806417.html
Copyright © 2011-2022 走看看