如何动态添加ToolStripMenuItems

时间:2012-05-08 14:03:55

标签: c# winforms contextmenustrip menustrip

sqlstr = "select ModuleName,ModuleId,pagename from modules WHERE ParentID='" + parentID + "' AND VIsibility=1 ORDER BY ModuleId";

cmd.CommandText = sqlstr;
cmd.Connection = cn; ;
dr = cmd.ExecuteReader();

while (dr.Read())
{
    menu.Tag = dr["ModuleId"].ToString();
    menu.Text = dr["ModuleName"].ToString();
    menu.Name = dr["pagename"].ToString();
    menu.ToolTipText = dr["pagename"].ToString();
    menuStrip1.Items.Add(menu);
    menuStrip1.Show();
}

cn.Close();
dr.Close();

仅添加query.how中的最后一项以添加查询中的所有项目

3 个答案:

答案 0 :(得分:3)

while (dr.Read())
{
    // If you don't do this, you are just changing the same
    // ToolStripMenuItem object all the time.
    menu = new ToolStripMenuItem();

    menu.Tag = dr["ModuleId"].ToString();
    menu.Text = dr["ModuleName"].ToString();
    menu.Name = dr["pagename"].ToString();
    menu.ToolTipText = dr["pagename"].ToString();
    menuStrip1.Items.Add(menu);
    menuStrip1.Show();
}

答案 1 :(得分:1)

每次都必须在循环中创建一个新的ToolStripMenuItem。您只需在同一菜单实例上覆盖属性。

答案 2 :(得分:0)

每次阅读新行时都尝试创建菜单的新实例。

这样的事情:

 while (dr.Read())
 {
    var menu = new ToolStripMenuItem();

    ...
 }