• 解决wpf popup控件遮挡其他程序的问题


    public class PopupNonTopmost : Popup
    {
        public static DependencyProperty TopmostProperty = Window.TopmostProperty.AddOwner(
            typeof( PopupNonTopmost ),
            new FrameworkPropertyMetadata( false, OnTopmostChanged ) );
    
        public bool Topmost
        {
            get { return (bool)GetValue( TopmostProperty ); }
            set { SetValue( TopmostProperty, value ); }
        }
    
        private static void OnTopmostChanged( DependencyObject obj, DependencyPropertyChangedEventArgs e )
        {
            ( obj as PopupNonTopmost ).UpdateWindow();
        }
    
        protected override void OnOpened( EventArgs e )
        {
            UpdateWindow();
        }
    
        private void UpdateWindow()
        {
            var hwnd = ( (HwndSource)PresentationSource.FromVisual( this.Child ) ).Handle;
            RECT rect;
    
            if ( GetWindowRect( hwnd, out rect ) )
            {
                SetWindowPos( hwnd, Topmost ? -1 : -2, rect.Left, rect.Top, (int)this.Width, (int)this.Height, 0 );
            }
        }
    
        #region P/Invoke imports & definitions
    
        [StructLayout( LayoutKind.Sequential )]
        public struct RECT
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
        }
    
        [DllImport( "user32.dll" )]
        [return: MarshalAs( UnmanagedType.Bool )]
        private static extern bool GetWindowRect( IntPtr hWnd, out RECT lpRect );
    
        [DllImport( "user32", EntryPoint = "SetWindowPos" )]
        private static extern int SetWindowPos( IntPtr hWnd, int hwndInsertAfter, int x, int y, int cx, int cy, int wFlags );
    
        #endregion
    }
    View Code
    作者:qidong
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Java基本元素
    wsgiref模块
    Web框架与HTTP协议
    pymysql 于pycharm中操作mysql
    mysql
    协程
    jQuery选择器
    网络编程→锁/队列/线程
    初识网络编程&并发编程
    navcat 如何将一个库的表抽到另一个库中
  • 原文地址:https://www.cnblogs.com/qidong/p/4422346.html
Copyright © 2020-2023  润新知