【问题标题】:C# - Issue with InitializeComponentC# - InitializeComponent 的问题
【发布时间】:2019-05-25 17:44:38
【问题描述】:

抱歉,我是一个非常基础的用户,需要一些帮助来解决这个小问题。我正在实现一个 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;
            }
        }

【问题讨论】:

  • 有人可以帮忙吗?

标签: c# sql winforms login initialization


【解决方案1】:

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

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

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2016-04-18
    • 2015-05-28
    • 2018-03-18
    • 2017-08-13
    相关资源
    最近更新 更多