怎样从数据库里动态读取数据记录作为contextMenu1的下拉菜单来链接相应的页面.请各位高手帮助一下,不够还可以加分,很急!很急! 我用的vs2003 winform

解决方案 »

  1.   

    将 数据库的记录先提取出来, 然后针对每个记录进行使用代码动态生成一个菜单项,添加到contextMenu1中去就可以了吧!!
      

  2.   

    读取内容——动态生成菜单项——注册菜单click事件——加入contextMenu1
      

  3.   

    注册菜单事件里可以写一个统一的方法,传进去form名称做为参数,在这个方法里链接参数指向的名称
      

  4.   

    读取内容——动态生成菜单项——注册菜单click事件——加入contextMenu1
    给你的思路,代码不好办
      

  5.   

    using System;
    using System.Windows.Forms;
    using System.Drawing;class useonpaint:Form
    {
        public useonpaint()
        {;}
        
        static void Main() 
        {
            Application.Run(new useonpaint());
        }
        
        protected override void OnMouseUp(MouseEventArgs e)
        {
              if (e.Button == MouseButtons.Left)    test(e); 
              
          }
        private void test(MouseEventArgs e) 
        {
            ContextMenu m = new ContextMenu();
               this.ContextMenu= m;           // Create MenuItem objects.
            MenuItem menuItem1 = new MenuItem();
               MenuItem menuItem2 = new MenuItem();
             
               // Set the Text property.
               menuItem1.Text = "New";
            menuItem2.Text = "Open";        // Add menu items to the MenuItems collection.
            m.MenuItems.Add(menuItem1);
            m.MenuItems.Add(menuItem2);
            
                
            Point position = new Point(e.X, e.Y);
               m.Show(this,position);
         }

    这是上午写的一段静态生成菜单的方法 ,有兴趣的朋友可以看一看 但动态的如何生成呢
    如何把数据库里的记录一个一个填充到contextMenu1里面呢?请路过的朋友多给一点宝贵的意见谢谢!!!
      

  6.   

    很简单啊:sdr是SqlDataReader MenuItem menuItem;
    while (sdr.Read())
    {
    menuItem = new MenuItem();
    menuItem.Text = sdr里相应字段的值;
    m.MenuItems.Add(menuItem);
    }
      

  7.   

    public void LoadMenuBase(MenuItem mItem)
    {
    DataView dv=ds.Tables[0].DefaultView;
    for(int intNum=0;intNum<=dv.Count-1;intNum++)
    {
    MenuItem item=new MenuItem();
    item.Text=dv[intNum]["sBaseName"].ToString();
    item.Click+=new EventHandler(BaseItem_Click);
    mItem.MenuItems.Add(item);
    htState.Add(item.Index,dv[intNum]["sBaseCode"]);
    }}
      

  8.   

    我是把数据存在XML文件里,也是动态生成菜单和事件,自己看吧,大同小异的。
    http://blog.csdn.net/alldj/archive/2007/04/13/1564072.aspx
      

  9.   

    如果在按钮(button1)上加一个向下小三角 当但击这个三角时就会弹出菜单(contextMenu1)
    这样的功能如何实现 最后一个问题解决了就马上结帖不过还是要谢谢路过的朋友们给出的提示
    小弟不胜感激!!!
      

  10.   

    如果没有好的方法,你可以变通一下自己做个控件:一个button,右边紧挨者再加一个有个三角形标记图片的小按钮,小按钮单击时弹出菜单,主按钮单击时做另外的事情
      

  11.   

    如何在按钮中加一个有三角形标记图片的小按钮呢恩 我的意思就是像,《imwjb》所说的
      

  12.   

    添加三角的代码如下:
    Button btn = new Button();
    btn.Size = new Size(18, 18);
    btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
    btn.Text = "6";
    btn.FlatStyle = FlatStyle.Popup;
    btn.Font = new Font("Marlett", 9);
    btn.Click += new EventHandler(btn_Click);
    this.button1.Controls.Add(btn);
    btn.Visible = true;void btn_Click(object sender, EventArgs e)
    {
        ContextMenu cm = new ContextMenu();
        cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
        cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
        cm.Show(this, this.PointToClient(Control.MousePosition));
    }
    private void menu_Click(object sender, EventArgs e)
    {
        MenuItem item = (MenuItem)sender;
        Console.WriteLine(item.Text);
    }还有一个问题 就是当点击按钮(btn)和小三角的时候都会弹出相同的菜单(contextMenu1)
    我想让单击按钮的时候完成一个事件
          单击小三角的时候完成另一个事件 如何区分我每次点击的是按钮还是小三角呢
    请路人指点一下 
    谢谢
      

  13.   

    我觉得,你看vs怎么样生成菜单代码的,自己可以理解一下。
    sdr是SqlDataReader MenuItem menuItem;
    while (sdr.Read())
    {
    menuItem = new MenuItem();
    menuItem.Text = sdr里相应字段的值;
    m.MenuItems.Add(menuItem);
    }
    这个可以理解一下,,没用到什么复杂的技术。
      

  14.   

    这个应该不难吧,从数据库读取记录,然后往MENU里面添加ITEM不就得了--------------------------------------------------------------------------------
    专注于自动提交,如发贴机资源采集器等网络营销软件的开发及相关领域如验证码识别技术。  
    QQ群号:24733057
      

  15.   

    谢谢朋友们 已经知道怎么解决了谢谢 谢谢
    还有一个问题:
    Button btn = new Button();
    btn.Size = new Size(18, 18);
    btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
    btn.Text = "6";
    btn.FlatStyle = FlatStyle.Popup;
    btn.Font = new Font("Marlett", 9);
    btn.Click += new EventHandler(btn_Click);
    this.button1.Controls.Add(btn);
    btn.Visible = true;void btn_Click(object sender, EventArgs e)
    {
        ContextMenu cm = new ContextMenu();
        cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
        cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
        cm.Show(this, this.PointToClient(Control.MousePosition));
    }
    private void menu_Click(object sender, EventArgs e)
    {
        MenuItem item = (MenuItem)sender;
        Console.WriteLine(item.Text);
    }但有一个问题 就是当点击按钮(btn)和小三角的时候都会弹出相同的菜单(contextMenu1)
    这段代码是在按钮上再添加一个小三角 我想让单击按钮的时候完成一个事件
          单击小三角的时候完成另一个事件 如何区分我每次点击的是按钮还是小三角呢
     谢谢
      

  16.   

    本来就是两个按钮嘛!
    btn.Click += new EventHandler(btn_Click);
    button1.Click += new EventHandler(button1_Click);
    都有各自的事件方法啊!
      

  17.   

    一个button,右边紧挨者再加一个有个三角形标记的小按钮,小按钮单击时弹出菜单,主按钮单击时做另外的事情这样的按钮怎么做谢谢
      

  18.   

    关键是你没有把问题表达清楚。
    定义一个类
    public class myButt : Button
    {
    public myButt()
    {
    ///写添加另一个butt按钮的代码
    Button btn = new Button();
    btn.Size = new Size(18, 18);
    btn.Location = new Point(this.button1.Width - btn.Width, this.button1.Height - btn.Height);
    btn.Text = "6";
    btn.FlatStyle = FlatStyle.Popup;
    btn.Font = new Font("Marlett", 9);
    btn.Click += new EventHandler(btn_Click);
    this.Controls.Add(btn);
    btn.Visible = true;
    }void btn_Click(object sender, EventArgs e)
    {
        ContextMenu cm = new ContextMenu();
        cm.MenuItems.Add("aa", new EventHandler(this.menu_Click));
        cm.MenuItems.Add("bb", new EventHandler(this.menu_Click));
        cm.Show(this, this.PointToClient(Control.MousePosition));
    }
    private void menu_Click(object sender, EventArgs e)
    {
        MenuItem item = (MenuItem)sender;
        Console.WriteLine(item.Text);
    }
    }然后用这个类就行了。