从“主界面”单击某个按钮弹出“公司信息”界面
代码如下:
        private void btnMainLTD_Click(object sender, EventArgs e)
        {
            string Q_Ltd_str = "SELECT Ltd_Name,Ltd_Phone,Ltd_Fax,Ltd_Add,Ltd_EMail FROM tb_ltd_info";
            SqlDataReader Q_Ltd_DR = DBSetup.GetDR(Q_Ltd_str);
            Q_Ltd_DR.Read();            if (Q_Ltd_DR.HasRows)
            {
         //存在公司信息则传递
                VauleIO.LtdName = Q_Ltd_DR["Ltd_Name"].ToString();
                VauleIO.LtdPhone = Q_Ltd_DR["Ltd_Phone"].ToString();
                VauleIO.LtdFax = Q_Ltd_DR["Ltd_Fax"].ToString();
                VauleIO.LtdAddress = Q_Ltd_DR["Ltd_Add"].ToString();
                VauleIO.LtdEMail = Q_Ltd_DR["Ltd_EMail"].ToString();
            }
            Q_Ltd_DR.Close();            frmLtdInfo ThefrmLtdInfo = new frmLtdInfo();
            ThefrmLtdInfo.Show();
        }
“公司信息”界面有5个输入框,对应公司信息的几个字段
几个代码如下:
        private void frmLtdInfo_Load(object sender, EventArgs e)
        {
            //显示已有公司信息
            this.txtLtdInfoName.Text = VauleIO.LtdName;
            this.txtLtdInfoPhone.Text = VauleIO.LtdPhone;
            this.txtLtdInfoFax.Text = VauleIO.LtdFax;
            this.txtLtdInfoAdd.Text = VauleIO.LtdAddress;
            this.txtLtdInfoEMail.Text = VauleIO.LtdEMail;
        }
        private void frmLtdInfo_Activated(object sender, EventArgs e)
        {
            frmLtdInfo_Load(sender, e);
        }
        private void btnLtdInfoSave_Click(object sender, EventArgs e)
        {            if (this.txtLtdInfoName.Text.Trim() == VauleIO.LtdName && this.txtLtdInfoPhone.Text.Trim() == VauleIO.LtdPhone && this.txtLtdInfoFax.Text.Trim() == VauleIO.LtdFax && this.txtLtdInfoAdd.Text.Trim() == VauleIO.LtdAddress && this.txtLtdInfoEMail.Text.Trim() == VauleIO.LtdEMail)
            {
                //未更新则不作处理
                MessageBox.Show("没有更新任何数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            else
            {
                if (this.txtLtdInfoName.Text.Trim() == "")
                {
                    //提示未填写公司名称
                    MessageBox.Show("没有填写公司名称", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    if (VauleIO.LtdName == null && VauleIO.LtdPhone == null && VauleIO.LtdFax == null && VauleIO.LtdAddress == null && VauleIO.LtdEMail == null)
                    {
                        //无公司信息则添加
                        string InsertLtd_str = "INSERT INTO tb_ltd_info(Ltd_Name,Ltd_Phone,Ltd_Fax,Ltd_Add,Ltd_EMail) VALUES('";
                        InsertLtd_str += this.txtLtdInfoName.Text.Trim() + "','" + this.txtLtdInfoPhone.Text.Trim() + "','" + this.txtLtdInfoFax.Text.Trim() + "','" + this.txtLtdInfoAdd.Text.Trim() + "','" + this.txtLtdInfoEMail.Text.Trim() + "')";
                        DBSetup.RunSQL(InsertLtd_str);
                        MessageBox.Show("保存记录成功1!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        //更新公司信息
                        string UpdateLtd_str = "UPDATE tb_ltd_info SET Ltd_Name = '";
                        UpdateLtd_str += this.txtLtdInfoName.Text.Trim() + "',Ltd_Phone = '" + this.txtLtdInfoPhone.Text.Trim() + "',Ltd_Fax = '" + this.txtLtdInfoFax.Text.Trim() + "',Ltd_Add = '" + this.txtLtdInfoAdd.Text.Trim() + "',Ltd_EMail = '" + this.txtLtdInfoEMail.Text.Trim() + "'";
                        DBSetup.RunSQL(UpdateLtd_str);
                        MessageBox.Show("保存记录成功2!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    
                    //VauleIO.LtdName = this.txtLtdInfoName.Text.Trim();
                    //VauleIO.LtdPhone = this.txtLtdInfoPhone.Text.Trim();
                    //VauleIO.LtdFax = this.txtLtdInfoFax.Text.Trim();
                    //VauleIO.LtdAddress = this.txtLtdInfoAdd.Text.Trim();
                    //VauleIO.LtdEMail = this.txtLtdInfoEMail.Text.Trim();
                }
            }
        }在我添加或修改公司信息都能成功,但有一个问题是:在弹出MessageBox后,单击OK按钮会回到“公司信息”界面,修改过的输入框会自动改成修改前的内容。比如:原来的公司名称是“ABC”,我把“ABC”修改成“EFG”,在单击保存按钮后,弹出成功提示框,单击OK按钮回到公司信息界面,公司名称自动恢复成原来的“ABC”,查看数据库,公司名称字段保存的是修改后的“EFG”。

解决方案 »

  1.   

    原因很简单 把Activated事件去掉就好了,画蛇添足
      

  2.   

    最后一个代码段修改了messagebox出现的位置才正常:
    if (VauleIO.LtdName == null && VauleIO.LtdPhone == null && VauleIO.LtdFax == null && VauleIO.LtdAddress == null && VauleIO.LtdEMail == null)
                        {
                            //无公司信息则添加
                            string InsertLtd_str = "INSERT INTO tb_ltd_info(Ltd_Name,Ltd_Phone,Ltd_Fax,Ltd_Add,Ltd_EMail) VALUES('";
                            InsertLtd_str += this.txtLtdInfoName.Text.Trim() + "','" + this.txtLtdInfoPhone.Text.Trim() + "','" + this.txtLtdInfoFax.Text.Trim() + "','" + this.txtLtdInfoAdd.Text.Trim() + "','" + this.txtLtdInfoEMail.Text.Trim() + "')";
                            DBSetup.RunSQL(InsertLtd_str);
                        }
                        else
                        {
                            //更新公司信息
                            string UpdateLtd_str = "UPDATE tb_ltd_info SET Ltd_Name = '";
                            UpdateLtd_str += this.txtLtdInfoName.Text.Trim() + "',Ltd_Phone = '" + this.txtLtdInfoPhone.Text.Trim() + "',Ltd_Fax = '" + this.txtLtdInfoFax.Text.Trim() + "',Ltd_Add = '" + this.txtLtdInfoAdd.Text.Trim() + "',Ltd_EMail = '" + this.txtLtdInfoEMail.Text.Trim() + "'";
                            DBSetup.RunSQL(UpdateLtd_str);
                        }
                        
                        VauleIO.LtdName = this.txtLtdInfoName.Text.Trim();
                        VauleIO.LtdPhone = this.txtLtdInfoPhone.Text.Trim();
                        VauleIO.LtdFax = this.txtLtdInfoFax.Text.Trim();
                        VauleIO.LtdAddress = this.txtLtdInfoAdd.Text.Trim();
                        VauleIO.LtdEMail = this.txtLtdInfoEMail.Text.Trim();            MessageBox.Show("保存记录成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);