- 声明您在表单中添加/编辑的对象类型的实例。
- 在表单中添加一个 bool isEdit 并将其设置为 false
- 添加一个方法 public void Initialize(ObjectType name)
- 您的 Initialize 方法应将表单实例设置为等于参数,并且应设置布尔标志 isEdit = true。
- 将所有加载数据/填充控件(如组合框)的代码放入表单加载事件中。
在加载事件的底部,填充控件后执行
if (isEdit)
{
//Set your controls selected values from the object you are editing
}
现在,对于新对象,只需制作您的表单并在其上调用 Show 或 ShowDialog。这将导致 Load 事件触发并且您的控件将被填充。
对于编辑,制作您的表单,调用 Initialize,然后执行 Show/ShowDialog。由于您的 Initialize 方法设置了 isEdit = true,因此加载事件底部的 if(isEdit) 代码块将被触发,并且控件值将设置为等于您正在编辑的对象的属性。
这是一些非常简单的示例代码:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//This is simulating an add...First Language will be displayed on form2,
//which is English
Form2 form = new Form2();
form.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{
//This is simulating an edit...this will display french
//(or whatever is passed in)
Form2 form = new Form2();
form.Initialize(Languages.French);
form.ShowDialog();
}
Languages editValue;
bool isEdit = false;
public Form2()
{
InitializeComponent();
}
public void Initialize(Languages var)
{
editValue = var;
isEdit = true;
}
private void Form2_Load(object sender, EventArgs e)
{
comboBox1.DataSource = Enum.GetValues(typeof(Languages));
if (isEdit)
{
comboBox1.SelectedItem = editValue;
}
}
public enum Languages
{
English = 0,
French = 1,
Spanish = 2,
German = 3
}