2013-07-04 53 views
1

我有一个小问题打开窗口2,我有form1在我button1button2和我form2这我能够用两个按钮来打开。 Button1充当开放的form2并将详细信息插入SQL DB中,这可以在form1 datagridview中看到。 Button2打开相同的form2,但它从form1中选择数据并自动将它们填充到form2中的文本框中 - 它是编辑式的。从两个按钮(Form1中)及配套按钮被点击

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

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

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

感谢

+0

的方法之一是实现Form2的两种方法哪个做适当的配置和不是打电话展( )。从button1点击调用第一个方法,从button2点击第二个方法。或者您在Form2中创建一个属性IsEditMode,它将在显示之前正确配置Form2。 – wonko79

回答

1

个人申请你的逻辑,而不是通过按钮或文本或布尔我会明确并创建一个枚举 - 它传递给构造函数,所以你知道,如果你在编辑或显示模式下。 (如果新的'模式'成为要求,这会覆盖你)。

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); (传递编辑或显示这取决于哪个按钮,点击你正在处理)

1

您应该创建一个)一个新的构造,这需要的按钮引用(更好的名字,或任何你可以投入自己的闲置物业的“标签”,以确定它们) 或b)的公共方法,您打开表单之前(但实例化之后)致电或c)在窗口2一个属性,它可以采取任何你决定为“计算微分东西使用。

好吗?

1

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

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布尔