Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何简化积垢_C#_Winforms - Fatal编程技术网

C# 如何简化积垢

C# 如何简化积垢,c#,winforms,C#,Winforms,嗨,我想简化我在crud messagebox上的代码。我目前有将近20多页的CRUD表单,其中有4个按钮:创建、更新、删除和重置。如何将其简化为用户控件?这样我就不必继续写保存成功,对不起,错误 我的代码 protected override void btnSave_Click(object sender, EventArgs e) { if (!validateBeforeSave()) return; if (MessageBox.Show(M

嗨,我想简化我在crud messagebox上的代码。我目前有将近20多页的CRUD表单,其中有4个按钮:创建、更新、删除和重置。如何将其简化为用户控件?这样我就不必继续写保存成功,对不起,错误

我的代码

 protected override void btnSave_Click(object sender, EventArgs e)
    {
        if (!validateBeforeSave()) return;

        if (MessageBox.Show(MessageManager.SaveAsk, "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            try
            {                  
                BindValueToObject();                   

                if (Convert.ToInt32(lblEmpId.Text) == 0)
                {
                    user.Add();
                    ResetAfterSave(true, user.Id);
                    base.Success = true;
                }
                else
                {
                    user.Update();
                    ResetAfterSave(false, user.Id);
                    base.Success = true;
                }
                base.btnSave_Click(this, null);
            }
            catch (Exception ex)
            {
                Logger.Error(typeof(UsersForm), ex.ToString());
                base.Success = false;
                base.btnSave_Click(this, null);
            }
        }
    }
    protected override void btnDelete_Click(object sender, EventArgs e)
    {
        if (null == dgUser.CurrentRow) return;
        user.Id = (int)dgUser.SelectedRows[0].Cells["empId"].Value;

        try
        {
            if ((MessageBox.Show(MessageManager.DeleteAsk, "Are you sure to delete?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes))
            {
                user.Delete();
                ResetAfterSave(false, 0);
                base.Success = true;
                base.btnDelete_Click(this, null);
            }
        }
        catch
        {
            base.Success = false;
            base.btnDelete_Click(this, null);
        }
    }
base.btnSave\u单击此按钮,为空;在我穿过旗子的地方叫这个

 protected virtual void btnSave_Click(object sender, EventArgs e)
    {
        if (this.success)
            MessageBox.Show(MessageManager.SaveSuccess, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        else
        {
            MessageBox.Show(MessageManager.SaveFailed, "Fail to save", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            return;
        }
    }

一遍又一遍地重写这篇文章,我感到非常恼火

对不起,我的意思是提取而不是封装..在提取方法时可以封装字段。您可以从重构>提取方法中选择此选项。将这些方法写在主窗体中并公开。然后在整个应用程序中使用它们

我有一个更好的选择,但如果这样做有危险,我想纠正自己

我们要做的是在主窗体中声明事件处理程序public

例如

public virtual void btnSave_Click(object sender, EventArgs e)
    {
        if (this.success)
            MessageBox.Show(MessageManager.SaveSuccess, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        else
        {
            MessageBox.Show(MessageManager.SaveFailed, "Fail to save", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            return;
        }
    }

现在,在任意窗体中选择任意保存按钮,转到属性>事件>并选择btnSave\u单击。您可以在整个软件中使用相同的方法,前提是您在任何地方都可以运行相同的代码。

一些代码可以很好地演示您正在做什么。我认为这取决于您如何设计UI。对于我来说,通常我使用delete和update链接检索。通常,选择是在加载时完成的,然后用户可以进行筛选,或者单击他们想要更新或删除的内容。这三个部分合在一起,形成一页。插入功能将以弹出窗口的形式出现,在弹出窗口中显示一个新的用户界面。我认为有CRUD但没有弹出窗口的页面更好。这将有助于你可视化一个页面,页面左侧有gridview,右侧有一些控件,例如textbox。。单击gridview将向右侧的控件显示这些数据。@Woot4Moo:Hi我已经添加了代码。请advice@belinq:尝试封装重复方法。