【发布时间】:2014-03-15 19:01:41
【问题描述】:
我有一个使用 VS 2010 (.NET 4.0) 开发的 .NET winforms 应用程序,操作系统是 Windows 7。在解决方案中,我有一个简单的表单,其中包含一个简单的日历控件。此表单在来自 2 个不同表单的按钮单击时调用。按钮点击调用如下:
// Parent Form
public class ParentForm : Form
{
// Button click event handler is as follows:
void btnCalendarClick(object sender, EventArgs e)
{
// ...other code
MyStatisClass.ShowCalendar();
}
}
//Calendar Form
public class CalendarForm : Form
{
// And the ShowCalendar method is as under..
public static void ShowCalendar()
{
using (CalendarForm frm = new CalendarForm())
{
if(frm.ShowDialog() == DialogResult.OK) { SelectedDate = frm.LastSelectedDate; }
}
}
}
现在我有 2 个父表单的副本,它们在设计和代码上几乎相似。但是,在一个表单中单击按钮时,日历会显示,而在另一个表单的按钮单击时,它会打开,但不会显示自身。但是我可以在任务栏中看到它,并且必须在不选择任何内容的情况下通过单击任务栏中的十字来关闭它,因为它永远不会在屏幕上显示。我检查了控件的所有选项卡顺序,尝试在日历表单上执行 BringToFront 并在父表单上执行 SendToBack,尝试使用 InvokeRequired 属性检查交叉线程,但我没有看到表单。另外,我在每一个可能的地方都放了try catch,看看是否有异常发生;但它没有被击中,实际上表单打开得很好。请让我知道是否缺少任何阻止我显示此表单的内容?
谢谢, 布山
【问题讨论】:
-
从发布的代码看来是不合理的,你的问题是“在设计上几乎相似”。
-
您是否要同时显示 2 个对话框?
标签: c# winforms forms controls