首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将光标隐藏在静止的时间内,并在移动时再次显示。

将光标隐藏在静止的时间内,并在移动时再次显示。
EN

Stack Overflow用户
提问于 2018-07-02 14:48:32
回答 1查看 110关注 0票数 1

我想在一定时间后隐藏光标(如果鼠标没有移动),当我在picturebox中移动鼠标时,我想显示光标。我就是不能让它起作用..。这就是我尝试过的:

代码语言:javascript
复制
    // this Never seem to hide the cursor
    private void picBox_MouseMove(object sender, MouseEventArgs e)
    {
        Cursor.Show();
        tim.Stop();
        tim.Start();
    }
    private void tim_Tick(object sender, EventArgs e)
    {
        Cursor.Hide();
        tim.Stop();
    }

-

代码语言:javascript
复制
    // works but in this case I want cursor.ico to be a resource
    private void picBox_MouseMove(object sender, MouseEventArgs e)
    {
        Cursor.Current = Cursors.Default;
        tim.Stop();
        tim.Start();
    }
    private void tim_Tick(object sender, EventArgs e)
    {
        Cursor.Current = new Cursor("cursor.ico");
        tim.Stop();
    }

-

代码语言:javascript
复制
    // Properties.Resources.cursor gives an error even though I added it to my resources
    // cannot convert from 'System.Drawing.Icon' to 'System.IntPtr'
    private void picBox_MouseMove(object sender, MouseEventArgs e)
    {
        Cursor.Current = Cursors.Default;
        tim.Stop();
        tim.Start();
    }
    private void tim_Tick(object sender, EventArgs e)
    {
        Cursor.Current = new Cursor(Properties.Resources.cursor);
        tim.Stop();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-02 15:21:35

您需要有一个定时器并处理它的Tick事件。在Tick事件中,检查鼠标的最后一次移动是否在特定时间之前,然后使用Cursor.Hide()隐藏光标。还可以处理MouseMovePictureBox,并使用Cursor.Show()方法显示光标。

注意:不要忘记启用计时器并将计时器的Interval设置为短值,例如,在以下代码中更改300和更改duration值,以缩短/较长的非活动时间:

代码语言:javascript
复制
DateTime? lastMovement;
bool hidden = false;
int duration = 2;
void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    lastMovement = DateTime.Now;
    if (hidden)
    {
        Cursor.Show();
        hidden = false;
    }
}
private void timer1_Tick(object sender, EventArgs e)
{
    if (!lastMovement.HasValue)
        return;
    TimeSpan elaped = DateTime.Now - lastMovement.Value;
    if (elaped >= TimeSpan.FromSeconds(duration) && !hidden)
    {
        Cursor.Hide();
        hidden = true;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51138812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档