Dynamic Menu :: C# 소스[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

C# 소스
[1]
등록일:2008-03-28 17:08:03 (0%)
작성자:갤러리정
제목:Dynamic Menu
/*
User  Interfaces  in  C#:  Windows  Forms  and  Custom  Controls
by  Matthew  MacDonald

Publisher:  Apress
ISBN:  1590590457
*/

using  System.Data.SqlClient;

using  System;
using  System.Drawing;
using  System.Collections;
using  System.ComponentModel;
using  System.Windows.Forms;
using  System.Data;

namespace  DynamicMenu
{
        ///  <summary>
        ///  Summary  description  for  DynamicMenu.
        ///  </summary>
        public  class  DynamicMenu  :  System.Windows.Forms.Form
        {
                internal  System.Windows.Forms.MainMenu  mnuMain;
                internal  System.Windows.Forms.MenuItem  mnuFile;
                internal  System.Windows.Forms.MenuItem  mnuNew;
                internal  System.Windows.Forms.MenuItem  mnuOpen;
                internal  System.Windows.Forms.MenuItem  mnuClose;
                internal  System.Windows.Forms.MenuItem  mnuSave;
                internal  System.Windows.Forms.MenuItem  MenuItem12;
                internal  System.Windows.Forms.MenuItem  mnuExit;
                internal  System.Windows.Forms.MenuItem  mnuTools;
                internal  System.Windows.Forms.MenuItem  mnuManageHardware;
                internal  System.Windows.Forms.MenuItem  mnuSetupUserAccounts;
                internal  System.Windows.Forms.MenuItem  mnuChangeDisplay;
                internal  System.Windows.Forms.MenuItem  mnuHelp;
                internal  System.Windows.Forms.MenuItem  mnuContents;
                internal  System.Windows.Forms.MenuItem  MenuItem13;
                internal  System.Windows.Forms.MenuItem  mnuAbout;
                internal  System.Windows.Forms.Button  cmdAdmin;
                internal  System.Windows.Forms.Button  cmdUser;
                ///  <summary>
                ///  Required  designer  variable.
                ///  </summary>
                private  System.ComponentModel.Container  components  =  null;

                public  DynamicMenu()
                {
                        //
                        //  Required  for  Windows  Form  Designer  support
                        //
                        InitializeComponent();

                        //
                        //  TODO:  Add  any  constructor  code  after  InitializeComponent  call
                        //
                }

                ///  <summary>
                ///  Clean  up  any  resources  being  used.
                ///  </summary>
                protected  override  void  Dispose(  bool  disposing  )
                {
                        if(  disposing  )
                        {
                                if  (components  !=  null)  
                                {
                                        components.Dispose();
                                }
                        }
                        base.Dispose(  disposing  );
                }

