我已经在多个winforms中构建了应用程序。第一个表单是登录表单。当用户登录时,它会打开另一个表单,比如表单2,然后从那里我有菜单条,它将用户进一步形成3,4,5等等。
我想要的是在右上角放一个按钮并将其命名为LOG OUT。此按钮将出现在所有表格上(当然不会出现在第一个表格上),所以当用户登录时,做他需要的东西做,然后有能力退出,无论他在哪种形式。当他退出时,第一个表格会再次弹出!如何才能做到这一点?是否可以在登录后关闭表单1(登录表单,父级)并且不关闭整个应用程序(子表单)?
接下来我需要的是设置限制......我的意思是会有不同类型的用户,常规用户和管理员,这些用户可以选择更多选项。我已经完成了登录部分,检查了数据库中是否存在与例如匹配的用户名和密码。 textbox1和textbox2,但我需要一些建议来实现我刚才描述的内容。
谢谢,Bane
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
答案 0 :(得分:2)
这是典型的MDI应用程序。 Main-Form(MDI Child的父级)将在左上角有一个按钮,当用户登录时会激活该按钮。登录提示的表单将是一个模态形式。当用户单击注销按钮时,您应该关闭所有子窗体,然后再次显示模式登录窗体。关于用户的权限并不难,只需在数据库中有一个具有该特定信息的字段。它可以是一个整数或任何你喜欢的字节。假设1 =普通用户,2 =管理员用户等
答案 1 :(得分:0)
我相信你需要3个课程:
loginButton
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();
}