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

本文关键字:按钮 form2 两个 form1 单击 | 更新日期: 2023-09-27 18:21:05

我有一个小问题,我有form1,其中有button1button2,还有form2,我可以用两个按钮打开。按钮1用于打开form2并将详细信息插入到SQL DB中,这可以在form1数据网格视图中看到。Button2打开相同的表单2,但它从表单1中选择数据,并自动将它们填充到表单2中的文本框中——这是类似编辑的。

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

我想每次打开form2时,我都应该通过integer,所以当加载form2时,它应该决定从哪个按钮打开它,并根据它采取行动。

有人能帮我解决这个问题吗?

感谢

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

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

就像这样:

Form2.cs

    public Form2(bool fromButton2)
    {
        InitializeComponent();
        //Do whatever with that bool
    }

你这样打开你的表格:

Form1.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

应用您的逻辑

个人,而不是传递按钮、文本或布尔,我会显式地创建一个枚举-将其传递给构造函数,这样您就可以知道自己是处于编辑模式还是显示模式。(如果需要新的"模式",则包括在内)例如

 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
            }
        }
     }

并调用-Form2 form2 = new Form2(EditingType.Editing);(根据您正在处理的按钮点击传递编辑或显示)

您应该创建一个新的构造函数,它采用按钮引用(更好的名称,或者您可以将其放入未使用的属性"Tag"中以识别它们的任何名称)或者b)一个公共方法,你在打开表单之前(但在实例化它之后)调用它,或者c)form2中的一个属性,它可以接受你决定用作"thing to differentiate"的任何东西。

好吗?

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