                #region  Windows  Form  Designer  generated  code
                ///  <summary>
                ///  Required  method  for  Designer  support  -  do  not  modify
                ///  the  contents  of  this  method  with  the  code  editor.
                ///  </summary>
                private  void  InitializeComponent()
                {
                        this.mnuMain  =  new  System.Windows.Forms.MainMenu();
                        this.mnuFile  =  new  System.Windows.Forms.MenuItem();
                        this.mnuNew  =  new  System.Windows.Forms.MenuItem();
                        this.mnuOpen  =  new  System.Windows.Forms.MenuItem();
                        this.mnuClose  =  new  System.Windows.Forms.MenuItem();
                        this.mnuSave  =  new  System.Windows.Forms.MenuItem();
                        this.MenuItem12  =  new  System.Windows.Forms.MenuItem();
                        this.mnuExit  =  new  System.Windows.Forms.MenuItem();
                        this.mnuTools  =  new  System.Windows.Forms.MenuItem();
                        this.mnuManageHardware  =  new  System.Windows.Forms.MenuItem();
                        this.mnuSetupUserAccounts  =  new  System.Windows.Forms.MenuItem();
                        this.mnuChangeDisplay  =  new  System.Windows.Forms.MenuItem();
                        this.mnuHelp  =  new  System.Windows.Forms.MenuItem();
                        this.mnuContents  =  new  System.Windows.Forms.MenuItem();
                        this.MenuItem13  =  new  System.Windows.Forms.MenuItem();
                        this.mnuAbout  =  new  System.Windows.Forms.MenuItem();
                        this.cmdAdmin  =  new  System.Windows.Forms.Button();
                        this.cmdUser  =  new  System.Windows.Forms.Button();
                        this.SuspendLayout();
                        //  
                        //  mnuMain
                        //  
                        this.mnuMain.MenuItems.AddRange(new  System.Windows.Forms.MenuItem[]  {
                                                                                                                                                                        this.mnuFile,
                                                                                                                                                                        this.mnuTools,
                                                                                                                                                                        this.mnuHelp});
                        //  
                        //  mnuFile
                        //  
                        this.mnuFile.Index  =  0;
                        this.mnuFile.MenuItems.AddRange(new  System.Windows.Forms.MenuItem[]  {
                                                                                                                                                                        this.mnuNew,
                                                                                                                                                                        this.mnuOpen,
                                                                                                                                                                        this.mnuClose,
                                                                                                                                                                        this.mnuSave,
                                                                                                                                                                        this.MenuItem12,
                                                                                                                                                                        this.mnuExit});
                        this.mnuFile.Text  =  "File";
                        //  
                        //  mnuNew
                        //  
                        this.mnuNew.Index  =  0;
                        this.mnuNew.Text  =  "New";
                        //  
                        //  mnuOpen
                        //  
                        this.mnuOpen.Index  =  1;
                        this.mnuOpen.Text  =  "Open";
                        //  
                        //  mnuClose
                        //  
                        this.mnuClose.Index  =  2;
                        this.mnuClose.Text  =  "Close";
                        //  
                        //  mnuSave
                        //  
                        this.mnuSave.Index  =  3;
                        this.mnuSave.Text  =  "Save";
                        //  
                        //  MenuItem12
                        //  
                        this.MenuItem12.Index  =  4;
                        this.MenuItem12.Text  =  "-";
                        //  
                        //  mnuExit
                        //  
                        this.mnuExit.Index  =  5;
                        this.mnuExit.Text  =  "Exit";
                        //  
                        //  mnuTools
                        //  
                        this.mnuTools.Index  =  1;
                        this.mnuTools.MenuItems.AddRange(new  System.Windows.Forms.MenuItem[]  {
                                                                                                                                                                          this.mnuManageHardware,
                                                                                                                                                                          this.mnuSetupUserAccounts,
                                                                                                                                                                          this.mnuChangeDisplay});
                        this.mnuTools.Text  =  "Tools";
                        //  
                        //  mnuManageHardware
                        //  
                        this.mnuManageHardware.Index  =  0;
                        this.mnuManageHardware.Text  =  "Manage  Hardware";
                        //  
                        //  mnuSetupUserAccounts
                        //  
                        this.mnuSetupUserAccounts.Index  =  1;
                        this.mnuSetupUserAccounts.Text  =  "Setup  User  Accounts";
                        //  
                        //  mnuChangeDisplay
                        //  
                        this.mnuChangeDisplay.Index  =  2;
                        this.mnuChangeDisplay.Text  =  "Change  Display";
                        //  
                        //  mnuHelp
                        //  
                        this.mnuHelp.Index  =  2;
                        this.mnuHelp.MenuItems.AddRange(new  System.Windows.Forms.MenuItem[]  {
                                                                                                                                                                        this.mnuContents,
                                                                                                                                                                        this.MenuItem13,
                                                                                                                                                                        this.mnuAbout});
                        this.mnuHelp.Text  =  "Help";
                        //  
                        //  mnuContents
                        //  
                        this.mnuContents.Index  =  0;
                        this.mnuContents.Text  =  "Contents";
                        //  
                        //  MenuItem13
                        //  
                        this.MenuItem13.Index  =  1;
                        this.MenuItem13.Text  =  "-";
                        //  
                        //  mnuAbout
                        //  
                        this.mnuAbout.Index  =  2;
                        this.mnuAbout.Text  =  "About";
                        //  
                        //  cmdAdmin
                        //  
                        this.cmdAdmin.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
                        this.cmdAdmin.Location  =  new  System.Drawing.Point(132,  88);
                        this.cmdAdmin.Name  =  "cmdAdmin";
                        this.cmdAdmin.Size  =  new  System.Drawing.Size(80,  24);
                        this.cmdAdmin.TabIndex  =  3;
                        this.cmdAdmin.Text  =  "Admin  Level";
                        this.cmdAdmin.Click  +=  new  System.EventHandler(this.cmdAdmin_Click);
                        //  
                        //  cmdUser
                        //  
                        this.cmdUser.FlatStyle  =  System.Windows.Forms.FlatStyle.System;
                        this.cmdUser.Location  =  new  System.Drawing.Point(44,  88);
                        this.cmdUser.Name  =  "cmdUser";
                        this.cmdUser.Size  =  new  System.Drawing.Size(80,  24);
                        this.cmdUser.TabIndex  =  2;
                        this.cmdUser.Text  =  "User  Level";
                        this.cmdUser.Click  +=  new  System.EventHandler(this.cmdUser_Click);
                        //  
                        //  DynamicMenu
                        //  
                        this.AutoScaleBaseSize  =  new  System.Drawing.Size(5,  14);
                        this.ClientSize  =  new  System.Drawing.Size(256,  129);
                        this.Controls.AddRange(new  System.Windows.Forms.Control[]  {
                                                                                                                                                    this.cmdAdmin,
                                                                                                                                                    this.cmdUser});
                        this.Font  =  new  System.Drawing.Font("Tahoma",  8.25F,  System.Drawing.FontStyle.Regular,  System.Drawing.GraphicsUnit.Point,  ((System.Byte)(0)));
                        this.Menu  =  this.mnuMain;
                        this.Name  =  "DynamicMenu";
                        this.Text  =  "Dynamic  Menu";
                        this.Load  +=  new  System.EventHandler(this.DynamicMenu_Load);
                        this.ResumeLayout(false);

                }
                #endregion

