窗体未显示图片框图像.显示调用

本文关键字:图像 显示 调用 框图 显示图 窗体 | 更新日期: 2023-09-27 18:18:18

我有一个包含1行2列的TableLayoutPanel的表单。

列1包含一个面板,其中包含一个图片框。第二列是一个文本框。

我想显示表单,然后一次一个字符地向文本框添加文本。一切正常,只是在文本框填充完成后才显示图片框图像。

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;
        }
    }
}   

我希望在资源中的代码中设置图像会足够快,并且我希望图片框能够由表单加载。展示的事件——我这样想错了吗?

我试过在设计视图中设置图像,而不是在代码中,但结果相同。

是否有我应该使用的不同事件?我相信show是最后一个被调用的

谢谢!

窗体未显示图片框图像.显示调用

如果你知道Windows窗体事件的生命周期,那么你可以很容易地理解你到底遇到了什么问题。基本上,当窗体被绘制时,将绘制图像和其他控件,并在最后引发Paint事件。因此,这意味着应用程序将不会绘制任何控件或图形,直到所有进程都没有完成。

应该在不同的进程中调用AddText()方法