禁用按键,不同的地方形式是从
问题描述:
打开有可能是一个简单的解决办法,但我不能this.I找到任何有三种形式:禁用按键,不同的地方形式是从
- 主菜单
- 表1
- 表2
两个主菜单和表1可以启动表格2.我想要做的是:
- 如果Form 2从Form 1启动,则某些按钮被禁用。
然而
- 如果表2从主菜单中启动,一切都被启用。
我知道有一个简单的解决方案的地方,但所有我能找到的是如何打开一个窗体,并启用/禁用它的父母控制,没有表现出之前打开一个子窗体和禁用的控制()或任何被称为。
答
您可以将属性添加到窗体2类是这样的:
public bool HideSomeControls
{
get;
set;
}
然后,显示窗体2在Form1.cs,设置产权前:
form2instance.HideSomeControls = true;
form2instance.Show(); // or ShowDialog, depending...
然后,添加一个Load事件处理程序窗体2这样的:
private void Form2_Load(object sender, EventArgs e)
{
if (HideSomeControls)
{
someControl.Visible = false;
someOtherControl.Visible = false;
}
}
需要注意的是,如果MainMenu
和Form1
股的Form2
一个实例,你必须在MainMenu
重新设置HideSomeControls
到false
您展示Form2
实例之前。
答
您可以启用或直接在表单属性禁用控件:
public bool FullControl {
get {
return btnNew.Enabled;
}
set {
btnNew.Enabled = value;
btnDelete.Enabled = value;
}
}
您也可以完全离开了吸气剂(是的,你可以在C#中只写属性):
public bool FullControl {
set {
btnNew.Enabled = value;
btnDelete.Enabled = value;
}
}
呼叫的形式这样
var frm = new Form2();
frm.FullControl = true; // or false
frm.Show();
它是MDI子窗体? – Nazmul
您应该向构造函数中添加一个参数,以告知“Form 2”是否需要在禁用控件时打开它,然后在打开“Form 2”时将它们设置为适当的。 –
你可能会添加模式,或者在consttuctor中添加'Form'参数,然后'if(form is MainForm)'来检查类型 – LuckyLikey