2013-10-15 2 views
2

Можно ли определить, если курсор мышей покидает пользовательских модальное Winforms диалогового (курсор мыши входит в пространстве вокруг диалога)? Диалоговое окно отображается через ShowDialog(). Mouse_Leave не работает, потому что он срабатывает при выходе из видимой части формы. Поэтому он также срабатывает при вводе элемента управления в форму!Winforms: Определить, если курсор мыши покидают границы диалогового

+0

да это. какие усилия вы сделали? –

ответ

3

MouseLeave событий формы не всегда срабатывает, если форма имеет панели, что док-заполнить клиентскую область, поэтому таймер достаточно надежный способ проверить это:

System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); 

public Form1() { 
    InitializeComponent(); 
    timer.Tick += timer_Tick; 
    timer.Enabled = true; 
} 

void timer_Tick(object sender, EventArgs e) { 
    if (this.Bounds.Contains(MousePosition)) { 
    this.Text = "Inside"; 
    } else { 
    this.Text = "Outside"; 
    } 
} 
+2

Осторожно, этот таймер продолжает тикать после того, как форма расположена. –

+0

Трудное решение, но оно работает! :-) –

0

Диалог WinForm - это форма, поэтому ответ будет ДА. Вам необходимо подключиться к соответствующим событиям, чтобы зарегистрировать выход и войти в диалог так же, как и в любой форме.

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