标签控件无法正确呈现

时间:2012-01-12 18:24:59

标签: c# winforms

我有(应该是)一个非常简单的Windows窗体应用程序。有一个“Main”表单是一组带有Submit按钮的数据输入。当用户按下提交时,我想显示第二个表单,这是一个非常基本的表单,上面只有一个标签,上面写着“请稍候......”。我创建了第二个表单,并在Submit按钮的Click()中执行此操作:

Form2 f2 = new Form2();
f2.Show();
System.Threading.Thread.Sleep(3000);
f2.Hide();

Form2的ctor:

public Form2()
{
  InitializeComponent();
  this.Text = "Form2 that is useless";
}

我看到的是Form2,但标签应该在哪里,我只看到它的轮廓为没有文字的白色反应角。文本前景和背景颜色签出(“控制”彩色背景上的黑色前景。

我正在把我的头发拉出来试图确定为什么添加了没有属性更改的简单表单将无法正确显示控件。我添加了一个按钮控件和一个图片框控件,并得到了相同的结果。控件的轮廓显示,但内容不显示。

帮助?

2 个答案:

答案 0 :(得分:2)

添加:

Shown += new EventHandler(Form2_Shown);

到Form2的ctor。和

void Form2_Shown(object sender, EventArgs e)
{
    Update();
}

在班上。

编辑: 这不起作用。可能是因为SleepShown事件处理程序之前执行。解决方案是添加:

f2.Update();

之前的解决方案的Sleep而不是

这次我试了一下。它有效。

答案 1 :(得分:2)

你没有给Form2一个渲染自己的机会。

尝试在第二个表单上使用计时器(而不是您拥有的Sleep()方法),它将在3,000毫秒后关闭它。在Shown事件中启动它。关闭Tick事件中的表单。

public Form2() {
  InitializeComponent();
  this.Text = "Form2 that is useless";
  timer1.Interval = 3000;
}

private void Form2_Shown(object sender, EventArgs e) {
  timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e) {
  this.Close();
}