winforms 如何防止在窗体加载时执行事件

vwhgwdsa  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(148)

在加载表单时,我使用了以下代码

private void LlenarCampos()
        {
            NombreProducto.Text = productos.Nombre;
            ID.Text = productos.Producto_ID.ToString();
            Codigobarrafrm.Text = productos.CodigoBarra;
            Existenciafrm.Text = productos.Existencia.ToString();
            precio1frm.Value = (decimal)productos.Precio1;
            beneficio1frm.Value = (decimal)productos.Beneficio;
            Costo.Value = (decimal)productos.Costo;
            Existenciafrm.Enabled = false;
            ComboCategoria.SelectedItem = CategoriaYPresentaciones.Categoria.fromid(productos.Categoria_ID).Nombre;

        }

这段代码负责填充表单的所有字段,但是我有两个文本框,当EditValueChanged事件执行时,它们会进行计算。在表单填充了数据库数据并且用户进行了更改之前,我如何防止此事件发生?
这是文本框代码:

private void precio1frm_EditValueChanged(object sender, EventArgs e)
        {
            decimal beneficio = (precio1frm.Value - Costo.Value);
            beneficio1frm.Value = (beneficio / Costo.Value) * 100;
        }
k4ymrczo

k4ymrczo1#

您没有显示定义事件处理程序的位置,所以我假设您让设计器通过Windows窗体IDE来完成此操作。因此,如果您在设计器中查看文本框的事件,您会在那里看到它。
它的作用是创建以下代码(或类似代码):

precio1frm.EditValueChanged += precio1frm_EditValueChanged;

找到该代码(如果不确定其位置,请右键单击precio1frm_EditValueChanged的定义,然后选择“查找所有引用”或单击其上方的“引用”链接。从此处剪切该代码并将其粘贴到Form Load代码的末尾。根据需要对每个控件重复此操作。
这意味着在窗体加载完成之前不会激发事件处理程序

相关问题