当我运行程序时,第二个表单仅打开半秒钟。我是编码新手,尤其是 C# 新手。我的目标是有一个列表视图,我可以在其中使用添加按钮添加“商品”和“供应商”。
//来自MainForm.cs的代码
namespace Supply_business.Forms
{
public partial class MainForm : Form
{
public Contracts Contract;
public MainForm()
{
Contract = new Contracts();
InitializeComponent();
}
private void DisplayContent()
{
lsview2.Items.Clear();
Contract.Goods.Sort();
lsview1.Items.Clear();
Contract.Suppliers.Sort();
foreach (var supplier in Contract.Suppliers)
{
ListViewItem lvi = new ListViewItem(supplier.Name);
lvi.SubItems.Add(supplier.Email);
lvi.Tag = supplier;
lsview1.Items.Add(lvi);
}
foreach (var good in Contract.Goods)
{
ListViewItem lvi = new ListViewItem(good.Name);
lvi.SubItems.Add(good.Description);
lvi.SubItems.Add(good.Price.ToString());
lvi.SubItems.Add(good.Quantity.ToString());
lvi.Tag = good;
lsview2.Items.Add(lvi);
}
}
private void AddBtn_Click(object sender, EventArgs e)
{
AddEditContract addEditContract = new AddEditContract();
Good good = new Good();
addEditContract.thisGood = good;
if (addEditContract.ShowDialog() == DialogResult.OK)
{
Contract.Goods.Add(good);
DisplayContent();
}
}
private void AddBtn2_Click(object sender, EventArgs e)
{
AddEditSuppliercs addEditSuppliercs = new AddEditSuppliercs();
Supplier supplier = new Supplier();
addEditSuppliercs.thisSupplier = supplier;
if (addEditSuppliercs.ShowDialog() == DialogResult.OK)
{
Contract.Suppliers.Add(supplier);
DisplayContent();
}
}
}
}
// Code from AddEditSuppliers
public partial class AddEditSuppliercs : Form
{
public Supplier thisSupplier { get; set; }
public AddEditSuppliercs()
{
InitializeComponent();
}
private void AddEditSuppliercs_Load(object sender, EventArgs e)
{
if (thisSupplier != null)
{
txtName.Text = thisSupplier.Name;
txtEmail.Text = thisSupplier.Email;
Close();
}
}
private void Okbtn_Click(object sender, EventArgs e)
{
if (thisSupplier != null)
{
thisSupplier.Name = txtName.Text;
thisSupplier.Email = txtEmail.Text;
Close();
}
}
}
}
调用 close() 相当于单击窗体标题栏上的关闭按钮 (x) 或调用 Dispose() 方法。它没有理由出现在 Form_Load 事件上。此外,将子窗体作为模式对话框打开也是一个很好的做法。另外,请确保将其包装在 using 语句中。这将确保表单得到正确处理并释放内存。