我有一个小问题,我form1
button1
和button2
我得到了form2
,我可以用两个按钮打开它。 Button1用作开放表单2并将详细信息插入到SQL DB中,可以在form1 datagridview中看到。 Button2打开相同的form2,但它从form1中选择数据并自动将它们填充到form2中的文本框中 - 它是类似于编辑的。
当我创建button2
(编辑按钮)时出现问题,因为form2
不知道打开了哪个按钮。
我认为每次打开form2
时我都应该通过integer
所以当加载form2时,它应该决定打开哪个按钮并根据该行为进行操作。
有人会帮我解决这个问题吗?
由于
答案 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);
(根据您正在处理的按钮点击进行编辑或显示)