Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过其他表单C#Winform应用程序控制选项卡_C#_.net_Winforms_Visual Studio 2010 - Fatal编程技术网

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

通过其他表单C#Winform应用程序控制选项卡,c#,.net,winforms,visual-studio-2010,C#,.net,Winforms,Visual Studio 2010,Salam/Hi,我有两个winform,一个名为“fudafrm”,另一个名为“LoginForm”。当Id和密码正确时,我想通过LoginForm控制选项卡或关闭位于fudafrm中的3、5和8选项卡 这是什么 而loginfrm是: 我在LoginForm中尝试了thees代码:(错误代码) 请帮助我通过其他表单控制选项卡。 我正在使用windows窗体C#visual studio 2010。更改您的登录窗体,使其返回DialogResult。登录成功后,确定: public par

Salam/Hi,我有两个winform,一个名为“fudafrm”,另一个名为“LoginForm”。当Id和密码正确时,我想通过LoginForm控制选项卡或关闭位于fudafrm中的3、5和8选项卡

这是什么

而loginfrm是:

我在LoginForm中尝试了thees代码:(错误代码)

请帮助我通过其他表单控制选项卡。
我正在使用windows窗体C#visual studio 2010。

更改您的登录窗体,使其返回DialogResult。登录成功后,确定:

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设置为Cancel以指示登录失败。

您需要表单的实例
fudafrm
。但不要像上面的局部变量那样创建它并将其丢弃。使用显示时使用的真实形式变量。然后,您可以使用
f1.Controls.OfType()
获取该表单或以该表单提供属性。仍然无法获取该表单,需要更多详细信息或示例@timschmelter首先显示哪个表单?默认情况下为fudafrm,但我使用fudafrm的私有void fudafrm_Load(对象发送方,事件参数e){this.Hide();表单f2=新登录表单();f2.ShowDialog();}非常完美。!!谢谢@Idle\u Mind我可以抛出我自己的类似于用户对话框的对话框吗(因为对话框有限,无法为所有用户显示)user1=admin(show all tab)user2=saller(remove tab 1,3)user3=accountary(remove 1,2,5)user4=stockmanager(1,4,7,8)@Idle\u Mind你可以使用相同的方法,但也可以创建一个枚举来表示admin、saller、accounter、,还有股票经理。现在,在LoginForm中创建一个公共属性来保存登录用户的任何内容。最后,当“OK”返回到ShowDialog()时,您可以读取公共属性以确定要更改哪些选项卡。很好,但麻烦不大,因为我创建了一个按钮注销。并在其中编码编码:this.close()//对于关闭主窗体,loginfrm.showdialog();当我现在再次登录时,它不起作用,因为编码在私有空间内@懒散的头脑
    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(); // ?
        }
    }