Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GIF动画在Windows窗体中不工作 我有两张表格_C#_Winforms_Infragistics_Picturebox - Fatal编程技术网

C# GIF动画在Windows窗体中不工作 我有两张表格

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

Form2使用基础设施控制。 在选项卡上更改im显示Form1

表格一 我有一个
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,您可以使用分析工具完成此操作:动画是在延迟后开始,还是因为在切换选项卡后被删除而不显示?谢谢您的回答。我试了一个样品。它起作用了。但它在我的应用程序中不起作用。我刚刚编辑了这个问题。请参考,我的表格被禁用了。你的评论帮了我的忙。谢谢