Salam /嗨,我有两个winform,1个名为“fudafrm”,另一个是“loginfrm”。我想通过loginfrm控制标签或关闭位于fudafrm的3,5和8标签,当Id和密码是正确的。
fudafrm就是这样:
AND loginfrm是:
我在loginfrm中尝试过这些代码:(错误代码)
if (txt_userid.Text == "user" && txt_password.Text == "user")
{
Form f1 = new fudafrm();
TabControl.TabPageCollection("tabpage3").hide();
TabControl.TabPageCollection("tabpage5").hide();
TabControl.TabPageCollection("tabpage8").hide();
this.Hide();
}
else
{
MessageBox.Show("Invalid User Name & password","Error");
}
请帮助我通过其他表单控制标签。 我正在使用Windows C#visual studio 2010。
答案 0 :(得分:1)
更改您的登录表单,以便在登录成功时返回DialogResult.OK:
public partial class loginfrm : Form
{
public enum UserTypes
{
admin,
salesman,
accountant,
stockmanager
}
private UserTypes _UserType;
public UserTypes UserType
{
get { return _UserType; }
}
public loginfrm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (txt_userid.Text == "user" && txt_password.Text == "user")
{
// ... set _UserType somehow ...
this._UserType = UserTypes.salesman;
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
MessageBox.Show("Invalid User Name & password", "Error");
}
}
}
现在,回到主窗体,您可以检查结果并直接更改TabControl:
private void fudafrm_Load(object sender, EventArgs e)
{
this.Hide(); // not necessary from the Load() event
loginfrm f2 = new loginfrm();
if (f2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
switch(f2.UserType)
{
case loginfrm.UserTypes.admin:
// remove nothing
break;
case loginfrm.UserTypes.salesman:
tabControl1.TabPages.Remove(tabPage1);
tabControl1.TabPages.Remove(tabPage3);
break;
case loginfrm.UserTypes.accountant:
tabControl1.TabPages.Remove(tabPage1);
tabControl1.TabPages.Remove(tabPage2);
tabControl1.TabPages.Remove(tabPage5);
break;
case loginfrm.UserTypes.stockmanager:
tabControl1.TabPages.Remove(tabPage1);
tabControl1.TabPages.Remove(tabPage4);
tabControl1.TabPages.Remove(tabPage7);
tabControl1.TabPages.Remove(tabPage8);
break;
}
}
else
{
Application.Exit(); // ?
}
}
您可以将DialogResult设置为“取消”以指示登录失败。