是否可以在Winforms应用程序中显示SilverLight繁忙指示器?

时间:2014-12-28 08:39:54

标签: c# .net busyindicator

目前我正在使用内置PictureBox的简单GIF file,并想知道这是否可能,以及它是否做了这2个选项之间的差异

这就是我目前使用PictureBox

所拥有的
pictureBox1.BringToFront();
pictureBox1.Dock = DockStyle.None;
pictureBox1.Visible = true;

1 个答案:

答案 0 :(得分:1)

您可以尝试hosting SilverLight inside Winforms

虽然SilverLight旨在用于Web浏览器,但WPF更像 native 到桌面,而WPF确实有一个simimar BusyIndicator,可以从CodePlex-Extended WPF Toolkit下载

首先定义WPF用户控件MyBusyIndicator

<UserControl x:Class="Stackoverflow.MyBusyIndicator"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <xctk:BusyIndicator IsBusy="True" />
    </Grid>
</UserControl>

然后,您可以使用ElementHost在Winform中托管此用户控件,首先从Form的设计器添加ElementHost,然后在Form的构造函数中添加

public partial class MyForm : Form
{
    public MyForm ()
    {
        InitializeComponent();
        this.elementHost1.Child = new Stackoverflow.MyBusyIndicator();
    }
}

差异:

虽然BusyIndicator附带了一些属性以允许您自定义指标,但它会增加对SL或WPF的依赖性。使用PictureBox,您需要做的就是准备动画GIF。有许多工具可用于生成动画GIF。