C#-InitializeComponent问题

时间:2019-05-25 17:44:39

标签: c# sql winforms login initialization

对不起,我是一个非常基本的用户,在这个小问题上需要一些帮助。我正在实现WinForms库应用程序-连接到本地数据库,该数据库中也有现有记录。

我当前正在根据用户-用户功能权限对登录部分进行编码。我设法设置了一个管理员用户和一个默认用户,它们都可以在应用程序加载中工作。

问题出在InitializeComponent();上。 -该应用正确加载,并且用户首次使用该应用具有正确的功能权限,但是,当用户在该应用的子菜单中来回切换并返回到主菜单时,管理员将失去一些功能权限(例如,用户在首次使用应用程序时具有正确的权限,但是在进一步浏览应用程序并返回到所有功能所在的主菜单时,最终却具有与普通用户相同的功能。

我认为问题在于MainMenuForm的第二次使用(其中存在':this(“”)')

该部分的设置不正确-我希望应用程序始终保持与登录时使用的用户相同,但不是因为这个原因,这会导致错误。

到目前为止,这是我所拥有的,可能需要进行一些更改,但是我不确定确切的位置和方式。帮助将不胜感激。

namespace Library_System_Project
{
    public partial class MainMenuForm : Form
    {
        // You can call this one at runtime.
        public MainMenuForm(string Role)
        {
            InitializeComponent();
            lblRole.Text = Role;
        }

    // Designer will call this one.
    public MainMenuForm()
        : this ("")
  // Calls the first constructor.
    {
    }

涉及以下内容:

private void MainMenuForm_Load(object sender, EventArgs e)
        {
            if (((Form)this).Controls["lblRole"].Text != "jHarrington")
            {
                btnUserMenu.Enabled = false;
            }
        }

1 个答案:

答案 0 :(得分:0)

一开始我也遇到过类似的问题,我必须定义角色/用户。

通过创建仅用于记录目的的新表单,我发现了简单的解决方案,此后,根据分配的角色,它创建了具有条件的主表单的新实例。
只需在角色之间切换,请检查以下内容:

case "eng":

    MainForm MainForm2 = new MainForm();
    ((Control)MainForm2.tabPage1).Enabled = true;
    MainForm2.LoadDataParts();
    MainForm2.DataGridCount();
    ((Control)MainForm2.tabPage2).Enabled = false;
    ((Control)MainForm2.tabPage3).Enabled = false;
    ((Control)MainForm2.tabPage4).Enabled = false;
    ((Control)MainForm2.tabPage5).Enabled = false;
    MainForm2.btnCB_Add.Enabled = false;
    MainForm2.button10.Enabled = false;
    MainForm2.btnCD_Delete.Enabled = false;
    MainForm2.dataGridView5.Visible = false;
    MainForm2.dataGridView7.Visible = false;
    MainForm2.dataGridView1.CellDoubleClick -= new DataGridViewCellEventHandler(MainForm2.DataGridView1_CellDoubleClick);

    MainForm2.Show();
    break;