c# - 重新利用现有的 GUI,同时保留大部分相同的功能

标签 c# winforms oop

我正在开发一个用户管理系统,我想在其中重新使用“添加用户”表单的“编辑用户”表单的 GUI,这仅更改一些功能。

例如,在我的“添加用户”中,“用户 ID”设置为下一个可用 ID,“用户名”、“密码”、“确认密码”和“组”留空。有一个“添加用户”按钮,可以对上述字段执行验证,表单的标题是“添加用户”

编辑用户需要更改的只是填写正在编辑的用户的数据(从我的 DataGridView 获取 DataRow 不是问题)并将“添加”按钮更改为“编辑用户”按钮,同时仍然执行相同的验证,并将表单的标题更改为“编辑用户”。

这样的事情可能吗?这种类型的使用应该被称为什么,以便我可以更有效地用谷歌搜索它?

最佳答案

这绝对是可能的,而且一直都是这样做的。当您实例化添加表单时,您通常会执行如下操作:

using (AddUserForm form = new AddUserForm())
{
  form.ShowDialog();
}

如果您想编辑用户:

using (AddUserForm form = new AddUserForm(user))
{
  form.ShowDialog();
}

请注意,您将有两个表单构造函数。在 AddUserForm(您实际上应该将其称为 ModifyUserForm 或 UserForm)的代码中,如果用户为 null,则执行 Add(),如果用户不为 null,则执行 Update()。

构造函数示例:

public AddUserForm()
{
  this._user = new User();
}

public AddUserForm(User user)
{
  this._user = user;
}

然后保存:

private void SaveUser()
{
  if (this._userId == 0)
  {
    MyDal.AddUser(this._user);
    return;
  }

  MyDal.UpdateUser(this._user);
}

我在没有 Visual Studio 的情况下完成了这一切,所以我不保证它可以编译。 :)

关于c# - 重新利用现有的 GUI,同时保留大部分相同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10300530/

相关文章:

ruby-on-rails - Rails - 参数数量错误(2 个代表 0..1)错误

java - 从一个类到外部类的指针?

Java - 避免静态函数的 switch 语句

c# - 为 ASP.NET 升级 Telerik RAD 控件

c# - 拒绝访问 .tmp 路径

c# - 使用指定的字体名称在 Excel 中查找和替换文本

c# - 在游戏/程序运行时创建覆盖屏幕?

C# - 隐藏表单,只显示标签?

c# - 权限拒绝 : requires android. permission.READ_PHONE_STATE

c# - 在 ASP.NET Core 中修改静态文件响应