发起行动的按钮的商店财产

时间:2013-09-04 07:14:16

标签: c# .net winforms

On form1我想存储调用此表单的按钮名称,以便根据按钮点击执行一些代码

button bt1=new button();
button bt2=new button();

private void b1_click(object sender, eventargs e)
{
    form1 f1=new form1();
    f1.show();
}

private void b2_click(object sender, eventargs e)
{
    form1 f1=new form1();
    f1.show();
}

3 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点,我建议采用以下方法之一

使用表单构造函数:

form1 f1 = new form1("MyButtonName");

然后在表单

的构造函数中
public form1(string buttonName)
{
    this.ButtonName = buttonName;
}

或手动设置属性

form1 f1 = new form1();
f1.ButtonName = "MyButtonName";

我更喜欢使用前者,因为它会强制您指定创建新表单的按钮。

注意:您可以将属性名称更改为您喜欢的任何名称。

答案 1 :(得分:0)

在form1中添加名为CallerName的属性或成员。

在构造函数中设置它。

答案 2 :(得分:0)

如果你想只提供一个参数的新表格,我同意问题的好解决方案是用johan显示的一个参数创建构造函数。

如果要在显示表单之前对表单进行更多更改,可以在表单上创建属性,同时设置,设置表单属性或方法。 当你需要修改一个在代码中多个地方使用的表单的行为时,这很好。

例如,由具有默认构造函数的属性修改的表单:

public class MyForm : Form
{
    public string HeaderText
    {
        get {return this.Text;}
        set {this.Text = value;}
    }

    private MyLayoutEnum _LayoutStyle;
    public MyLayoutEnum LayoutStyle
    {
        get
        {
            return this._LayoutStyle;
        }
        set
        {
            this._LayoutStyle = value;
            switch (value)
            {
                case MyLayoutEnum.Basic:
                    {
                        //do work
                        break;
                    }
                case MyLayoutEnum.Advanced:
                    {
                        //do work
                        break;
                    }
                default:
                    {
                        //unsupported case - for example
                        break;
                    }
            }
        }
    }
}

public enum MyLayoutEnum : int
{
    None = 0,
    Basic = 1,
    Advanced = 2
}