2012-02-11 2 views
4

Я делаю приложение C# WinForms. По какой-то причине события MouseMove и MouseClick формы не срабатывают. 0: Это прозрачная форма (TransparencyKey устанавливается на цвет фона) с полупрозрачным анимированным gif в Picture Box. Я делаю скринсейвер. Любые предложения?События мыши не активированы

EDIT: MainScreensaver.cs

Random randGen = new Random(); 
    public MainScreensaver(Rectangle bounds) 
    { 
     InitializeComponent(); 
     this.Bounds = Bounds; 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     Rectangle screen = Screen.PrimaryScreen.Bounds; 
     Point position = new Point(randGen.Next(0,screen.Width-this.Width)+screen.Left,randGen.Next(0,screen.Height-this.Height)+screen.Top); 
     this.Location = position; 
    } 

    private void MainScreensaver_Load(object sender, EventArgs e) 
    { 
     Cursor.Hide(); 
     TopMost = true; 
    } 
    private Point mouseLocation; 

    private void MainScreensaver_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (!mouseLocation.IsEmpty) 
     { 
      // Terminate if mouse is moved a significant distance 
      if (Math.Abs(mouseLocation.X - e.X) > 5 || 
       Math.Abs(mouseLocation.Y - e.Y) > 5) 
       Application.Exit(); 
     } 

     // Update current mouse location 
     mouseLocation = e.Location; 
    } 

    private void MainScreensaver_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     Application.Exit(); 
    } 

    private void MainScreensaver_Deactive(object sender, EventArgs e) 
    { 
     Application.Exit(); 
    } 

    private void MainScreensaver_MouseClick(object sender, MouseEventArgs e) 
    { 
     Application.Exit(); 
    } 

Отрывок из MainScreensaver.Designer.cs InitialiseComponent()

this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.MainScreensaver_MouseClick); 
    this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.MainScreensaver_MouseMove); 
+3

Просьба указать код. – anonymous

+0

Перейдите к разработчику и удалите обработчик событий с помощью панели «Свойства». Затем повторно добавьте обработчик событий. Несколько раз VS2010 играет в смешные игры в WinForms, и чтение обработчика может исправить проблему. Кроме того, убедитесь, что скрытие курсора не приводит к тому, что событие click также будет скрыто. – MoonKnight

+0

@Killercam Не повезло :( –

ответ

1

Вы уверены, что ваша форма имеет фокус? Если ваша форма не имеет фокуса, события мыши не будут запущены.

+0

У моей формы определенно есть фокус, у меня есть событие Деактивировать, которое срабатывает успешно, если я щелкнул в другом месте. –

+0

Я задал ваш вопрос, потому что я действительно не предоставлял много информации, я просто хотел предложений. Хотя ваш не помог, это была хорошая идея (если была очевидна). Я, скорее всего, пропустил что-то очевидное. –

Смежные вопросы