您好我想在crud消息框上简化我的代码。我目前有近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_Click(this,null);我在下面传递这个标志。
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;
}
}
我觉得非常讨厌一遍又一遍地改写这个。
答案 0 :(得分:0)
抱歉,我的意思是提取而不是封装..可以在提取方法时封装字段。您可以从Refactor>中选择此选项。提取方法。以主要形式编写这些方法并将其公之于众。然后在整个应用程序中使用它们。
我有比这更好的选择,但如果这样做有害,我想纠正自己。
我们所做的是以主窗体声明事件处理程序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_Click。您可以在整个软件中使用相同的方法,前提是您可以在任何地方运行相同的代码。