117.info
人生若只如初见

利用C#实现子窗口的弹出与隐藏动画

在C#中,你可以使用Windows Forms或WPF来创建子窗口并实现弹出和隐藏动画。这里我将分别为这两种技术提供一个示例。

Windows Forms 示例:

首先,确保你已经添加了System.Windows.Forms引用。

  1. 创建一个新的Windows Forms应用程序项目。
  2. 在解决方案资源管理器中,双击Form1以打开设计器。
  3. 从工具箱中,将一个Button控件拖放到Form1上。
  4. 双击Button以创建button1_Click事件处理程序。
  5. Form1类中,添加以下代码:
using System;
using System.Windows.Forms;

public partial class Form1 : Form
{
    private Form childForm;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (childForm == null)
        {
            childForm = new Form();
            childForm.Size = new System.Drawing.Size(200, 200);
            childForm.StartPosition = FormStartPosition.Manual;
            childForm.Location = new System.Drawing.Point(this.Location.X + this.Width, this.Location.Y);
            childForm.FormClosed += ChildForm_FormClosed;
        }

        if (childForm.Visible)
        {
            HideChildForm();
        }
        else
        {
            ShowChildForm();
        }
    }

    private void ShowChildForm()
    {
        childForm.Show();
        Timer timer = new Timer();
        timer.Interval = 10;
        timer.Tick += (sender, e) =>
        {
            if (childForm.Width < 200)
            {
                childForm.Width += 20;
                childForm.Left -= 10;
            }
            else
            {
                timer.Stop();
            }
        };
        timer.Start();
    }

    private void HideChildForm()
    {
        Timer timer = new Timer();
        timer.Interval = 10;
        timer.Tick += (sender, e) =>
        {
            if (childForm.Width > 0)
            {
                childForm.Width -= 20;
                childForm.Left += 10;
            }
            else
            {
                childForm.Hide();
                timer.Stop();
            }
        };
        timer.Start();
    }

    private void ChildForm_FormClosed(object sender, FormClosedEventArgs e)
    {
        childForm = null;
    }
}

WPF 示例:

首先,确保你已经添加了PresentationFrameworkSystem.Windows引用。

  1. 创建一个新的WPF应用程序项目。
  2. 在解决方案资源管理器中,双击MainWindow.xaml以打开设计器。
  3. MainWindow.xaml中,添加以下代码:
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="200" Width="200">
    
       
  1. MainWindow.xaml.cs中,添加以下代码:
using System;
using System.Windows;
using System.Windows.Media.Animation;

namespace WpfApp
{
    public partial class MainWindow : Window
    {
        private Window childWindow;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (childWindow == null)
            {
                childWindow = new Window();
                childWindow.Title = "Child Window";
                childWindow.Width = 200;
                childWindow.Height = 200;
                childWindow.WindowStartupLocation = WindowStartupLocation.Manual;
                childWindow.Left = this.Left + this.Width;
                childWindow.Top = this.Top;
                childWindow.Closed += ChildWindow_Closed;
            }

            if (childWindow.Visibility == Visibility.Visible)
            {
                HideChildWindow();
            }
            else
            {
                ShowChildWindow();
            }
        }

        private void ShowChildWindow()
        {
            DoubleAnimation widthAnimation = new DoubleAnimation(0, 200, TimeSpan.FromMilliseconds(200));
            DoubleAnimation leftAnimation = new DoubleAnimation(childWindow.Left - 200, childWindow.Left, TimeSpan.FromMilliseconds(200));
            childWindow.BeginAnimation(Window.WidthProperty, widthAnimation);
            childWindow.BeginAnimation(Window.LeftProperty, leftAnimation);
            childWindow.Show();
        }

        private void HideChildWindow()
        {
            DoubleAnimation widthAnimation = new DoubleAnimation(200, 0, TimeSpan.FromMilliseconds(200));
            DoubleAnimation leftAnimation = new DoubleAnimation(childWindow.Left, childWindow.Left + 200, TimeSpan.FromMilliseconds(200));
            childWindow.BeginAnimation(Window.WidthProperty, widthAnimation);
            childWindow.BeginAnimation(Window.LeftProperty, leftAnimation);
            childWindow.Visibility = Visibility.Hidden;
        }

        private void ChildWindow_Closed(object sender, EventArgs e)
        {
            childWindow = null;
        }
    }
}

这些示例将创建一个主窗口,其中包含一个按钮。当单击该按钮时,将显示或隐藏子窗口,同时使用动画效果展开或收起子窗口。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fed11AzsOCQVUBg.html

推荐文章

  • C#中如何处理不同版本的Excel文件

    在C#中处理不同版本的Excel文件,可以使用Microsoft Office Interop Excel库或者第三方库,例如EPPlus、NPOI等 使用Microsoft Office Interop Excel库: 首先,需...

  • 如何使用C#在Excel中进行数据统计和分析

    要在C#中使用Excel进行数据统计和分析,你需要使用Microsoft.Office.Interop.Excel库。这是一个C#与Excel之间的互操作库,可以让你在C#代码中控制Excel应用程序。...

  • C#如何处理Excel的宏和VBA代码

    在C#中,你可以使用Microsoft.Office.Interop.Excel库来处理Excel文件,包括运行宏和VBA代码。以下是一个简单的示例,展示了如何使用C#运行Excel宏: 首先,确保...

  • 在C#中如何实现Excel的模板化操作

    在C#中实现Excel模板化操作,可以使用一些第三方库,例如EPPlus、NPOI等 首先,通过NuGet安装EPPlus库。在Visual Studio中,依次点击“工具”>“NuGet包管理器”...

  • C#子窗口的父子关系如何建立与维护

    在C#中,建立和维护子窗口与父窗口之间的关系主要依赖于Windows Forms或WPF等图形界面库。以下是使用Windows Forms创建父子窗口关系的方法: 首先,创建一个父窗...

  • 如何在C#中处理子窗口的关闭事件

    在C#中,您可以使用FormClosed事件来处理子窗口的关闭事件 首先,创建一个新的Windows Forms应用程序项目。
    添加一个名为“子窗口”的新窗体(如:ChildFor...

  • C#中子窗口的拖拽与缩放功能如何实现

    在C#中,要实现子窗口的拖拽和缩放功能,可以使用Windows Forms或WPF。这里分别给出两种方法的实现方法: Windows Forms: 拖拽功能:
    首先,需要在子窗口上...

  • 利用C#实现子窗口的自定义绘制

    在C#中,可以通过创建一个自定义的子窗口类并重写其OnPaint方法来实现子窗口的自定义绘制
    using System;
    using System.Drawing;
    using System.Wi...