Windows窗体中的多个用户

本文关键字:用户 窗体 Windows | 更新日期: 2023-09-27 18:20:46

我正在做一个项目,我需要一些实现的想法。到目前为止,我使用windows窗体。该应用程序将由同一台电脑上的不同用户使用。我不是一个好的关系人,所以我给你一个场景:

1。应用程序通过显示登录表单启动

2。用户"John"进入应用程序,并通过表单在数据库中进行一些修改。

3。"John"退出表单。此时,我希望登录表单再次显示用户"Brad"应该能够登录的位置。

4。"布拉德"应该能够看到"约翰"所做的修改,它也应该能够做出一些修改。

请帮我举几个例子。

稍后编辑:我试过这个:

form_login login = new form_login();
DialogResult result = login.ShowDialog();
if (result == DialogResult.OK)
{
  Application.Run(new main_page());
}
else if (result == DialogResult.Yes)
{
  Application.Run(new admin_page());
}
else if (result == DialogResult.No) // Back button 
{
  Application.Run(new form_login());
}
else
{
  Application.Exit();
}

后期编辑:

我遇到的问题是用户何时注销。应用程序停止了,但我想要的是指向登录表单。

Windows窗体中的多个用户

您可以将其添加到Main起点。基本上,一旦用户通过登录表单,您需要能够再次循环通过该过程:

static void Main()
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  DialogResult running = DialogResult.OK;
  while (running == DialogResult.OK) {
    form_login login = new form_login();
    Application.Run(login);
    running = login.DialogResult;
    if (login.DialogResult == DialogResult.OK)
      Application.Run(new Form1());
      // or your other forms...
  }
}

这是假设您的登录表单有一个"确定"和一个"取消"按钮来设置这些对话框结果。

如果登录成功,那么它将启动主窗体Form1。当用户关闭Form1时,它将再次启动登录表单。如果用户取消登录,则应用程序将退出。

假设所有更改都存储在数据库中,并且表单是用数据库中的内容初始化的,那么您不应该做任何特殊的事情。

这就像在说,

  1. 约翰把东西放在壁橱架子上的盒子里,然后离开了
  2. 后来,布拉德走了过来,看了看盒子
  3. 我该如何确保Brad看到John放在盒子里的东西

唯一需要记住的是,在任何用户看到表单之前,都需要使用数据库中的内容对表单进行初始化

此外,现在很少有一个只按顺序访问的多用户系统,一次访问不超过1个用户。如果你不确定是否总是这样,那么将其作为一个web应用程序来实现可能会更有意义。

然而,如果你正在构建一个类似销售点的系统,其中你需要条形码扫描仪或信用卡读卡器等硬件,你应该使用winforms应用程序——事实上,在这种情况下,它比网络应用程序更有意义——将所有数据保存在一个中央共享数据库中,如MS SQL Server,可以解决大部分同步问题。

更新

如果你真的在问如何在用户注销时保持应用程序运行:Application.Run()实际上应该只在应用程序启动时调用一次。您将启动您的主表单:

  using(var mainForm = new MainForm())
    Application.Run(mainForm);

例如,类MainForm可能代表您的主数据输入屏幕。

MainForm将负责确定用户是否已登录,并在必要时显示模式登录表单

在c#中使用多个窗体