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

时间:2013-07-04 12:41:47

标签: c# .net winforms

我有一个小问题,我form1 button1button2我得到了form2,我可以用两个按钮打开它。 Button1用作开放表单2并将详细信息插入到SQL DB中,可以在form1 datagridview中看到。 Button2打开相同的form2,但它从form1中选择数据并自动将它们填充到form2中的文本框中 - 它是类似于编辑的。

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

我认为每次打开form2时我都应该通过integer所以当加载form2时,它应该决定打开哪个按钮并根据该行为进行操作。

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

由于

4 个答案:

答案 0 :(得分:2)

您需要更改表单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

来应用你的逻辑

答案 1 :(得分:1)

你应该创建一个新的构造函数,它接受按钮引用(更好的名称,或任何你可以放入未使用的属性“Tag”来识别它们)   或b)公开方法,在打开表格之前调用(但在实例化之后)或c)表格2中的属性,可以采取任何你决定用作“分散的东西。”

好吗?

答案 2 :(得分:1)

form2中定义一个新的构造函数,它接受一个字符串,调用按钮的名称,作为一个参数,然后从按钮中将按钮的名称作为参数发送到form2并在form2中检查用于检测来电按钮的名称ButtonName参数。

答案 3 :(得分:1)

个人而言,不是传递按钮或文本或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); (根据您正在处理的按钮点击进行编辑或显示)