嗨,我想简化我的CRUD按钮在我的基础形式。为此,我认为将所有这些转换为自定义控件是最佳实践。
我提到了Rocket框架,下面是他写的内容。他创建了一个自定义控件,该控件具有CRUD按钮和搜索按钮,并且loadAll按钮在同一行中对齐。然后,当我们需要某个特定的按钮时,我们可以像我们对网站图像所做的那样,抓取该按钮的位置,使所有图像成为1个图像。对我来说这听起来不错。
问题:
1)如何将此自定义控件按钮应用于我的GUI窗体?
2)如何简化我的CRUD按钮的确认消息和结果提示消息给用户?当我在save()事件之后按下save按钮和"This record is saved successfully / failed"时,我觉得在我所有的crud按钮上多次编写"Are you sure to save/ delete"是多余的。无论如何,我可以通过将它放到基于form CRUD的自定义控件中来简化它?例如,当用户按下Save按钮时,它将运行基于表单的确认消息,它将继续在数据模型上运行Save()事件,并返回到基于表单,以获得结果消息“successsfully save”。
public partial class AdminController : UserControl
{
public event EventHandler AddUpdateClick;
public event EventHandler DeleteClick;
public event EventHandler CreateNewClick;
public event EventHandler RefreshClick;
public event EventHandler FilterClick;
public event EventHandler LoadAllClick;
public AdminController()
{
InitializeComponent();
}
private void buttonDelete_Click(object sender, EventArgs e)
{
if (DeleteClick != null)
DeleteClick(sender, e);
}
private void buttonAddUpdate_Click(object sender, EventArgs e)
{
if (AddUpdateClick != null)
AddUpdateClick(sender, e);
}
private void buttonCreateNew_Click(object sender, EventArgs e)
{
if (CreateNewClick != null)
CreateNewClick(sender, e);
}
private void buttonLoadAll_Click(object sender, EventArgs e)
{
if (LoadAllClick != null)
LoadAllClick(sender, e);
}
private void buttonFilter_Click(object sender, EventArgs e)
{
if (FilterClick != null)
FilterClick(sender, e);
}
private void buttonRefresh_Click(object sender, EventArgs e)
{
if (RefreshClick != null)
RefreshClick(sender, e);
}
} 敬请指教
发布于 2011-03-25 18:43:57
1)编译后,用户控件将从工具箱中可用。查看工具箱最顶部的组。
2)如果AdminController已经被钩住,下面的代码调用它的DeleteClick事件:
if (DeleteClick != null)
DeleteClick(sender, e);要在调用删除事件之前实现确认消息,请考虑将上面的代码更改为:
if (DeleteClick != null)
{
if (MessageBox.Show("Are you sure to save?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
DeleteClick(sender, e);
}
}为了实现成功/失败消息,挂起事件的委托将通过传回布尔值来让AdminController知道更新是否成功。这可以使用自定义的EventArgs类来实现
public class AdminControllerEventArgs : EventArgs
{
public bool Success;
public AdminControllerEventArgs() : base()
{
Success = true;
}
}并将AdminController中的事件声明更改为使用AdminControllerEventArgs:
public partial class AdminController : UserControl
{
public delegate void AdminControllerEvent(object sender, AdminControllerEventArgs e);
public event AdminControllerEvent AddUpdateClick;
public event AdminControllerEvent DeleteClick;然后,可以按如下方式测试成功的价值:
AdminControllerEventArgs e = new AdminControllerEventArgs();
if (DeleteClick != null)
{
if (MessageBox.Show("Are you sure to save?", "Please Confirm", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
DeleteClick(sender, e);
if (adminControllerEventArgs.Success)
{
MessageBox.Show("This record is saved successfully.");
}
else
{
MessageBox.Show("This record is saved failed.");
}
}
}当数据库更新失败时,挂接到新事件的代理将需要设置e.Success = false。
https://stackoverflow.com/questions/5429841
复制相似问题