                ///  <summary>
                ///  The  main  entry  point  for  the  application.
                ///  </summary>
                [STAThread]
                static  void  Main()  
                {
                        Application.Run(new  DynamicMenu());
                }

                private  void  DynamicMenu_Load(object  sender,  System.EventArgs  e)
                {
                        cmdUser_Click(null,null);

                }

                private  void  cmdUser_Click(object  sender,  System.EventArgs  e)
                {
                        DataTable  dtPermissions;

                        //  Get  permissions  for  an  Admin-level  user.
                        dtPermissions  =  DBPermissions.GetPermissions(DBPermissions.Level.User);

                        //  Update  the  menu  with  these  permissions.
                        SearchMenu(this.Menu,  dtPermissions);

                }

                private  void  cmdAdmin_Click(object  sender,  System.EventArgs  e)
                {
                        DataTable  dtPermissions;

                        //  Get  permissions  for  an  Admin-level  user.
                        dtPermissions  =  DBPermissions.GetPermissions(DBPermissions.Level.Admin);

                        //  Update  the  menu  with  these  permissions.
                        SearchMenu(this.Menu,  dtPermissions);

                }

                private  void  SearchMenu(Menu  menu,  DataTable  dtPermissions)
                {
                        DataRow[]  rowMatch;

                        foreach  (MenuItem  mnuItem  in  menu.MenuItems)
                        {                      
                                //  See  if  this  menu  item  has  a  corresponding  row.
                                rowMatch  =  dtPermissions.Select("ControlName  =  '"  +  mnuItem.Text  +  "'");

                                //  If  it  does,  configure  the  menu  item  state  accordingly.                      
                                if  (rowMatch.GetLength(0)  >  0)
                                {
                                        DBPermissions.State  state;
                                        state  =  (DBPermissions.State)int.Parse(rowMatch[0]["State"].ToString());

                                        switch  (state)
                                        {
                                                case  DBPermissions.State.Hidden:
                                                        mnuItem.Visible  =  false;
                                                        break;
                                                case  DBPermissions.State.Disabled:
                                                        mnuItem.Enabled  =  false;
                                                        break;
                                        }
                                }
                                else
                                {
                                        mnuItem.Visible  =  true;
                                        mnuItem.Enabled  =  true;
                                }

                                //  Search  recursively  through  any  submenus.
                                if  (mnuItem.MenuItems.Count  >  0)
                                {
                                        SearchMenu(mnuItem,  dtPermissions);
                                }
                        }
                }

        }
        public  class  DBPermissions
        {
                public  enum  State
                {
                        Normal  =  0,
                        Disabled  =  1,
                        Hidden  =  2
                }

                public  enum  Level
                {
                        Admin,
                        User
                }

                private  static  SqlConnection  con  =  new  SqlConnection("Data  Source=localhost;"
                        +  "Integrated  Security=SSPI;Initial  Catalog=Apress;");

