从两个按钮(form1)和单击的匹配按钮中打开form2
本文关键字:按钮 form2 两个 form1 单击 | 更新日期: 2023-09-27 18:21:05
我有一个小问题,我有form1
,其中有button1
和button2
,还有form2
,我可以用两个按钮打开。按钮1用于打开form2并将详细信息插入到SQL DB中,这可以在form1数据网格视图中看到。Button2打开相同的表单2,但它从表单1中选择数据,并自动将它们填充到表单2中的文本框中——这是类似编辑的。
当我创建button2
(编辑按钮)时,出现了一个问题,因为form2
不知道是从哪个按钮打开的。
我想每次打开form2
时,我都应该通过integer
,所以当加载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
参数以检测调用方按钮。