如何根据加载的表单启用对表单的控制?
例如,如果 Form3 从 Form1 打开,则将在 Form3 中启用的按钮是 button1,如果 Form3 从 Form2 打开,则将在 Form3 中启用的按钮是 button2。
如何根据加载的表单启用对表单的控制?
例如,如果 Form3 从 Form1 打开,则将在 Form3 中启用的按钮是 button1,如果 Form3 从 Form2 打开,则将在 Form3 中启用的按钮是 button2。
是的,您可以,只需在设置Owner
Form3 时设置Show
它,然后在Form3's
Load EventHandler 中检查所有者的类型以确定要启用哪个按钮。像这样的东西应该工作。
表格1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form3 frm3 = new Form3();
frm3.Show(this);
}
private void Form1_Load(object sender, EventArgs e)
{
Form2 frm2 = new Form2(); //Show Form2 for Testing
frm2.Show();
}
}
表格2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form3 frm3 = new Form3();
frm3.Show(this);
}
}
表格3
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
if (Owner == null) return; //Check to make sure there is an Owner
if (Owner.GetType() == typeof(Form1))
button1.Enabled = true;
else if (Owner.GetType() == typeof(Form2))
button2.Enabled = true;
}
}
我想if (typeof(ParentForm) == typeof(Form1))
会做你想做的。请记住,此检查完全基于类型,因此如果您有多个 Form1 实例,您可能会遇到一些问题。
他的意思是,如果您有一个 Form 类型的表单,那么如果您只查看类型,您将不知道哪个表单是父表单。
Form1 打开 Form3 并且两个表单都是 System.Windows.Forms 类型 Form2 打开 Form3 并且两个表单都是 System.Windows.Forms 类型
如果所有三种形式的类型都不同,则可以检查类型是否不同。否则,您必须检查名称。
form1.Name = "form1";
form2.Name = "form2";
form3.Name = "form3";
您将从 form1 中打开子表单
form3.ShowDialog(this);
在 form3 中,您可以检查父表单并检查其名称。如果它是 form2 做某事,否则做其他事情。