在父表单子表单中禁用按钮

时间:2015-05-13 12:36:44

标签: c# event-handling

我有两种形式。一个是带有按钮的父表单和带有单选按钮的子表单。我想启用/禁用父窗体中的按钮基于子窗体中的单选按钮是否已启用。我应该举办活动还是有另一种方法来实现这一目标。

2 个答案:

答案 0 :(得分:0)

事件是处理此问题的一种不错且强大的方法。 他们将需要更多的代码,但如果您想要一个可以在未来扩展的强大解决方案等,它可能是值得的。

另一方面,如果您只想快速解决问题,还有两个通用解决方案。

创建子表单时,可以向它传递对创建它的parrent表单的引用(通过构造函数)

类似

public partial class Form2 : Form
{
    private Form1 parrentForm;
    public Form2(Form1 parrent)
    {
      parrentForm = parrent;
    }

创建子表单时,将其传递给引用

//from inside Form1
Form2 frm2 = new Form2(this);

您可以在Form1

中声明一个公共方法
public void EnableButton() {
}

然后使用您存储的引用从form2调用它

parrentForm.EnableButton();

你甚至可以将Form1中的按钮公开(从gui中选择按钮,在属性窗格中将“Accessibility”属性更改为“Public”而不是默认的“Private”。

然后在form2中你可以做到

parrentForm.Button1.Enabled = false;

这些都是快速而有点肮脏的解决方案。 对于复杂的用途,事件更加清晰。

最后,选择最有意义的内容。

答案 1 :(得分:0)

我喜欢上面的答案,但只是提到,你也可以使用一个事件。

public event EventArg RadioButtonHasChanged;