如何在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;
}
};
(抱歉我的英语不好)
我是这样做的:
- 在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秒后发生。
我不确定它是否会出现在光标所在的位置