我用C#做了一个屏保,代码如下,为什么我运行的时候按什么键都无法退出,label也无法移动呢?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{

    int deltX = 10;
    int deltY = 8;
    public Form1()
    {
        this.KeyPreview = true;
        InitializeComponent();
    }


    private void timer1_Tick(object sender, EventArgs e)
    {
        this.label1.Left += deltX;
        this.label1.Top += deltY;
        if (this.label1.Top < 0 ||
        this.label1.Top + this.label1.Height > this.Height)
            deltY = -deltY;
        if (this.label1.Left < 0 ||
        this.label1.Left + this.label1.Width > this.Width)
            deltX = -deltX;
    }

    private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        Application.Exit();
    }

    private void label1_Click_1(object sender, EventArgs e)
    {

    }
}

}

c#

3个回答

Form1_KeyDown有没有关联给窗体的keydown事件,窗体的keypreview属性是否设置为true

确定一下你的keydown事件有没有关联 我这样是可以的啊
public partial class Form2 : Form
{
int deltX = 10;
int deltY = 8;
public Form2()
{
this.KeyPreview = true;
InitializeComponent();
timer1.Tick += timer1_Tick;
this.KeyDown += Form1_KeyDown;
}

    private void timer1_Tick(object sender, EventArgs e)
    {
        this.label1.Left += deltX;
        this.label1.Top += deltY;
        if (this.label1.Top < 0 ||
        this.label1.Top + this.label1.Height > this.Height)
            deltY = -deltY;
        if (this.label1.Left < 0 ||
        this.label1.Left + this.label1.Width > this.Width)
            deltX = -deltX;
    }

    private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        Application.Exit();
    }

    private void label1_Click_1(object sender, EventArgs e)
    {

    }
}

楼上说的有道理,但是你要注意就是你的Form在运行的过程中是不是有其他的程序占用了你程序的焦点,如果你的程序没有处于激活状态或者被类似于流氓软件占用了焦点,那你的Key_Down事件自然无法在你的Form窗体内触发,这种情况可以使用键盘钩子,可以突破Form层面的监视操作系统的相关操作

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!