通过其他形式控制选项卡C#Winform应用程序

时间:2013-11-22 23:53:36

标签: c# .net winforms visual-studio-2010

Salam /嗨,我有两个winform,1个名为“fudafrm”,另一个是“loginfrm”。我想通过loginfrm控制标签或关闭位于fudafrm的3,5和8标签,当Id和密码是正确的。

fudafrm就是这样:

fudafrm

AND loginfrm是:

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。

1 个答案:

答案 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设置为“取消”以指示登录失败。