我正在开发一个程序,其中包含(除其他外)一个WPF窗口,我正在使用下一个代码在MouseDoubleClick事件中最大化它:
this.WindowStyle = WindowStyle.None;
this.WindowState = WindowState.Maximized;
this.Topmost = true;
现在,我想要做的是当窗口最大化并且鼠标退出屏幕(进入屏幕底部直到它退出屏幕)时,屏幕底部会出现一个新窗口(WPF)或WindowsForm)将包含几个东西(按钮,滚动条等),只有当鼠标悬停在它上面时才会激活(就像在BSplayer中一样)。我的问题是如何做到这一点?我真的是WPF的首发,我不知道XAML,我更愿意尽可能多地使用C#代码。 那么:我怎么知道鼠标离开屏幕的时间以及如何让窗口出现在屏幕的底部(没有最小化或用原始窗口做任何其他事情)? 我尝试使用this.MouseLeave但是当窗口最大化时它不起作用。
如果我在这里提出这个问题,我会利用这个机会再问另外两件事:
真的需要帮助解决这些问题。这是我正在研究的一个非常重要的项目。
答案 0 :(得分:1)
回答这个问题
当WPF窗口最大化并且鼠标移动时间超过5秒时,我想要隐藏鼠标并且只有在鼠标移动时才能再次显示鼠标。我该怎么做?
这可以通过使用间隔为5秒的计时器来实现。当计时器过去时,将鼠标光标设置为无以隐藏它,当鼠标移动时,将鼠标光标重置为原始光标。
将以下代码放在构造函数中:
this.MouseMove += new MouseEventHandler(MainWindow_MouseMove);
tm = new System.Timers.Timer();
tm.Interval = 5000;
tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed);
tm.Start();
以下是事件定义:
void MainWindow_MouseMove(object sender, MouseEventArgs e)
{
tm.Stop();
tm.Start();
// Reseting the time back to original. Here I have assumed that original one is Arrow.
this.Dispatcher.Invoke(new Action(() =>
{
Mouse.OverrideCursor = Cursors.Arrow;
}));
}
void tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.Dispatcher.Invoke(new Action(() =>
{
if (Mouse.OverrideCursor != Cursors.None)
{
Mouse.OverrideCursor = Cursors.None;
currentCursor = Mouse.OverrideCursor;
}
}));
}
希望这会有所帮助!!