C#WinForm在新线程中动态创建控件时,gif图动不动
2个回答
展开全部
这个问题我在WPF中遇到过,Winform中思路应该类似
举个例子,主窗口Mainform
你直接在Load方法中(UI线程)写上,添加一个image,然后写上路径,
那么执行后,你会看到窗口上多了一个image控件,然后里面有gif图。
但是如果你用的是新建的线程去加载控件,直接就会报错!
因为ui线程是不允许被后台线程调用的,你写Mainform.Children.Add(image) 这句肯定是编译不通过的。
后台线程和UI交互是需要委托的,WPF WF不太一样,WF应该是INVOKE一个DELEGATE,
后台通过委托事件,把信息传回UI线程。
一般来讲只要UI线程没有阻塞 GIF都是动的。
还有,一般很少通过后台线程来创建控件(WF里我不太了解是否可行,WPF里是不会这么做的),一般都会设计好容器的大小和控件的位置,通过事件来改变各个控件的visibility属性,从而达到UI上显示或隐藏的效果
举个例子,主窗口Mainform
你直接在Load方法中(UI线程)写上,添加一个image,然后写上路径,
那么执行后,你会看到窗口上多了一个image控件,然后里面有gif图。
但是如果你用的是新建的线程去加载控件,直接就会报错!
因为ui线程是不允许被后台线程调用的,你写Mainform.Children.Add(image) 这句肯定是编译不通过的。
后台线程和UI交互是需要委托的,WPF WF不太一样,WF应该是INVOKE一个DELEGATE,
后台通过委托事件,把信息传回UI线程。
一般来讲只要UI线程没有阻塞 GIF都是动的。
还有,一般很少通过后台线程来创建控件(WF里我不太了解是否可行,WPF里是不会这么做的),一般都会设计好容器的大小和控件的位置,通过事件来改变各个控件的visibility属性,从而达到UI上显示或隐藏的效果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询