menuStrip控件怎样绑定数据 急 需要源代码吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void CreateMenu() { //定义一个主菜单 MenuStrip mainMenu = new MenuStrip(); DataSet ds = new DataSet(); //从XML中读取数据。数据结构后面详细讲一下。 ds.ReadXml(@"..\..\Menu.xml"); DataView dv = ds.Tables[0].DefaultView; //通过DataView来过滤数据首先得到最顶层的菜单 dv.RowFilter = "ParentItemID=0"; for(int i=0; i<dv.Count;i++) { //创建一个菜单项 ToolStripMenuItem topMenu = new ToolStripMenuItem(); //给菜单赋Text值。也就是在界面上看到的值。 topMenu.Text = dv[i]["Text"].ToString(); //如果是有下级菜单则通过CreateSubMenu方法来创建下级菜单 if (Convert.ToInt16(dv[i]["IsModule"]) == 1) { //以ref的方式将顶层菜单传递参数,因为他可以在赋值后再回传。--也许还有更好的方法^_^. CreateSubMenu(ref topMenu, Convert.ToInt32(dv[i]["ItemID"]),ds.Tables[0]); } //显示应用程序中已打开的 MDI 子窗体列表的菜单项 mainMenu.MdiWindowListItem = topMenu; //将递归附加好的菜单加到菜单根项上。 mainMenu.Items.Add(topMenu); } mainMenu.Dock = DockStyle.Top; //将窗体的MainMenuStrip梆定为mainMenu. this.MainMenuStrip = mainMenu; //这句很重要。如果不写这句菜单将不会出现在主窗体中。 this.Controls.Add(mainMenu); } private void CreateSubMenu(ref ToolStripMenuItem topMenu,int ItemID, DataTable dt) { DataView dv = new DataView(dt); //过滤出当前父菜单下在所有子菜单数据(仅为下一层的) dv.RowFilter = "ParentItemID=" + ItemID.ToString(); for (int i = 0; i < dv.Count; i++) { //创建子菜单项 ToolStripMenuItem subMenu = new ToolStripMenuItem(); subMenu.Text = dv[i]["Text"].ToString(); //如果还有子菜单则继续递归加载。 if (Convert.ToInt16(dv[i]["IsModule"]) == 1) { //递归调用 CreateSubMenu(ref subMenu, Convert.ToInt32(dv[i]["ItemID"]), dt); } else { //扩展属性可以加任何想要的值。这里用formName属性来加载窗体。 subMenu.Tag = dv[i]["FormName"].ToString(); //给没有子菜单的菜单项加事件。 subMenu.Click += new EventHandler(subMenu_Click); } if (dv[i]["ImageName"].ToString().Length > 0) { //设置菜单项前面的图票为16X16的图片文件。 Image img = Image.FromFile(@"..\..\Image\"+dv[i]["ImageName"].ToString()); subMenu.Image = img; subMenu.Image.Tag = dv[i]["ImageName"].ToString(); } //将菜单加到顶层菜单下。 topMenu.DropDownItems.Add(subMenu); } }或者把这转换成Sql语句的办法来取值。。都有分。。 楼主,你能把你的代码发完整吗?我asp.net熟,写桌面的不熟,我也想学习一下 搞定了SqlConnection conn = new SqlConnection("server=192.168.2.103;uid=ht1;pwd=821022;database=ht1"); DataSet ds; public Form1() { InitializeComponent(); conn.Open(); this.createDataSet(); //conn.Close(); this.CreateMenu(); // conn.Close(); } private DataSet createDataSet() { ds = new DataSet(); string sqlStr = "select * from Sys_tree order by px"; SqlDataAdapter cs = new SqlDataAdapter(sqlStr, conn); cs.Fill(ds, "Tree"); return ds; } private void CreateMenu() { //定义一个主菜单 MenuStrip mainMenu = new MenuStrip(); //DataSet ds = new DataSet(); //从XML中读取数据。数据结构后面详细讲一下。 //ds.ReadXml(@"..\..\Menu.xml"); DataView dv = ds.Tables[0].DefaultView; //通过DataView来过滤数据首先得到最顶层的菜单 dv.RowFilter = "PreviousId=0"; for (int i = 0; i < dv.Count; i++) { //创建一个菜单项 ToolStripMenuItem topMenu = new ToolStripMenuItem(); //给菜单赋Text值。也就是在界面上看到的值。 topMenu.Text = dv[i]["Name"].ToString(); //如果是有下级菜单则通过CreateSubMenu方法来创建下级菜单 if (Convert.ToInt16(dv[i]["PreviousId"]) == 0) { //以ref的方式将顶层菜单传递参数,因为他可以在赋值后再回传。--也许还有更好的方法^_^. CreateSubMenu(ref topMenu, Convert.ToInt32(dv[i]["id"]), ds.Tables[0]); } //显示应用程序中已打开的 MDI 子窗体列表的菜单项 mainMenu.MdiWindowListItem = topMenu; //将递归附加好的菜单加到菜单根项上。 mainMenu.Items.Add(topMenu); } mainMenu.Dock = DockStyle.Top; //将窗体的MainMenuStrip梆定为mainMenu. this.MainMenuStrip = mainMenu; //这句很重要。如果不写这句菜单将不会出现在主窗体中。 this.Controls.Add(mainMenu); } private void CreateSubMenu(ref ToolStripMenuItem topMenu, int ItemID, DataTable dt) { DataView dv = new DataView(dt); //过滤出当前父菜单下在所有子菜单数据(仅为下一层的) dv.RowFilter = "PreviousId=" + ItemID.ToString(); for (int i = 0; i < dv.Count; i++) { //创建子菜单项 ToolStripMenuItem subMenu = new ToolStripMenuItem(); subMenu.Text = dv[i]["Name"].ToString(); //如果还有子菜单则继续递归加载。 if (Convert.ToInt16(dv[i]["PreviousId"]) == 0) { //递归调用 CreateSubMenu(ref subMenu, Convert.ToInt32(dv[i]["PreviousId"]), dt); } else { //扩展属性可以加任何想要的值。这里用formName属性来加载窗体。 subMenu.Tag = dv[i]["Name"].ToString(); //给没有子菜单的菜单项加事件。 subMenu.Click += new EventHandler(subMenu_Click); } if (dv[i]["Images"].ToString().Length > 0) { //设置菜单项前面的图票为16X16的图片文件。 //Image img = Image.FromFile(@"..\..\Image\" + dv[i]["Images"].ToString()); //subMenu.Image = img; //subMenu.Image.Tag = dv[i]["Images"].ToString(); } //将菜单加到顶层菜单下。 topMenu.DropDownItems.Add(subMenu); } } 如何在VS2008中的C#中调用VC6的带MFC的动态库? 求教,string 不包含text???这是什么原因求解 如何在tollstrip添加图标和按钮的合体..请高手指点,急死了. C#新手,调试的时候遇到一个问题,请高手指点 如何将字符串转为SqlDbType C#中如何捕获系统的错误代码并加以利用? 请教各位 winform 下datagrid数据怎么绑定 关于操作Excel的问题 .net调用Java webservices反序列化错误? 如何将form加入tabControl!在线等 基础连接已关闭.连接意外关闭.
{
//定义一个主菜单
MenuStrip mainMenu = new MenuStrip();
DataSet ds = new DataSet();
//从XML中读取数据。数据结构后面详细讲一下。
ds.ReadXml(@"..\..\Menu.xml");
DataView dv = ds.Tables[0].DefaultView;
//通过DataView来过滤数据首先得到最顶层的菜单
dv.RowFilter = "ParentItemID=0";
for(int i=0; i<dv.Count;i++)
{
//创建一个菜单项
ToolStripMenuItem topMenu = new ToolStripMenuItem();
//给菜单赋Text值。也就是在界面上看到的值。
topMenu.Text = dv[i]["Text"].ToString();
//如果是有下级菜单则通过CreateSubMenu方法来创建下级菜单
if (Convert.ToInt16(dv[i]["IsModule"]) == 1)
{
//以ref的方式将顶层菜单传递参数,因为他可以在赋值后再回传。--也许还有更好的方法^_^.
CreateSubMenu(ref topMenu, Convert.ToInt32(dv[i]["ItemID"]),ds.Tables[0]);
}
//显示应用程序中已打开的 MDI 子窗体列表的菜单项
mainMenu.MdiWindowListItem = topMenu;
//将递归附加好的菜单加到菜单根项上。
mainMenu.Items.Add(topMenu);
}
mainMenu.Dock = DockStyle.Top;
//将窗体的MainMenuStrip梆定为mainMenu.
this.MainMenuStrip = mainMenu;
//这句很重要。如果不写这句菜单将不会出现在主窗体中。
this.Controls.Add(mainMenu);
} private void CreateSubMenu(ref ToolStripMenuItem topMenu,int ItemID, DataTable dt)
{
DataView dv = new DataView(dt);
//过滤出当前父菜单下在所有子菜单数据(仅为下一层的)
dv.RowFilter = "ParentItemID=" + ItemID.ToString();
for (int i = 0; i < dv.Count; i++)
{
//创建子菜单项
ToolStripMenuItem subMenu = new ToolStripMenuItem();
subMenu.Text = dv[i]["Text"].ToString();
//如果还有子菜单则继续递归加载。
if (Convert.ToInt16(dv[i]["IsModule"]) == 1)
{
//递归调用
CreateSubMenu(ref subMenu, Convert.ToInt32(dv[i]["ItemID"]), dt);
}
else
{
//扩展属性可以加任何想要的值。这里用formName属性来加载窗体。
subMenu.Tag = dv[i]["FormName"].ToString();
//给没有子菜单的菜单项加事件。
subMenu.Click += new EventHandler(subMenu_Click);
}
if (dv[i]["ImageName"].ToString().Length > 0)
{
//设置菜单项前面的图票为16X16的图片文件。
Image img = Image.FromFile(@"..\..\Image\"+dv[i]["ImageName"].ToString());
subMenu.Image = img;
subMenu.Image.Tag = dv[i]["ImageName"].ToString();
}
//将菜单加到顶层菜单下。
topMenu.DropDownItems.Add(subMenu);
}
}
或者把这转换成Sql语句的办法来取值。。都有分。。
SqlConnection conn = new SqlConnection("server=192.168.2.103;uid=ht1;pwd=821022;database=ht1");
DataSet ds;
public Form1()
{
InitializeComponent();
conn.Open();
this.createDataSet(); //conn.Close();
this.CreateMenu();
//
conn.Close();
}
private DataSet createDataSet()
{
ds = new DataSet();
string sqlStr = "select * from Sys_tree order by px";
SqlDataAdapter cs = new SqlDataAdapter(sqlStr, conn);
cs.Fill(ds, "Tree");
return ds;
}
private void CreateMenu()
{
//定义一个主菜单
MenuStrip mainMenu = new MenuStrip();
//DataSet ds = new DataSet();
//从XML中读取数据。数据结构后面详细讲一下。
//ds.ReadXml(@"..\..\Menu.xml");
DataView dv = ds.Tables[0].DefaultView;
//通过DataView来过滤数据首先得到最顶层的菜单
dv.RowFilter = "PreviousId=0";
for (int i = 0; i < dv.Count; i++)
{
//创建一个菜单项
ToolStripMenuItem topMenu = new ToolStripMenuItem();
//给菜单赋Text值。也就是在界面上看到的值。
topMenu.Text = dv[i]["Name"].ToString();
//如果是有下级菜单则通过CreateSubMenu方法来创建下级菜单
if (Convert.ToInt16(dv[i]["PreviousId"]) == 0)
{
//以ref的方式将顶层菜单传递参数,因为他可以在赋值后再回传。--也许还有更好的方法^_^.
CreateSubMenu(ref topMenu, Convert.ToInt32(dv[i]["id"]), ds.Tables[0]);
}
//显示应用程序中已打开的 MDI 子窗体列表的菜单项
mainMenu.MdiWindowListItem = topMenu;
//将递归附加好的菜单加到菜单根项上。
mainMenu.Items.Add(topMenu);
}
mainMenu.Dock = DockStyle.Top;
//将窗体的MainMenuStrip梆定为mainMenu.
this.MainMenuStrip = mainMenu;
//这句很重要。如果不写这句菜单将不会出现在主窗体中。
this.Controls.Add(mainMenu);
} private void CreateSubMenu(ref ToolStripMenuItem topMenu, int ItemID, DataTable dt)
{
DataView dv = new DataView(dt);
//过滤出当前父菜单下在所有子菜单数据(仅为下一层的)
dv.RowFilter = "PreviousId=" + ItemID.ToString(); for (int i = 0; i < dv.Count; i++)
{
//创建子菜单项
ToolStripMenuItem subMenu = new ToolStripMenuItem();
subMenu.Text = dv[i]["Name"].ToString();
//如果还有子菜单则继续递归加载。
if (Convert.ToInt16(dv[i]["PreviousId"]) == 0)
{
//递归调用
CreateSubMenu(ref subMenu, Convert.ToInt32(dv[i]["PreviousId"]), dt);
}
else
{
//扩展属性可以加任何想要的值。这里用formName属性来加载窗体。
subMenu.Tag = dv[i]["Name"].ToString();
//给没有子菜单的菜单项加事件。
subMenu.Click += new EventHandler(subMenu_Click);
}
if (dv[i]["Images"].ToString().Length > 0)
{
//设置菜单项前面的图票为16X16的图片文件。
//Image img = Image.FromFile(@"..\..\Image\" + dv[i]["Images"].ToString());
//subMenu.Image = img;
//subMenu.Image.Tag = dv[i]["Images"].ToString();
}
//将菜单加到顶层菜单下。
topMenu.DropDownItems.Add(subMenu);
}
}