【问题标题】:Re-purposing an existing GUI, while keeping most of the same functionality [closed]重新利用现有的 GUI,同时保留大部分相同的功能 [关闭]
【发布时间】:2012-05-05 05:51:51
【问题描述】:

我正在开发一个用户管理系统,我想在其中将 GUI 重新用于添加用户表单的编辑用户表单,这只是更改了一些功能。

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

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

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

【问题讨论】:

  • 感谢您在没有帮助我的情况下投反对票。非常感谢。
  • 问题表明您没有付出任何努力。你有没有尝试过什么?投反对票并投票结束。
  • 我试图检查事件发送者并查看哪个按钮启动了表单,但事实证明这很困难,并且需要大量重写代码。我已经尝试在谷歌上搜索“GUI 重用”和“GUI reuporsing”,以至少了解那里有什么样的帮助,或者找到更好的术语,因为我确定我称其为不正确。
  • 伙计,坚强的人群。我不同意这个被关闭。我认为这是一个有答案的诚实问题(如下)。
  • REEEEEEEEEEEEEEEEEEEEEEEEE-OPPPPPPPPPPPPPPPPPPPPPEEEEEEEEEEENNNNNNNN!

标签: c# winforms oop


【解决方案1】:

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

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 的情况下完成了这一切,所以我不保证它可以编译。 :)

【讨论】:

  • 这就是我最终做的,但不像你在这里那样优雅。我会稍微修改一下我的代码,但我很感谢你抽出时间来帮助我。 :)
  • 很高兴为您提供帮助。不要让反对票打扰您。有时会发生这种情况。好问题,兄弟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
相关资源
最近更新 更多