C# GIF动画在Windows窗体中不工作 我有两张表格
Form2使用基础设施控制。 在选项卡上更改im显示Form1 表格一 我有一个C# GIF动画在Windows窗体中不工作 我有两张表格,c#,winforms,infragistics,picturebox,C#,Winforms,Infragistics,Picturebox,Form2使用基础设施控制。 在选项卡上更改im显示Form1 表格一 我有一个PictureBox分配了动画GIF 表格2 我正在这样显示Form1 Form1 frmOne=new Form1(); frmOne.Show(); 问题 GIF没有播放动画。对我来说效果很好。我刚刚在窗体上拖动了一个新的pictureBox,并在form_Load()事件中设置了image属性,并显示了GIF动画 我在点击按钮时也这样做了: TestForms.NavBarTest newForm = n
PictureBox
分配了动画GIF
表格2
我正在这样显示Form1
Form1 frmOne=new Form1();
frmOne.Show();
问题
GIF
没有播放动画。对我来说效果很好。我刚刚在窗体上拖动了一个新的pictureBox,并在form_Load()事件中设置了image属性,并显示了GIF动画
我在点击按钮时也这样做了:
TestForms.NavBarTest newForm = new TestForms.NavBarTest();
newForm.Show();
在我的测试表上:
private void NavBarTest_Load(object sender, EventArgs e)
{
pictureBox1.Image = NavronChartControl.Properties.Resources.url;
}
注意:如果您的图片框被禁用,那么它将不会设置Gif动画
参考资料:尝试使用以下链接实现:apprach。这个问题以前已经提出过。 虽然方法不同,但问题的概念是相同的 可以使用的源项目 我想这会帮你解决问题 我当前的线程正忙于播放GIF动画 我尝试了很多方法,比如Application.DoEvents();等 但每件事都帮不了我 下面问题的答案是使用线程,这是一个非常好的工作思路
谢谢大家。请确保您的图像位于图像属性中,而不是背景图像属性中。这就是我犯的错误实现这一点的最佳方法是在异步任务中运行动画,但相应地,在windows窗体上使用以下命令可能会有一些限制:
System.Threading.Thread.Sleep(整数毫秒)
我的启动视图显示为gif(加载)
e、 g:在你的构造函数中
public partial class MainMenu : Form
{
private SplashScreen splash = new SplashScreen();
public MainMenu ()
{
InitializeComponent();
Task.Factory.StartNew(() => {
splash.ShowDialog();
});
Thread.Sleep(2000);
}
启动一个新线程后,必须放入线程。Sleep(int)
,不要忘记,您在此线程上执行的每个操作都需要调用,例如:
void CloseSplash()
{
Invoke(new MethodInvoker(() =>
{
splash.Close();
}));
}
现在你的gif应该可以工作了 如果前面的答案都不适用于您,另一种方法是刷新图像标签或使用jQuery动态写入。
在我的例子中,当点击表单上的按钮时,我需要显示一个动画GIF。以前它会显示,但不会设置动画。我只是在单击按钮时添加了一个jQuery事件,该按钮通过父标记的html()函数动态地将图像标记添加到div中
$('.showhidegif').html("<img src='/Content/img/angled-spinner.gif' />");
<div class="col-sm-12 showhidegif"></div>
$('.showhidegif').html(“”);
值得一试,特别是当您已经在页面上使用jquery时。我遇到了相同的问题,并且通过实现我曾经遇到过的几个不同问题,遇到了不同的解决方案。最后,下面是我将不同帖子中的一些片段放在一起的内容,这些内容对我来说正如预期的那样有效
private void btnCompare_Click(object sender, EventArgs e)
{
ThreadStart threadStart = new ThreadStart(Execution);
Thread thread = new Thread(threadStart);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
下面是执行方法,该方法还可以调用PictureBox控件:
private void Execution()
{
btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = true; });
Application.DoEvents();
// Your main code comes here . . .
btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = false; });
}
请记住,PictureBox在属性窗口中不可见,或者执行以下操作:
private void ComparerForm_Load(object sender, EventArgs e)
{
pictureBox1.Visible = false;
}
你的froOne构造不正确。它应该是“newform1()”而不是“newform()”。编译器应该给您一个错误。@ToKa抱歉。它只是“new Form1()”。如果仍然有问题,请为您的用户共享一些代码。当UI线程忙于其他事情时,gif将不会显示动画。您的代码片段不提供它可能正在忙什么的线索。复制问题的邮政编码。使用BackgroundWorker将繁忙的工作转移到另一个线程。@aWebdesigner09如果该行为是临时的,我建议执行性能分析,以查看在显示表单时阻止UI更新的原因。如果您有Visual Studio 2010 Ultimate,您可以使用分析工具完成此操作:动画是在延迟后开始,还是因为在切换选项卡后被删除而不显示?谢谢您的回答。我试了一个样品。它起作用了。但它在我的应用程序中不起作用。我刚刚编辑了这个问题。请参考,我的表格被禁用了。你的评论帮了我的忙。谢谢