嗨,我想简化我在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;
}
}我觉得一遍又一遍地重写这篇文章非常烦人。
发布于 2011-04-19 18:44:39
对不起,我的意思是提取不能在方法提取时封装Encapsulating..fields。您可以从Refactor > Extract Method中选择此选项。在main表单中编写这些方法,并将其公开。然后在整个应用程序中使用它们。
我有一个比这更好的选择,但如果这样做是危险的,我想纠正自己。
我们所做的是在主窗体中声明事件处理程序为公共。
例如
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。您可以在整个软件中使用相同的方法,前提是您有相同的代码可以在任何地方运行。
https://stackoverflow.com/questions/5710865
复制相似问题