0

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();
}
4

3 に答える 3

0

新しいフォームにパラメーターを 1 つだけ提供したい場合は、johan が示すように、パラメーターを 1 つ持つコンストラクターを作成することが問題の適切な解決策であることに同意します。

フォームを表示する前にさらに変更を加えたい場合は、フォームのプロパティまたはメソッドを設定しながら、フォームにプロパティを作成できます。コード内の複数の場所で使用される 1 つのフォームの動作を変更する必要がある場合に適しています。

たとえば、デフォルトのコンストラクターを使用してプロパティによって変更されたフォーム:

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
}
于 2013-09-04T11:06:22.090 に答える
0

CallerName という form1 のプロパティまたはメンバーを追加します。

コンストラクタで設定します。

于 2013-09-04T07:28:47.467 に答える
0

これには複数の方法がありますが、次のいずれかの方法をお勧めします

フォーム コンストラクターの使用:

すなわち

form1 f1 = new form1("MyButtonName");

次に、フォームのコンストラクターで

public form1(string buttonName)
{
    this.ButtonName = buttonName;
}

またはプロパティを手動で設定する

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

新しいフォームを作成するボタンを指定する必要があるため、前者を使用することをお勧めします。

注: プロパティ名は好きな名前に変更できます。

于 2013-09-04T07:17:19.277 に答える