Я уже писал пост как создавать анимацию в Windows Form и сейчас представлю вам как можно использовать этот метод на практике!
На понадобятся две формы:
1)Form1 — главная
)Form — дочерняя
В главной форме прописываем вызов второй, так же делаем проверку открыта она уже или нет:
private void button1_Click(object sender, EventArgs e) { bool IsOpen = false; for (int i = 0; i <= Application.OpenForms.Count-1; i++) { // Ищем нужную форму if (Application.OpenForms[i].Name == "Form") { //Если форма уже открыта то передаем ей фокус IsOpen = true; Application.OpenForms[i].Focus(); break; } } if (IsOpen == false) { //Если форма не открыта //То вызываем ее Form form = new Form(); form.Name = "Form"; form.Show(); } }
Во второй форме «Form» прописываем анимацию загрузки, просто вставив вот этот код:
[Flags] enum AnimateWindowFlags { AW_HOR_POSITIVE = 0x00000001, AW_HOR_NEGATIVE = 0x0000000, AW_VER_POSITIVE = 0x00000004, AW_VER_NEGATIVE = 0x00000008, AW_CENTER = 0x00000010, AW_HIDE = 0x00010000, AW_ACTIVATE = 0x0000000, AW_SLIDE = 0x00040000, AW_BLEND = 0x00080000 } [DllImport("user3.dll")] static extern bool AnimateWindow(IntPtr hWnd, int time, AnimateWindowFlags flags); protected override void OnLoad(EventArgs e) { int WidthOfMain = Application.OpenForms["Form1"].Width; int HeightofMain = Application.OpenForms["Form1"].Height; int LocationMainX = Application.OpenForms["Form1"].Location.X; int locationMainy = Application.OpenForms["Form1"].Location.Y; this.Location = new Point(LocationMainX + WidthOfMain + 5, locationMainy + 0); AnimateWindow(this.Handle, 500, AnimateWindowFlags.AW_SLIDE | AnimateWindowFlags.AW_HOR_POSITIVE); } //Закрываем форму private void button_Click(object sender, EventArgs e) { this.Close(); } //Анимация плавного угасания при закрытии private void Form_FormClosed(object sender, FormClosedEventArgs e) { AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_BLEND | AnimateWindowFlags.AW_HIDE); }
Вот так получилось у меня:
0.00 (0%) 0 votes