                public  static  DataTable  GetPermissions(Level  userLevel)
                {
                        con.Open();

                        //  Permissions  isn't  actually  actually  a  table  in  our  data  source.
                        //  Instead,  it's  a  view  that  combines  the  important  information
                        //  from  all  three  tables  using  a  Join  query.
                        string  selectPermissions  =  "SELECT  *  FROM  Permissions  ";

                        switch  (userLevel)
                        {
                                case  Level.Admin:
                                        selectPermissions  +=  "WHERE  LevelName  =  'Admin'";
                                        break;
                                case  Level.User:
                                        selectPermissions  +=  "WHERE  LevelName  =  'User'";
                                        break;
                        }

                        SqlCommand  cmd  =  new  SqlCommand(selectPermissions,  con);
                        SqlDataAdapter  adapter  =  new  SqlDataAdapter(cmd);
                        DataSet  ds  =  new  DataSet();
                        adapter.Fill(ds,  "Permissions");

                        con.Close();

                        return  ds.Tables["Permissions"];
                }
        }

}
/*
--  Database  Dump  Wizard  Ver  2.2.1  (libmssql  version  2.3)
--
--  Host:  localhost        Database:  [Apress]
--  ---------------------------------------------------------
--  Server  version      Microsoft  SQL  Server  Version  8.0.255


--  Dumping  user-defined  datatypes  in  '[Apress]'


--  Table  structure  for  table  'Controls'
CREATE  TABLE  [Controls]  (
[ID]  int  IDENTITY  NOT  NULL,
[ControlName]  varchar(20)  NOT  NULL)
GO

CREATE  UNIQUE  CLUSTERED  INDEX  PK_Controls  ON  [Controls]  (ID)
GO


--  Dumping  data  for  table  'Controls'
--

--  Enable  identity  insert
SET  IDENTITY_INSERT  [Controls]  ON
GO

INSERT  INTO  [Controls]  ([ID],  [ControlName])
VALUES(1,  'New')
GO
INSERT  INTO  [Controls]  ([ID],  [ControlName])
VALUES(2,  'Save')
GO
INSERT  INTO  [Controls]  ([ID],  [ControlName])
VALUES(3,  'Manage  Hardware')
GO
INSERT  INTO  [Controls]  ([ID],  [ControlName])
VALUES(4,  'Setup  User  Accounts')
GO

--  Disable  identity  insert
SET  IDENTITY_INSERT  [Controls]  OFF
GO



--  Table  structure  for  table  'Controls_Levels'
CREATE  TABLE  [Controls_Levels]  (
[ID]  int  IDENTITY  NOT  NULL,
[Control_ID]  int  NOT  NULL,
[Level_ID]  int  NOT  NULL,
[State]  smallint)
GO

CREATE  UNIQUE  CLUSTERED  INDEX  PK_Control_Levels  ON  [Controls_Levels]  (ID)
GO


--  Dumping  data  for  table  'Controls_Levels'
--

--  Enable  identity  insert
SET  IDENTITY_INSERT  [Controls_Levels]  ON
GO

INSERT  INTO  [Controls_Levels]  ([ID],  [Control_ID],  [Level_ID],  [State])
VALUES(1,  1,  2,  1)
GO
INSERT  INTO  [Controls_Levels]  ([ID],  [Control_ID],  [Level_ID],  [State])
VALUES(2,  2,  2,  1)
GO
INSERT  INTO  [Controls_Levels]  ([ID],  [Control_ID],  [Level_ID],  [State])
VALUES(3,  3,  2,  2)
GO
INSERT  INTO  [Controls_Levels]  ([ID],  [Control_ID],  [Level_ID],  [State])
VALUES(4,  4,  2,  2)
GO

--  Disable  identity  insert
SET  IDENTITY_INSERT  [Controls_Levels]  OFF
GO



--  Table  structure  for  table  'Levels'
CREATE  TABLE  [Levels]  (
[ID]  int  IDENTITY  NOT  NULL,
[LevelName]  varchar(50))
GO

CREATE  UNIQUE  CLUSTERED  INDEX  PK_UserLevels  ON  [Levels]  (ID)
GO


--  Dumping  data  for  table  'Levels'
--

--  Enable  identity  insert
SET  IDENTITY_INSERT  [Levels]  ON
GO

INSERT  INTO  [Levels]  ([ID],  [LevelName])
VALUES(1,  'Admin')
GO
INSERT  INTO  [Levels]  ([ID],  [LevelName])
VALUES(2,  'User')
GO

--  Disable  identity  insert
SET  IDENTITY_INSERT  [Levels]  OFF
GO


CREATE  VIEW  [Permissions]
AS
SELECT          Controls.ControlName,  Levels.LevelName,  Controls_Levels.State
FROM                  Controls  INNER  JOIN
                                            Controls_Levels  ON  Controls.ID  =  Controls_Levels.Control_ID  INNER  JOIN
                                            Levels  ON  Controls_Levels.Level_ID  =  Levels.ID
GO


*/
[본문링크] Dynamic Menu
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=3243
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.