我正在尝试直接从控制台应用程序实例化一个表单。
出现了一些奇怪的问题,当我调用Form1.Show()
时,新创建的表单并没有绘制所有的控件,并且会冻结(显示沙漏图标)。然而,当我调用ShowDialog()时,一切都很正常,除了我需要返回到控制台但我无法这样做,所以这不是一个选项...
我该如何使我的表单正确显示?我错过了什么吗?
OrderControlForm OrderControlBox = new OrderControlForm();
OrderControlBox.BuyEvent += new OrderControl.BuyDelegate(doBuy);
OrderControlBox.SellEvent += new OrderControl.SellDelegate(doSell);
OrderControlBox.Show();
上述代码是响应控制台用户输入的命令而调用的。
编辑: 以下是可工作的代码:
Thread mThread = new Thread(delegate()
{
StratControlBox = new StratControl(StratIDs);
StratControlBox.ShowDialog();
});
mThread.SetApartmentState(ApartmentState.STA);
mThread.Start();
我仍然不明白为什么必须调用 ShowDialog()
而不是 Show()
。
当我使用后者时,窗体只会在绘制后立即“消失”。