Значок курсора не изменяется внутри конструктора в Windows Forms - PullRequest
0 голосов
/ 03 июня 2019

У меня есть приложение, которое имеет следующий конструктор:

public BankApp()
{
    InitializeComponente();
    Cursor.Current = Cursors.WaitCursor;

    // some coding and setting up

    Cursor.Current = Cursors.Default;
}

Однако значок курсора по какой-то причине не установлен на WaitCursor, тогда как если я выполняю какие-либо другие действия, он заменяется должным образом.

Мне это нужно, потому что я хочу запретить пользователю предпринимать какие-либо действия, пока все подпрограммы внутри конструктора не будут вызваны и завершены.

Любая помощь очень ценится!

1 Ответ

3 голосов
/ 03 июня 2019

Обратите внимание, что Cursor является свойством формы.Выбранный курсор отображается, когда мышь перемещается над этой формой.Но поскольку при запуске конструктора форма еще не видна, курсор ожидания не может отображаться.

Рассмотрите возможность перемещения долго выполняющихся элементов в обработчик событий Shown:

private void Form1_Shown(object sender, EventArgs e)
{
    Cursor.Current = Cursors.WaitCursor;
    try {
        Thread.Sleep(2000); // Do long running stuff here
    } finally {
        Cursor.Current = Cursors.Default;
    }
}

Вместо этого вытакже можно установить курсор ожидания в форме, открывающей эту новую форму.

Cursor.Current = Cursors.WaitCursor;
try {
    var frm = new BankApp(); // Constructor is running here.
    frm.Show();
} finally {
    Cursor.Current = Cursors.Default;
}

Если ваша форма не является основной формой, вы можете использовать следующий код для установки курсора ожидания для всех открытых форм.Это также должно работать в конструкторе:

Application.UseWaitCursor = true;
try {
    Thread.Sleep(2000); // Do long running stuff here
} finally {
    Application.UseWaitCursor = false;
}

Try-finally гарантирует, что курсор по умолчанию также будет сброшен, если что-то пойдет не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...