2015-05-25 74 views
0

我有2種形式:登錄(子)和Form1(如MdiParent)。
登錄表單有3個角色和各個角色具有不同的訪問控制到的MenuStrip如何從子窗體管理Mdiparent中的menuStrip?

實施例:的MenuStrip在Form1:

-file (login, logout) 
master (register, view) 

作用:管理員,教練,學員。
登錄後,可供管理員訪問的菜單僅爲文件(登錄,註銷)和主(查看)。

所以我的問題是如何禁用/隱藏登錄形式的管理員菜單註冊?

+1

WinForms或WebForms或其他?請更詳細地描述問題。 –

+0

它是winForms。 –

回答

0

一旦成功管理員日誌,你可以簡單地去要通過它的名字來隱藏和設置它的Visible屬性false具體的菜單項:

((Form1)this.MdiParent).RegisterMenuItem.Visible = false; 

您必須確保該菜單項不是私人的。它必須是內部的或公共的。

+0

我試過了。註冊菜單項(我需要禁止管理員訪問)不能從子窗體訪問或管理(其可見性)。 –

+0

看到我編輯的答案。 –

+0

如何知道菜單項是否公開? bcs之前嘗試過你的代碼,它沒有錯誤,但仍然管理員可以訪問註冊菜單和其可見的管理員(雖然在這種情況下,我需要禁用註冊菜單的管理訪問) –

0

一種方式做到這一點是建立在MDI形式包含邏輯禁用寄存器菜單公共方法,然後你從登錄表單這樣稱呼它:

在MDI窗體:

public void DisableRegisterMenu() 
{ 
    registerMenuItem.Enabled = false; 
} 

在登錄形式:

var parent = (Form1) MdiParent; 
parent.DisableRegisterMenu(); 

/A

+0

ive試過,但登錄後作爲管理員,註冊菜單仍然可見,並可以通過管理員訪問。 –

+0

您是否檢查過,以便在沒有任何代碼的情況下重置此父母的菜單項? –

+0

抱歉,我不明白你的意思。我已經做到了,但仍然沒有工作。 –

0
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; 

     } 
相關問題