C# 登录/注销/限制
我已经在多个winforms中构建了应用程序。第一个表单是登录表单。当用户登录时,它会打开另一个表单,比如说表单2,然后从那里我有一个菜单条,它将用户进一步带到表单3、4、5等等 我想要的是在右上角放一个按钮,称之为“注销”。这个按钮将出现在所有表单上(当然不是第一个表单),所以当用户登录时,做他需要做的事情,然后无论他在哪个表单上都能注销。当他注销时,第一张表格将再次弹出!如何做到这一点?是否可以在登录后关闭表单1(登录表单、父表单)而不关闭整个应用程序(子表单) 下一件事我要做的是设置限制。。。我的意思是,将有不同类型的用户,普通用户和管理员,他们将有更多的可用选项。我已经完成了登录部分,检查了数据库中是否有匹配的用户名和密码,例如textbox1和textbox2,但我需要一些建议来实现我刚才描述的内容 谢谢,贝恩C# 登录/注销/限制,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我已经在多个winforms中构建了应用程序。第一个表单是登录表单。当用户登录时,它会打开另一个表单,比如说表单2,然后从那里我有一个菜单条,它将用户进一步带到表单3、4、5等等 我想要的是在右上角放一个按钮,称之为“注销”。这个按钮将出现在所有表单上(当然不是第一个表单),所以当用户登录时,做他需要做的事情,然后无论他在哪个表单上都能注销。当他注销时,第一张表格将再次弹出!如何做到这一点?是否可以在登录后关闭表单1(登录表单、父表单)而不关闭整个应用程序(子表单) 下一件事我要做的是设置限制。
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();
}
这只会引导用户使用不同的winforms我相信您需要3个类:
登录按钮进行身份验证
注销按钮
和其他自定义控件(因此基本上您可以从中派生其他子表单)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);
}
在子窗体中,单击注销按钮
时,获取子窗体所有者的引用(将是主窗体),关闭其拥有的窗体(所有子窗体)并关闭主窗体本身:
private void logoutButton_Click(object sender, EventArgs e)
{
var owner = ((MainForm)this.Owner);
foreach (var childForm in owner.OwnedForms)
{
childForm.Close();
}
owner.Close();
}
这是典型的MDI应用程序。主窗体(MDI子窗体的父窗体)的左上角将有一个按钮,当用户登录时该按钮将被激活。登录提示的表单将是一个模式表单。当用户单击注销按钮时,应关闭所有子窗体,然后再次显示模式登录窗体。关于用户的权限并不难做到,只需在数据库中有一个字段,其中包含特定的信息。它可以是一个字节、一个整数或任何你喜欢的东西。假设1=普通用户,2=管理员用户,等等。您能分享您的代码吗?尽量给类和变量取有意义的名称,这样会让您的生活更轻松。此外,请尽量避免。我设法使用并修复了我遇到的几个错误…忽略上面的注释:)但现在我遇到了不同的问题。它的工作原理与我希望它在子窗体上的工作原理相同,但在主窗体上,当我按“注销”按钮时,它会显示此错误:“无法将类型为“WindowsFormsApplication1.Form1”的对象强制转换为类型为“WindowsFormsApplication1.Form2”。“其中Form1是从中登录的,Form2是主窗体…这里有什么问题?var owner=((Form2)this.owner)这意味着您必须将其强制转换为
var owner=((Form1)this.owner)
,因为Form2
(主窗体)的所有者)类型为Form1
(登录表单)。我这样做了,表名为worker,表中有workerid、用户名、密码和状态(1表示管理员,2表示普通用户)。我需要用户名和密码的身份验证吗?或者我可以使用到目前为止完成的代码(我的问题).我想我不明白这个问题。你说的认证是什么意思?你已经有了一张你要求的表格,不是吗?