目前我正在使用内置PictureBox
的简单GIF file
,并想知道这是否可能,以及它是否做了这2个选项之间的差异
这就是我目前使用PictureBox
:
pictureBox1.BringToFront();
pictureBox1.Dock = DockStyle.None;
pictureBox1.Visible = true;
答案 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。