我怎样才能让我的第二个表格正确打开?

问题描述 投票:0回答:1

当我运行程序时,第二个表单仅打开半秒钟。我是编码新手,尤其是 C# 新手。我的目标是有一个列表视图,我可以在其中使用添加按钮添加“商品”和“供应商”。

2 个添加表单之一 主表格

//来自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();
            }
        }
    }
}
c# winforms listview
1个回答
0
投票

调用 close() 相当于单击窗体标题栏上的关闭按钮 (x) 或调用 Dispose() 方法。它没有理由出现在 Form_Load 事件上。此外,将子窗体作为模式对话框打开也是一个很好的做法。另外,请确保将其包装在 using 语句中。这将确保表单得到正确处理并释放内存。

© www.soinside.com 2019 - 2024. All rights reserved.