c# - 如何找到打开当前打开的表单的表单?(C#,WinForms)
问题描述
所以我基本上有一个打开的表格,我需要检查什么表格叫那个打开
“父窗体”
private void btnEnter_Click(object sender, EventArgs e)
{
this.Close();
newForm nf = new newForm();
nf.Show()
}
“打开的表格”
private void newForm_Load(object sender, EventArgs e)
{
if parent is ("oldForm") // Need to know how to code for this line.
{
//do some stuff here
}
else
{
//Do something different
}
}
因此,例如,如果 oldForm 是调用这个表单的表单,那么会发生一些特定的事情,如果“anotherForm”调用它就不会发生
解决方案
您可以在表单中添加一个“父”属性,并在调用 Show 之前设置它。
private void btnEnter_Click(object sender, EventArgs e)
{
this.Close();
newForm nf = new newForm();
nf.Parent = this;
nf.Show()
}
您的表单将如下所示:
public class MyForm
{
public Form Parent {get;set;}
private void newForm_Load(object sender, EventArgs e)
{
if (this.Parent is oldForm)
{
//do some stuff here
}
else
{
//Do something different
}
}
}
请注意,这if (this.Parent is oldForm)
相当于if (this.Parent.GetType() == typeof(oldForm))
正如其中一条评论所说,如果您仅使用 Parent 属性来做出这一决定,则最好将其定义为布尔属性,称为DoSomething
指示它的作用。将此与其他建议相结合给出:
public class MyForm
{
private bool specialMode;
public MyForm(bool mode)
{
this.specialMode = mode;
}
private void newForm_Load(object sender, EventArgs e)
{
if (this.specialMode)
{
//do some stuff here
}
else
{
//Do something different
}
}
}
你会这样称呼它:
private void btnEnter_Click(object sender, EventArgs e)
{
this.Close();
newForm nf = new newForm(true); // SpecialMode = ON
nf.Show()
}
推荐阅读
- performance - 使用 RediSearch 请求特定字段(不是所有字段)
- javascript - 如何使用 JavaScript 根据复选框值显示/隐藏菜单?
- r - 拼出街道名称的方向
- ios - 自定义 UIViewController 中的选择器不调用类中的函数
- c# - SQLite 获取列的约束
- php - 无法在 Nodejs 中使用加密模块解密
- javascript - 没有 ctrl 的 HTML 多选选项有限
- python - Python 3 未正确附加到列表
- javascript - d3 复选框 - 标签/输入顺序
- javascript - .change() 适用于 chrome 控制台,但不适用于我的 chrome 扩展