请教各位,我的菜单结构是存储在一个.XML文件中的,在编译环境下运行都没问题,但是发布出来后就说路径不对,找不到我发布的.XML文件,提示为:未能找到路径“C:\Documents and Settings\we\Local Settings\Apps\2.0\PXXV1GOP.VTC\frame\menu.xml”的一部分。
我到“C:\Documents and Settings\we\Local Settings\Apps\2.0\PXXV1GOP.VTC\”看了下,确实没有frame文件夹,然后我吧frame文件夹还有menu.xml文件一同拷到目录下,可是运行程序还是一样的提示,请大家帮忙,谢谢!!
我到“C:\Documents and Settings\we\Local Settings\Apps\2.0\PXXV1GOP.VTC\”看了下,确实没有frame文件夹,然后我吧frame文件夹还有menu.xml文件一同拷到目录下,可是运行程序还是一样的提示,请大家帮忙,谢谢!!
{
//定义一个主菜单
MenuStrip mainMenu = new MenuStrip();
DataSet ds = new DataSet();
string strMenuXml = Application.StartupPath.ToString() + @"\..\..\frame\mune.xml";
ds.ReadXml(strMenuXml);
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);
}这个是我的部分代码。编译环境下是没有问题的,我也奇怪呢,怎么出这问题了!!!
不要这样用 改成 string strMenuXml = Application.StartupPath.ToString() + @"\frame\mune.xml";
然后就在当前exe的目录下建立\frame\mune.xml 例如 exe在 D:\program\App目录下则建立 D:\program\App\frame\mune.xml
string strMenuXml = @"D:\shuntong_xs\st_manager\frame\mune.xml";
用jiatong1981(末日之痕)的方法就是下面的写法,但是还是说未能找到路径:
string strMenuXml = Application.StartupPath.ToString() + @"\frame\mune.xml";
按道理说strMenuXml=”D:\shuntong_xs\st_manager\frame\mune.xml“才对啊!
晕了。
按照这个目录建立相应文件然后你运行debug 路径使用 @".\frame\mune.xml"我就不信还不行
未能找到路径“C:\Documents and Settings\we\Local Settings\Apps\2.0\PXXV1GOP.VTC\st_m..tion_36016e4b63d84d89_0001.0001a6fcfe321f2d5f7\frame\menu.xml“
st_m..tion_36016e4b63d84d89_0001.0001a6fcfe321f2d5f7怎么会有这么奇怪的文件夹名字?
1、首先打开项目属性--->发布--->应用程序文件--->把frame\mune.xml文件的发布状态改为包括。
2、在引用路径的时候这么写“string strMenuXml = Directory.GetCurrentDirectory() + "\\frame\\mune.xml"; ”
通过上面两个步骤把问题解决了。
谢谢各位,特别是 jiatong1981(末日之痕) ,lambober(星之劫),hhyytt(鹦鹉螺)