我有 2 个 WinForms
Form2 使用 Infragistics ultraTabControl。在选项卡上更改 im 显示表单 1。
在形式1中
我有一个分配了动画GIF
的PictureBox
在形式 2 中
我像这样显示 Form1。
Form1 frmOne=new Form1();
frmOne.Show();
问题
GIF
不是在播放动画。
确保图像位于图像属性中,而不是背景图像属性中。这就是我犯
它对我来说工作正常。我刚刚在表单上拖动了一个新的图片框,并在 Form_Load(( 事件中设置图像属性并显示 GIF 动画。
我在点击按钮时和你做了同样的事情:
TestForms.NavBarTest newForm = new TestForms.NavBarTest();
newForm.Show();
在我的测试表格中:
private void NavBarTest_Load(object sender, EventArgs e)
{
pictureBox1.Image = NavronChartControl.Properties.Resources.url;
}
注意:如果您的图片框被禁用,则它不会对 GIF 进行动画处理
参考:
如何在 Windows 窗体 (c#( 上显示动画 GIF。
C# 中的动画进度指示器(Windows 窗体(
尝试使用此链接实现:图片框中的动画 GIF 不会对应用程序进行动画处理。
实现它的最佳方法是在异步任务中运行动画,但相应地,可以使用以下内容在 Windows 窗体上执行此操作的一些限制:
System.Threading.Thread.Sleep(int milliseconds)
.
我的启动视图以 gif 显示(加载(
例如:在您的构造函数中,
public partial class MainMenu : Form
{
private SplashScreen splash = new SplashScreen();
public MainMenu ()
{
InitializeComponent();
Task.Factory.StartNew(() => {
splash.ShowDialog();
});
Thread.Sleep(2000);
}
必须在启动新线程后放置Thread.Sleep(int)
,不要忘记您在此线程上执行的每个操作都需要调用,例如:
void CloseSplash()
{
Invoke(new MethodInvoker(() =>
{
splash.Close();
}));
}
现在你的 gif 应该可以工作了!
已解决
我目前的线程正忙于播放 GIF 动画。
我尝试了很多方法,如Application.DoEvents((等。但每件事都帮不了我。
以下使用线程的问题中的答案是一个非常好的工作想法。
堆栈溢出:显示/隐藏初始屏幕
谢谢大家。
以前已经提出过。虽然方法不同,但问题概念是相同的
StackOverFlow:如何在Windows窗体上显示动画GIF(c#(
可在其中使用代码项目的源项目
我想这会帮助你
我遇到了同样的问题,并通过实施遇到了不同的解决方案,我曾经面临过几个不同的问题。最后,以下是我将来自不同帖子的一些片段放在一起的内容,这些片段按预期对我有用。
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; });
}
请记住,图片框在"属性"窗口中是不可见的,或如下所示:
private void ComparerForm_Load(object sender, EventArgs e)
{
pictureBox1.Visible = false;
}
如果前面的答案都不适合你,另一个想法是刷新图像标签或使用jQuery即时编写它。
就我而言,当单击表单上的按钮时,我需要显示动画 GIF。 以前,它会显示但不具有动画效果。 我刚刚在单击按钮时添加了一个 jQuery 事件,该事件通过父标签的 html(( 函数将图像标签即时添加到div。
$('.showhidegif').html("<img src='/Content/img/angled-spinner.gif' />");
<div class="col-sm-12 showhidegif"></div>
值得一试,特别是如果你已经在页面上使用jquery。