1
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();

クエリから最後の項目のみを追加します。クエリからすべての項目を追加する方法

4

3 に答える 3

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();
}
于 2012-05-08T14:08:11.710 に答える
1

毎回、ループ内に新しいToolStripMenuItemを作成する必要があります。同じメニューインスタンスのプロパティを上書きし続けるだけです。

于 2012-05-08T14:08:00.947 に答える
0

新しい行を読み取るたびに、メニューの新しいインスタンスを作成してみてください。

このようなもの:

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

    ...
 }
于 2012-05-08T14:10:25.203 に答える