繁体   English   中英

登录/注销/限制

[英]Log in/log out/restrictions

我已经在多个winforms中构建了应用程序。 第一种形式是登录表单。 当用户登录时,它将打开他另一种表单,比如说表单2,然后从那里我有菜单条,它带用户进一步进入表单3、4、5,依此类推。

我想要的是在右上角放置一个按钮,并将其命名为LOG OUT。此按钮将显示在所有表单上(当然,仅在第一个表单中不会显示),因此,当用户登录时,执行他需要做的事情,然后然后无论他身在何形式,都有能力注销。 当他注销时,第一个表格将再次弹出! 如何才能做到这一点? 登录后是否可以关闭表单1(登录表单,父表单)而不关闭整个应用程序(子表单)?

接下来,我需要设置限制...我的意思是,将有不同类型的用户,普通用户和管理员,将有更多可用选项。 我已经完成了登录部分,检查数据库中是否存在与textbox1和textbox2等匹配的用户名和密码,但是我需要一些建议来实现上面刚刚描述的内容。

谢谢,贝恩

 private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                SqlConnection con1 = getConnection();
                con1.Open();
                SqlCommand com1 = new SqlCommand();
                com1.Connection = con1;
                com1.CommandType = CommandType.Text;
                com1.CommandText = "select * from radnik WHERE username = '" + textBox2.Text + "' AND password = '" + textBox3.Text + "'";
                SqlDataReader reader = com1.ExecuteReader();

                if (reader.Read())
                {
                    MessageBox.Show("Uspesno ste se ulogovali!");
                    Form2 form2 = new Form2();
                    form2.Show();

                }
                else { MessageBox.Show("Doslo je do greske!"); }
            }

            catch (Exception ee)
            {
                MessageBox.Show(ee.StackTrace);

            }
            Refresh();

        }

这将检查登录信息

 private void stoloviToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        var form3 = new Form3();
        form3.Show();

    }

    private void stoloviToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

    private void sifrarnikToolStripMenuItem_Click(object sender, EventArgs e)
    {
        var form4 = new Form4();
        form4.Show();
    }

    private void rezervacijeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        var form6 = new Form6();
        form6.Show();
    }

    private void porudzbineToolStripMenuItem_Click(object sender, EventArgs e)
    {
        var form7 = new Form7();
        form7.Show();   
    }

    private void magacinToolStripMenuItem_Click(object sender, EventArgs e)
    {
        var form9 = new Form9();
        form9.Show();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        Form1 fr1 = new Form1();
            fr1.Show();

    }

这只会导致用户使用不同的winform

那是典型的MDI应用程序。 Main-Form(MDI Child的父级)将在左上角具有一个按钮,该按钮在用户登录时被激活。登录提示的表单将是模式表单。 当用户单击注销按钮时,您应该关闭所有子窗体,然后再次显示模式登录窗体。 关于用户的特权并不难,只需在数据库中的字段中包含该特定信息即可。 它可以是整数的字节,也可以是您喜欢的任何字节。 假设1 =普通用户,2 =管理员用户,依此类推。

我相信您将需要3个课程:

  1. 登录表单,用户将通过插入凭据并单击loginButton身份验证
  2. 一个窗体,用于保存菜单栏,其中可以通过按菜单按钮显示其他窗体
  3. 窗体,它将具有一个logoutButton和其他自定义控件(因此基本上您可以从中获取其他子窗体)

登录表单中,处理登录按钮单击,如下所示:

private void loginButton_Click(object sender, EventArgs e)
{
    if (Authenticated(username.Text, password.Text))
    {
        var mainForm = new MainForm();
        this.Visible = false;
        mainForm.Show(this);
    }
}

在主窗体中,添加一个用于窗体关闭事件的处理程序以及一些用于显示子项的处理程序:

public MainForm()
{
    InitializeComponent();
    FormClosing += MainForm_FormClosing;
}

void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
    this.Owner.Visible = true;
}

private void form1ToolStripMenuItem_Click(object sender, EventArgs e)
{
    var childForm = new ChildForm();
    childForm.Show(this);
}

在子窗体中,单击logoutButton ,获得对子窗体所有者(将是窗体)的引用,关闭其拥有的窗体(所有子窗体),然后关闭窗体本身:

private void logoutButton_Click(object sender, EventArgs e)
{
    var owner = ((MainForm)this.Owner);
    foreach (var childForm in owner.OwnedForms)
    {
        childForm.Close();
    }
    owner.Close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM