如何在c# WPF的应用程序中创建一个简单的菜单

本文关键字:一个 菜单 简单 WPF 应用程序 创建 | 更新日期: 2023-09-27 18:17:29

如何使用c#在WPF中创建光标旁边弹出的小菜单?该菜单将在应用程序窗口外工作。例如;

我移动光标并将其停在桌面上。当它停止时,光标旁边会显示一个小菜单。

感谢

代码:

    static System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
    public void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
    {
        big.Visibility = Visibility.Hidden;
        myTimer.Stop();              
    }
    public void TimerEventProcessor2(Object myObject, EventArgs myEventArgs)
    {
        big.Visibility = Visibility.Visible;
        myTimer.Stop();
    }
    public MainWindow()
    {
        InitializeComponent();
        // Sets the timer interval to 5 seconds.
        myTimer.Interval = 5000;
        myTimer.Start();
        myTimer.Tick += new EventHandler(TimerEventProcessor);
        myTimer.Start(); 
        myTimer.Tick += new EventHandler(TimerEventProcessor2);
    }

EDIT2

这是代码的一部分。我创建了另一个dispatchertimer,它的名字是hidingtimer。我将时间定义为3秒,正如你在代码上看到的那样。这个计时器调用deneme_Tick然后我做同样的事情作为HideWindow()在你的代码。

        timer.Interval = new TimeSpan(0, 0, 0, 1);
        timer.Tick += (sd, args) =>
        {
            movingCount++;
            if (movingCount >= menuShowDelay)
            {
                this.Visibility = System.Windows.Visibility.Visible;
                mouse.Enabled = false;
                timer.Stop();
                this.Left = mouseLeft;
                this.Top = mouseTop;
                this.Topmost = true;
                hidingtimer.Interval = new TimeSpan(0, 0, 0, 3);
                hidingtimer.Start();
                hidingtimer.Tick += new EventHandler(deneme_Tick);
                movingCount = 0;
            }

        };

如何在c# WPF的应用程序中创建一个简单的菜单

(抱歉我的英语不好)

我是这样做的:

  • 在WPF中以任何你想要的方式创建你的菜单(它可以是一个真正的菜单或列表框,堆栈面板上的按钮等)。
  • 设置你的WindowStyle为None
  • 要检测鼠标的移动和位置,你可以使用这个库
  • 编写一些逻辑来显示/隐藏鼠标位置上的窗口(带有计时器来检测鼠标何时不移动X秒)

如果你需要更多关于如何完成这些步骤的细节,请告诉我:)

编辑1

你可以像这样使用库来检测鼠标移动:

mouse = new MouseKeyboardActivityMonitor.MouseHookListener(new GlobalHooker());
mouse.MouseMove += (sd, args) =>
        {
            movingCount = 0;
            mouseLeft = args.X; //set the window.left to mouseLeft before showing it
            mouseTop = args.Y; //set the window.top to mouseTop before showing it
        };
mouse.Enabled = true;

我来试试,看看这里,

http://www.a2zdotnet.com/View.aspx?Id=92

如果可能的话,在主窗口中添加一个上下文菜单,然后使它像这样以编程方式显示,

在WPF中以编程方式显示菜单

使用计时器使其在1秒后发生。

我不确定它是否会出现在光标所在的位置

相关文章: