DataSet ds1 = new DataSet();
ds1.ReadXml(Application.StartupPath + "/xml/User1.Xml");
DataSet ds2 = new DataSet();
ds2.ReadXml(Application.StartupPath + "/xml/User2.Xml");
DataSet ds3 = new DataSet();
ds3.ReadXml(Application.StartupPath + "/xml/User3.Xml");
DataSet ds4 = new DataSet();
ds4.ReadXml(Application.StartupPath + "/xml/User4.Xml");
foreach (DataRow row1 in ds1.Tables[0].Rows)
{
if (row1[2].ToString() == "0")//生成第一级别国家
{
ToolStripMenuItem toolMenuItem = new ToolStripMenuItem();
toolMenuItem.Name = "toolMenuItem" + row1[0].ToString();
toolMenuItem.Text = row1[1].ToString();
this.StripMenuItem_choose.DropDownItems.Add(toolMenuItem);
toolMenuItem.Click += new System.EventHandler(this.toolMenuItem_Click); if (depth >= 1)//当前的选定项
{
if (row1[0].ToString() == area[0].ToString())
{
toolMenuItem.Checked = true;
}
} foreach (DataRow row2 in ds2.Tables[0].Rows)
{
if (row1[0].ToString() == row2[3].ToString())//生成第二级别省份
{
//MessageBox.Show(row2[3].ToString());
ToolStripMenuItem toolMenuItem2 = new ToolStripMenuItem();
toolMenuItem2.Name = "toolMenuItem" + row2[0].ToString();
toolMenuItem2.Text = row2[1].ToString();
toolMenuItem.DropDownItems.Add(toolMenuItem2);
toolMenuItem2.Click += new System.EventHandler(this.toolMenuItem_Click);
if (depth >= 2)//当前的选定项
{
if (row2[0].ToString() == area[1].ToString())
{
toolMenuItem2.Checked = true;
}
}
else if (depth==1)
{
toolMenuItem2.Checked = true;
}
foreach (DataRow row3 in ds3.Tables[0].Rows)
{ if (row2[0].ToString() == row3[3].ToString())//生成第三级别地区
{
//MessageBox.Show(row2[3].ToString());
ToolStripMenuItem toolMenuItem3 = new ToolStripMenuItem();
toolMenuItem3.Name = "toolMenuItem" + row3[0].ToString();
toolMenuItem3.Text = row3[1].ToString();
toolMenuItem2.DropDownItems.Add(toolMenuItem3);
toolMenuItem3.Click += new System.EventHandler(this.toolMenuItem_Click);
if (depth >= 3)//当前的选定项
{
if (row3[0].ToString() == area[2].ToString())
{
toolMenuItem3.Checked = true;
.....略
我的程序每次启动都要生成这样地区县市的三千多个菜单
本来读去数据库的现在已经用XML缓存了
可是发现更占资源
程序几乎打不开了
怎么样不用让它每次启动都要生成菜单啊
ds1.ReadXml(Application.StartupPath + "/xml/User1.Xml");
DataSet ds2 = new DataSet();
ds2.ReadXml(Application.StartupPath + "/xml/User2.Xml");
DataSet ds3 = new DataSet();
ds3.ReadXml(Application.StartupPath + "/xml/User3.Xml");
DataSet ds4 = new DataSet();
ds4.ReadXml(Application.StartupPath + "/xml/User4.Xml");
foreach (DataRow row1 in ds1.Tables[0].Rows)
{
if (row1[2].ToString() == "0")//生成第一级别国家
{
ToolStripMenuItem toolMenuItem = new ToolStripMenuItem();
toolMenuItem.Name = "toolMenuItem" + row1[0].ToString();
toolMenuItem.Text = row1[1].ToString();
this.StripMenuItem_choose.DropDownItems.Add(toolMenuItem);
toolMenuItem.Click += new System.EventHandler(this.toolMenuItem_Click); if (depth >= 1)//当前的选定项
{
if (row1[0].ToString() == area[0].ToString())
{
toolMenuItem.Checked = true;
}
} foreach (DataRow row2 in ds2.Tables[0].Rows)
{
if (row1[0].ToString() == row2[3].ToString())//生成第二级别省份
{
//MessageBox.Show(row2[3].ToString());
ToolStripMenuItem toolMenuItem2 = new ToolStripMenuItem();
toolMenuItem2.Name = "toolMenuItem" + row2[0].ToString();
toolMenuItem2.Text = row2[1].ToString();
toolMenuItem.DropDownItems.Add(toolMenuItem2);
toolMenuItem2.Click += new System.EventHandler(this.toolMenuItem_Click);
if (depth >= 2)//当前的选定项
{
if (row2[0].ToString() == area[1].ToString())
{
toolMenuItem2.Checked = true;
}
}
else if (depth==1)
{
toolMenuItem2.Checked = true;
}
foreach (DataRow row3 in ds3.Tables[0].Rows)
{ if (row2[0].ToString() == row3[3].ToString())//生成第三级别地区
{
//MessageBox.Show(row2[3].ToString());
ToolStripMenuItem toolMenuItem3 = new ToolStripMenuItem();
toolMenuItem3.Name = "toolMenuItem" + row3[0].ToString();
toolMenuItem3.Text = row3[1].ToString();
toolMenuItem2.DropDownItems.Add(toolMenuItem3);
toolMenuItem3.Click += new System.EventHandler(this.toolMenuItem_Click);
if (depth >= 3)//当前的选定项
{
if (row3[0].ToString() == area[2].ToString())
{
toolMenuItem3.Checked = true;
.....略
我的程序每次启动都要生成这样地区县市的三千多个菜单
本来读去数据库的现在已经用XML缓存了
可是发现更占资源
程序几乎打不开了
怎么样不用让它每次启动都要生成菜单啊
我可以把整段代码发他
一开始就显示国家的部分,人家选择了某国,再显示下级......