【发布时间】:2014-08-18 11:50:36
【问题描述】:
我有一个包含 1 行 2 列的 TableLayoutPanel 的表单。
第 1 列包含一个面板,其中包含一个图片框。 第 2 列是一个文本框。
我想显示表单,然后一次向文本框添加一个字符。除了在文本框完成填充之前不显示图片框图像之外,一切都运行良好。
class Program
{
static void Main(string[] args)
{
MainForm mainForm = new MainForm();
FormShown Shown = new FormShown(mainForm);
mainForm.Shown += new EventHandler(Shown.mainForm_Shown);
mainForm.ShowDialog();
}
}
class FormShown
{
MainForm mainForm;
public FormShown(MainForm aMainForm)
{
mainForm = aMainForm;
}
public void f1_Shown(object sender, EventArgs e)
{
mainForm.AddText("hello!");
}
}
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
PictureBox.Image = MyApp.Properties.Resources.MyImage;
}
public void AddText(string text)
{
foreach (char c in text)
{
TextBox.Text += c;
TextBox.Refresh();
System.Threading.Thread.Sleep(100);
TextBox.SelectionStart = TextBox.Text.Length;
}
}
}
我希望在代码中从资源中设置图像足够快,并且我希望通过 Form.Shown 事件加载图片框 - 我这样想是不是错了?
我尝试在设计视图中而不是在代码中设置图像,但结果相同。
我应该使用其他事件吗?我相信 Shown 是最后一个被调用的。
谢谢!
【问题讨论】:
-
UI 线程可能正忙于所有线程都在休眠。您可以在设置
PictureBox.Image后插入无法形容的Application.DoEvents()。通常要避免,但在这里不会造成任何伤害..
标签: c# .net winforms picturebox