可能有一个简单的解决方案,但我找不到任何东西。我有三种形式:
- 主菜单
- 表格 1
- 表格 2
Main Menu 和 Form 1 都可以启动 Form 2。我想做的是:
- 如果从 Form 1 启动 Form 2,则会禁用某些按钮。
然而
- 如果从主菜单启动 Form 2,则一切都已启用。
我知道某处有一个简单的解决方案,但我能找到的只是如何打开一个表单,并启用/禁用它的父控件,而不是在 Show() 或任何调用之前打开子表单和禁用控件。
可能有一个简单的解决方案,但我找不到任何东西。我有三种形式:
Main Menu 和 Form 1 都可以启动 Form 2。我想做的是:
然而
我知道某处有一个简单的解决方案,但我能找到的只是如何打开一个表单,并启用/禁用它的父控件,而不是在 Show() 或任何调用之前打开子表单和禁用控件。
您可以像这样向 Form2 类添加一个属性:
public bool HideSomeControls
{
get;
set;
}
然后,在 Form1.cs 中显示 Form2 之前,设置该属性:
form2instance.HideSomeControls = true;
form2instance.Show(); // or ShowDialog, depending...
然后,像这样向 Form2 添加一个 Load 事件处理程序:
private void Form2_Load(object sender, EventArgs e)
{
if (HideSomeControls)
{
someControl.Visible = false;
someOtherControl.Visible = false;
}
}
请注意,如果MainMenu
并Form1
共享 的单个实例Form2
,则必须在显示实例之前再次设置HideSomeControls
为in。false
MainMenu
Form2
您可以直接在表单中的属性内启用或禁用控件:
public bool FullControl {
get {
return btnNew.Enabled;
}
set {
btnNew.Enabled = value;
btnDelete.Enabled = value;
}
}
您也可以完全省略 getter(是的,您可以在 C# 中拥有只写属性):
public bool FullControl {
set {
btnNew.Enabled = value;
btnDelete.Enabled = value;
}
}
像这样调用表格
var frm = new Form2();
frm.FullControl = true; // or false
frm.Show();