gpt4 book ai didi

C# ShowDialog 父窗体为空

转载 作者:太空狗 更新时间:2023-10-29 19:53:15 29 4
gpt4 key购买 nike

我有两种形式。

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

}

如您所见,我正在使用与之前相同的屏幕再次提示他们。

LoadWorkstationFile 中有以下代码:

  if (this.Parent == null)
{
var sc = new ScanCheck();
sc.Show();
this.Hide();
}

初始加载一切正常。当我想再次加载它已加载的数据时,我最终得到了 2 个 LoadWorkstationFile 屏幕,因为 Parent 始终等于 null。

我的想法有误吗?当用 .ShowDialog 调用时,父级是否应该是 DisplayDataForm

像往常一样感谢。

最佳答案

您应该检查 Owner 而不是 Parent

您在 ShowDialog 的构造函数中设置的是 Owner 属性。它告诉其他形式“拥有”它的形式。父级(如 Mario 所示)描述了控件的所有权关系。

因此您应该将代码更改为:

if (this.Owner == null)
{
var sc = new ScanCheck();
sc.Show();
this.Hide();
}

它应该可以工作。

关于C# ShowDialog 父窗体为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731416/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com