我有2種形式:登錄(子)和Form1(如MdiParent)。
登錄表單有3個角色和各個角色具有不同的訪問控制到的MenuStrip如何從子窗體管理Mdiparent中的menuStrip?
實施例:的MenuStrip在Form1:
-file (login, logout)
master (register, view)
作用:管理員,教練,學員。
登錄後,可供管理員訪問的菜單僅爲文件(登錄,註銷)和主(查看)。
所以我的問題是如何禁用/隱藏登錄形式的管理員菜單註冊?
我有2種形式:登錄(子)和Form1(如MdiParent)。
登錄表單有3個角色和各個角色具有不同的訪問控制到的MenuStrip如何從子窗體管理Mdiparent中的menuStrip?
實施例:的MenuStrip在Form1:
-file (login, logout)
master (register, view)
作用:管理員,教練,學員。
登錄後,可供管理員訪問的菜單僅爲文件(登錄,註銷)和主(查看)。
所以我的問題是如何禁用/隱藏登錄形式的管理員菜單註冊?
一旦成功管理員日誌,你可以簡單地去要通過它的名字來隱藏和設置它的Visible
屬性false
具體的菜單項:
((Form1)this.MdiParent).RegisterMenuItem.Visible = false;
您必須確保該菜單項不是私人的。它必須是內部的或公共的。
我試過了。註冊菜單項(我需要禁止管理員訪問)不能從子窗體訪問或管理(其可見性)。 –
看到我編輯的答案。 –
如何知道菜單項是否公開? bcs之前嘗試過你的代碼,它沒有錯誤,但仍然管理員可以訪問註冊菜單和其可見的管理員(雖然在這種情況下,我需要禁用註冊菜單的管理訪問) –
一種方式做到這一點是建立在MDI形式包含邏輯禁用寄存器菜單公共方法,然後你從登錄表單這樣稱呼它:
在MDI窗體:
public void DisableRegisterMenu()
{
registerMenuItem.Enabled = false;
}
在登錄形式:
var parent = (Form1) MdiParent;
parent.DisableRegisterMenu();
/A
ive試過,但登錄後作爲管理員,註冊菜單仍然可見,並可以通過管理員訪問。 –
您是否檢查過,以便在沒有任何代碼的情況下重置此父母的菜單項? –
抱歉,我不明白你的意思。我已經做到了,但仍然沒有工作。 –
this is my login form codes :
if (count == 1)
{
UserInformation.CurrentLoggedInUser = (string)rdr["UserName"];
MessageBox.Show("Welcome " + comboBox1.Text + UserInformation.CurrentLoggedInUser);
UserInformation.CurrentLoggedInUser = (string)rdr["UserRole"];
if (UserInformation.CurrentLoggedInUser == "Administrator")
{
this.Close();
this.MdiParent = new Form1();
// ((Form1)this.MdiParent).hide();
//((Register_Training_Participant)this.MdiParent).Hide();
var parent = (Form1)MdiParent;
parent.AdminDisableControl();
}
//this is the code for my mainform :
public void AdminDisableControl()
{
regToolStripMenuItem.Visible = false;
}
WinForms或WebForms或其他?請更詳細地描述問題。 –
它是winForms。 –