Исчезание формы Windows Forms в C#
Форма Windows Forms в C# может быть запрограммирована с эффектом исчезания и исчезать с помощью параметров прозрачности. Действительный код C# не слишком сложный, просто необходимо его соответствующим образом структурировать. Появление и исчезание выполняется с помощью простого цикла свойства Opacity формы:
Почему код C# вызывает ChangeOpacity вместо простой установки числа для этого свойства Opacity? Если коротко, то потому, что приложение использует многопотоковость. Многопотоковость Для исключения конфликта с остальными элементами пользовательского интерфейса необходима многопотоковость. Многопотоковость будет выполнять эффекты исчезания и появления в отдельном потоке из оставшейся части интерфейса C#, чтобы исключить странное поведение. Что может привести к проблемам? Функции исчезания C# и форма Windows Forms будут в отдельных потоках. Последняя версия платформы .Net Framework не разрешает межпотоковые вызовы. Чтобы обойти это, можно использовать делегаты. Приведенная выше функция C# использует вызов ChangeOpacity, который будет создавать делегата для доступа к свойству Opacity формы в том же потоке:
Обратите внимание, что можно вызвать любую нужную функцию C# и передать любые нужные параметры. События мыши в C# Потребуются только два события мыши в C#, MouseEnter и MouseLeave. Чтобы вызвать функции появления (FadeIn) и исчезания (FadeOut) C#, необходим следующий простой исходный код:
Конечно, для функции исчезания (FadeOut) следует заменить часть FadeIn. Существует одна небольшая проблема. Событие MouseLeave формы будет порождаться, когда курсор "покинет" форму C#, "входя" в другой элемент управления, даже если он находится в той же форме. Простой способ обойти это состоит в добавлении следующего кода C# в начале события MouseLeave:
Исключение переполнения Краткое замечание: требуется обеспечить остановку всех работающих вызовов функций появления и исчезания в C# перед вызовом еще одной. Это необходимо делать, чтобы исключить переполнение стека, что может привести к сбою приложения. Просто воспользуйтесь вызовом Abort C#. Проверьте, как происходит исчезание формы, загрузив пример исходного кода C#. |