C# 从两个按钮(form1)和单击的匹配按钮打开form2

C# 从两个按钮(form1)和单击的匹配按钮打开form2,c#,.net,winforms,C#,.net,Winforms,我有一个小问题,我有一个表格,里面有按钮1和按钮2,还有一个表格2,我可以用两个按钮打开。Button1用于打开form2并将详细信息插入SQL DB,可以在form1 datagridview中看到。按钮2打开相同的表单2,但它从表单1中选择数据,并自动将其填充到表单2中的文本框中,就像编辑一样 当我创建button2编辑按钮时,出现了一个问题,因为form2不知道从哪个按钮打开 我认为每次打开form2时,我都应该传递整数,因此当加载form2时,它应该决定从哪个按钮打开它,并根据该按钮进行

我有一个小问题,我有一个表格,里面有按钮1和按钮2,还有一个表格2,我可以用两个按钮打开。Button1用于打开form2并将详细信息插入SQL DB,可以在form1 datagridview中看到。按钮2打开相同的表单2,但它从表单1中选择数据,并自动将其填充到表单2中的文本框中,就像编辑一样

当我创建button2编辑按钮时,出现了一个问题,因为form2不知道从哪个按钮打开

我认为每次打开form2时,我都应该传递整数,因此当加载form2时,它应该决定从哪个按钮打开它,并根据该按钮进行操作

有人能帮我解决这件事吗


谢谢

您应该创建一个新的构造函数,它采用button reference更好的名称,或者您可以将任何内容放入其未使用的属性标记中以识别它们 或者b是一个公共方法,在打开表单之前但在实例化它之后调用它,或者c是form2中的一个属性,它可以接受任何您决定用作区分对象的内容


好吗?

您应该创建一个新的构造函数,它采用button reference更好的名称,或者您可以将任何内容放入其未使用的属性标记中以识别它们 或者b是一个公共方法,在打开表单之前但在实例化它之后调用它,或者c是form2中的一个属性,它可以接受任何您决定用作区分对象的内容


确定吗?

在form2中定义一个新的构造函数,该构造函数采用字符串、调用按钮的名称作为参数,并从按钮将按钮的名称作为参数发送到form2,在form2中检查name ButtonName pararmeter以检测调用方按钮。

在form2中定义一个新的构造函数,该构造函数采用字符串,调用按钮的名称,作为参数和from按钮将按钮的名称作为参数发送到form2,并在form2中检查名称按钮名称参数,以检测调用方按钮。

您需要更改表单2的构造函数,以在不同模式下打开表单

就这样,

表格2.cs

    public Form2(bool fromButton2)
    {
        InitializeComponent();
        //Do whatever with that bool
    }
您可以这样打开表单:

表格1.cs

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(false);
        frm.Show();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(true);
        frm.Show();
    }

然后,您可以使用fromButton2 bool应用您的逻辑。您需要更改表单2的构造函数,以便以不同的模式打开表单

就这样,

表格2.cs

    public Form2(bool fromButton2)
    {
        InitializeComponent();
        //Do whatever with that bool
    }
您可以这样打开表单:

表格1.cs

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(false);
        frm.Show();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(true);
        frm.Show();
    }

然后,您可以亲自使用fromButton2 bool应用您的逻辑,而不是传递按钮、文本或bool,我将显式地创建枚举-将其传递给构造函数,以便知道您是否处于编辑或显示模式。如果新的“模式”成为一项要求,这将涵盖您,例如

 public enum EditingType
    {
        Display,
        Editing
    }

    public class Form2
     {
        private EditingType _editingType;

        public Form2(EditingType editingType)
        {
            _editingType = editingType;
        }

        public void DoSomething()
        {
            if (_editingType == EditingType.Display)
            {
                // display mode
            }

            if (_editingType == EditingType.Editing)
            {
                // editing mode
            }
        }
     }
并调用-form2form2=newform2editingtype.Editing;
传递编辑或显示取决于您亲自处理的按钮单击,而不是传递按钮、文本或bool,我将显式地创建枚举-将其传递给构造函数,以便知道您是否处于编辑或显示模式。如果新的“模式”成为一项要求,这将涵盖您,例如

 public enum EditingType
    {
        Display,
        Editing
    }

    public class Form2
     {
        private EditingType _editingType;

        public Form2(EditingType editingType)
        {
            _editingType = editingType;
        }

        public void DoSomething()
        {
            if (_editingType == EditingType.Display)
            {
                // display mode
            }

            if (_editingType == EditingType.Editing)
            {
                // editing mode
            }
        }
     }
并调用-form2form2=newform2editingtype.Editing;
根据正在处理的按钮单击,传入编辑或显示

一种方法是在Form2中实现两种方法,它们进行正确的配置,然后调用显示。从button1 click调用第一个方法,从button2 click调用第二个方法。或者在Form2中创建一个属性IsEditMode,该属性在显示前正确配置Form2。一种方法是在Form2中实现两个方法,进行正确配置,然后调用Show。从button1 click调用第一个方法,从button2 click调用第二个方法。或者在Form2中创建一个属性IsEditMode,该属性在显示之前正确配置了Form2。