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