从另一个表单访问Button属性

时间:2012-04-19 07:23:26

标签: c# winforms

我知道这是一个非常常见的问题,我的问题是我尝试了几种方法,而且没有一种方法适用于我。

我所拥有的是两种形式,我需要的是在一个表格上按下按钮,将第二个表格上按钮的启用属性设置为真。

正如我所说,我已经尝试了多种方法,到目前为止还没有一种方法。

4 个答案:

答案 0 :(得分:3)

我们打电话给你的表格表格A 表格B

表单A 是否包含表单B 的实例?它是否称为 FormB.Show()

如果是,您可以在表单B 中创建一个事件,并让表单A 监听它。

如果没有,您仍然可以在表单B 中创建活动,但是您有任何名为表单B 的内容,请听取它,然后将消息传递给< strong>表格A

将其放入表格B

public delegate void ClickButton();
public event ClickButton ButtonWasClicked;

单击该按钮时,调用ButtonWasClicked();

private void button1_Click(object sender, EventArgs e)
{
    ButtonWasClicked();
}

将其放入表单A

private FormB formB;

public FormA()
{
    InitializeComponent();
    formB = new FormB();
    formB.ButtonWasClicked += new FormB.ClickButton(formB_ButtonWasClicked);
}

void formB_ButtonWasClicked()
{
    label1.Text = "Button was clicked: " + DateTime.Now.ToString();
}

来源:

http://darin.hoover.fm/code/dl/FormEvents.zip

答案 1 :(得分:1)

您可以在第二个表单PUBLIC上创建一个按钮(您可以在* cs文件中或在VS中的控件的“属性”窗口中执行此操作)并将第二个表单的实例添加到第一个表单。或者,您可以在第二种形式中声明一些delegate,以更改按钮属性,并在第一种形式中调用它。 实际上还有更多变种,我刚刚提到2:)

答案 2 :(得分:1)

您应该在第二种形式中创建一个启用按钮的公共方法,并在第一种形式中添加对第二种形式的引用。然后,在OnClick事件上调用该方法。

这是我创建的示例代码:

的Class1.cs

class Class1
    {

            Form2 form2 = new Form2();
            Form1 form1;

            public Class1()
            {
                //Application.Run(form1);
                //Application.Run(form2);
               form1 = new Form1(form2);
                form1.ShowDialog();

            }

    }

Form2.cs

public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public void enableB()
        {
            button1.Enabled = true;
        }
    }

Form1.cs的

public partial class Form1 : Form
    {
        Form2 f2;
        public Form1(Form2 f)
        {
            InitializeComponent();
            f2 = f;
            f2.Show();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            f2.enableB();
        }
    }

希望有所帮助

答案 3 :(得分:0)

这闻起来像家庭作业。 您需要了解彼此的2个表格。通过将实例添加到一个表单,或者让第三个对象控制两个表单。您可以多次注册按钮单击事件。 (即你可以有5个表格听1个表单按钮点击,所有5个表单可能有不同的反应)。这样,您可以让按钮单击影响其自己的表单,第二个表单也可以注册到事件,并根据需要将其自己的按钮设置为true / false。 例如:

public class MyForm : Form
{
    MyOtherForm OtherForm;
    public MyForm()
    {
        InitializeComponent();
        OtherForm = new MyOtherForm();
        OtherForm.ButtonINeedToListenFor.Click += new EventHandler(ButtonINeedToListenFor_Click);
    }

    void ButtonINeedToListenFor_Click(object sender, EventArgs e)
    {
         this.MyDependingButton.Enabled = false;
    }
}