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

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

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

Windows Forms 示例:

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

创建一个新的Windows Forms应用程序项目。在解决方案资源管理器中,双击Form1以打开设计器。从工具箱中,将一个Button控件拖放到Form1上。双击Button以创建button1_Click事件处理程序。在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引用。

创建一个新的WPF应用程序项目。在解决方案资源管理器中,双击MainWindow.xaml以打开设计器。在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">    <Grid>       <Button Content="Toggle Child Window" Click="Button_Click"/>    </Grid></Window>
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;        }    }}

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号