我有两种形式.
该LoadWorkstationFile提示他们要加载的ID的用户.
该DisplayDataForm显示ID的数据,他们选择了以前屏幕上.
在DisplayDataForm中,他们可以单击一个选项来加载新数据,该数据将LoadDataForm称为ShowDiaglog:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
var answer = MessageBox.Show("Do you wish to save the current work file before continuing?", "Confirmation",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (answer == DialogResult.Cancel)
return;
if (answer == DialogResult.Yes)
SaveWorkFile();
var prevworkstationid = Configuration.WorkstationId;
var lw = new LoadWorkstationFile();
lw.ShowDialog(this);
if (Configuration.WorkstationId != prevworkstationid)
{
LoadData();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我使用与之前相同的屏幕再次提示他们.
在LoadWorkstationFile中,它具有以下代码:
if (this.Parent == null)
{
var sc = new ScanCheck();
sc.Show();
this.Hide();
}
Run Code Online (Sandbox Code Playgroud)
初始加载一切都很好.当我想再次加载数据时它已加载,我最终得到2个LoadWorkstationFile屏幕,因为Parent总是等于null.
我有错误的想法吗?当使用.ShowDialog调用父元素时,它应该是DisplayDataForm吗?
谢谢你.
Nig*_*ler 19
你应该检查Owner而不是Parent
您在ShowDialog的构造函数中设置的是Owner属性.这告诉其他形式"拥有"它的形式.父母(如Mario所示)描述了Control的所有权关系.
所以你应该将你的代码更改为:
if (this.Owner == null)
{
var sc = new ScanCheck();
sc.Show();
this.Hide();
}
Run Code Online (Sandbox Code Playgroud)
它应该工作.