2010-03-18 3 views
2

У меня есть приложение C# с двумя одновременными видимыми формами, и мне нужно скрыть курсор мыши, когда он закончится только на одном из них. Если я использую Cursor.Hide(), он применит изменение для обоих из них.Курсор WinForms скрыт только на одной форме

ответ

1

Вы можете сделать «пустой» курсор и установите myForm.Cursor = blankCursor; Это сделает конкретную форму показать конкретный курсор, которая может быть полностью прозрачной.

0

Вы попробовали this.Cursor = Cursors.None, а не Cursor.Hide()?

+1

Cursors.None не существует как действительный курсор – Santiago

+0

-1 для причины Сантьяго. – JYelton

+0

Это решение (к сожалению) зависит от WPF. По-видимому (хотя и не указано) OP нуждался в решении WinForms. –

0

Вы можете использовать события Control.MouseEnter и Control.MouseLeave, чтобы вызвать скрываясь или отображение курсора

3

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

private void frm1_MouseEnter(object sender, EventArgs e) 
    { 
     Cursor.Hide(); 
    } 
    private void frm1_MouseLeave(object sender, EventArgs e) 
    { 
     Cursor.Show(); 
    } 

делать в Abobe на форме, которая должна скрыть курсор и добавить в форму, которая должна сделать курсор видимый:

private void frm2_MouseEnter(object sender, EventArgs e) 
    { 
     Cursor.Show(); 
    } 
+0

Я пробовал это, но указатель мыши появился над элементами управления внутри формы – Santiago

+0

попробуйте удалить MouseLeave на frm1 ... но я не знаю, будет ли курсор скрыт даже в других окнах, пока он не войдет в frm2. – Luiscencio

+0

Кажется, хорошая идея , но я не знаю, почему иногда событие MouseEnter не запускается, когда мышь вводится в формы, поэтому исчезает и появляется, когда Windows этого хочет. – Santiago

0

Если вы скрываете курсор так, чтобы пользователь не мог ничего сделать на форме, рассмотреть возможность использования this.UseWaitCursor = true; вместо этого.

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