从数据库中读取数据创建菜单

本文介绍了一个使用C#实现菜单动态加载的例子。通过从数据库读取菜单配置信息,并利用ADO.NET技术填充数据集,之后创建ToolStripMenu项并设置其属性。此示例展示了如何根据数据库中的记录构建多级菜单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsForm
{
    
public partial class Form1 : Form
    
{
        
private MenuStrip mainmenu = new MenuStrip();
        
private ToolStripMenuItem file, file1;
        
private Panel p = new Panel();

        
public Form1()
        
{
            InitializeComponent();
        }

        
private void Form2_Load(object sender, EventArgs e)
        
{
            
try
            
{
                create();
                doits doits 
= new doits();
                doits.Dock 
= System.Windows.Forms.DockStyle.Fill;
                p.Controls.Clear();
                p.Controls.Add(doits);
            }

            
catch (Exception Err)
            
{
                MessageBox.Show(Err.Message);
            }

        }

        
private void create()
        
{
            DataSet ds 
= new DataSet();
            DataSet ds1 
= new DataSet();
            SqlDataAdapter da 
= new SqlDataAdapter("select * from Menu  where MenuFatherName='null'""server=.;uid=sa;pwd=;database=Data");
            da.Fill(ds);
            
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            
{
                file 
= new ToolStripMenuItem();
                file.Name 
= ds.Tables[0].Rows[i]["MenuName"].ToString();
                file.Text 
= ds.Tables[0].Rows[i]["MenuText"].ToString();
                ds1.Clear();
                SqlDataAdapter da1 
= new SqlDataAdapter("select * from Menu where MenuFatherName='" + file.Name + "'""server=.;uid=sa;pwd=;database=Data");
                da1.Fill(ds1);
                
for (int j = 0; j < ds1.Tables[0].Rows.Count; j++)
                
{
                    file1 
= new ToolStripMenuItem();
                    file1.ToolTipText 
= ds1.Tables[0].Rows[j]["ID"].ToString();
                    file1.Name 
= ds1.Tables[0].Rows[j]["MenuName"].ToString();
                    file1.Text 
= ds1.Tables[0].Rows[j]["MenuText"].ToString();
                    file1.Click 
+= new EventHandler(doit);
                    file.DropDownItems.Add(file1);
                }

                mainmenu.Items.Add(file);
            }


            file 
= new ToolStripMenuItem();
            file.Name 
= "帮助";
            file.Text 
= "帮助(&H)";
            mainmenu.Items.Add(file);

            
this.Controls.Add(mainmenu);
            
this.MainMenuStrip = mainmenu;

            p.Dock 
= System.Windows.Forms.DockStyle.Fill;
            
this.Controls.Add(p);
        }

        
private void doit(object sender, EventArgs e)
        
{
            doits doits 
= new doits();
            doits.Dock 
= System.Windows.Forms.DockStyle.Fill;
            ToolStripMenuItem items 
= (ToolStripMenuItem)sender;
            doits.StringName 
= items.ToolTipText;
            
this.Text = "XXXXXXXXXXXXX(程序)--"+items.Text;
            p.Controls.Clear();
            p.Controls.Add(doits);
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值