美文网首页
控件既能被点击也能拖动窗口

控件既能被点击也能拖动窗口

作者: 雪之梦_8f14 | 来源:发表于2019-06-28 13:16 被阅读0次

WPF窗口下,有时候 既需要点击某些控件响应对应的事件, 也需要点击移动在某个控件上移动整个窗口

效果图

dragwindow.gif

源码

源码

代码

  • 需要在容器上绑定三个事件:
    PreviewMouseLeftButtonDown、PreviewMouseMove、PreviewMouseLeftButtonUp
  • 后台代码如下
  private Point _downPoint;

        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("hello");
        }

        private void TestGrid_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            var uiElement = sender as UIElement;

            _downPoint = e.GetPosition(uiElement);
        }


        private void TestGrid_OnPreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                var uiElement = sender as UIElement;
                var mouseMovePoint = e.GetPosition(uiElement);

                if (AppUtils.IsAbleToDrag(mouseMovePoint, _downPoint))
                {
                    this.DragMove();
                }
            }
        }

        private void TestGrid_OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {

            var uiElement = sender as UIElement;

            var mouseMovePoint = e.GetPosition(uiElement);

            if (AppUtils.IsAbleToDrag(mouseMovePoint, _downPoint))
            {
                e.Handled = true;

                var element = Mouse.Captured;
                element?.ReleaseMouseCapture();
            }
        }
  • 前台代码
 <Grid Background="Black"
          PreviewMouseLeftButtonDown="TestGrid_OnPreviewMouseLeftButtonDown"
          PreviewMouseMove="TestGrid_OnPreviewMouseMove"
          PreviewMouseLeftButtonUp="TestGrid_OnPreviewMouseLeftButtonUp">
        <StackPanel Orientation="Vertical">
            <Button Content="Hello"
                    Background="Aqua"
                    Click="ButtonBase_OnClick">
            </Button>

            <CheckBox Content="Checkbox1"
                      Foreground="Red"
                      Background="Red">
            </CheckBox>

            <RadioButton Content="RadioButton1"
                         Background="Aqua"
                         Foreground="Red">
            </RadioButton>
        </StackPanel>
    </Grid>

进阶

相关文章

  • 控件既能被点击也能拖动窗口

    WPF窗口下,有时候 既需要点击某些控件响应对应的事件, 也需要点击移动在某个控件上移动整个窗口 效果图 源码 源...

  • UIButton拖动响应事件,距离问题

    UIControlEventTouchDragInside当一次触摸在控件窗口内拖动时。UIControlEven...

  • PyQt实现loading遮罩层

    优点:1、完美覆盖整个窗口,阻止点击事件2、不会阻塞窗口3、窗口拖动时自动跟随4、可以使用 gif动图,也可以使用...

  • 星级评分StarScoreDemo

    今天做了一个点击/拖动小星星评分功能的控件,效果如下: 支持点击和滑动 原理简介:一.使用了UIControl控件...

  • macOS开发之自定义拖动窗口

    我们平时开发中NSWindow有个方法是可以设置点击窗口背景拖动窗口的,就是下面的这个方法,使用起来也比较方便,可...

  • Moom 窗口管理

    Moom 窗口管理 [toc] 启用移动和缩放网格 启用对自定义控件的访问 快捷键总开关 鼠标拖动分屏 窗口间距

  • 笔记本触摸板拖动手势

    测试环境 Win10 拖动 一个手指连续点击两次后再拖动 适用于选取一块区域的内容拖动指定图标(等)的位置拖动窗口...

  • Android视频悬浮窗口实现

    前言 本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回APP页面,通过例子来讲述悬浮窗...

  • WPF路由

    举例:窗口-用户控件-布局控件-…-按钮 按钮的点击事件:先由按钮的Click相应,然后….,然后布局控件,然后用...

  • qt 自定义拖动窗口

    实现在一个窗口内随意拖动一个控件功能 头文件 MyDragWidget.h 源文件 MyDragWidget.cp...

网友评论

      本文标题:控件既能被点击也能拖动窗口

      本文链接:https://www.haomeiwen.com/subject/zyxscctx.html