C# 階層の出来上がっているToolStripMenuItemから一段階下の階層を得るときにエラーになる
お世話になります。
CSVのテキストを読み込み、自動的にContextMenuStripを生成するコードを書いています。
一つルート階層のToolStripMenuItemを準備してから、ツリー構造を作るような
アルゴリズムにしました。
最後に、いざContextMenuStripに乗せるときに、rootをそのまま乗せると、root自体が
邪魔に感じてしまうので、rootの子供からContextMenuStripに乗せようとするのですが、
例外が発生して思うように動きません。
原因と対策をお教えいただけますでしょうか。
下記にコードを記述します。
private void BaseForm_Load(object sender, EventArgs e)
{
// cmsはContextMenuStrip
string[] stItems = File.ReadAllLines(@"C:\xxxxxxx\売り物.txt");
if(stItems == null)
{
return;
}
this.cms.Items.Clear();
ToolStripMenuItem root = new ToolStripMenuItem();
foreach (string s in stItems)
{
string[] values = s.Split(',');
ToolStripMenuItem parent = root;
foreach (string ss in values)
{
if (ss != "")
{
ToolStripMenuItem mi = new ToolStripMenuItem();
mi.Text = ss;
parent.DropDownItems.Add(mi);
parent = mi;
}
else
{
parent = (ToolStripMenuItem)parent.DropDownItems[root.DropDownItems.Count - 1];
}
}
}
// コレクションごとごっそり入れようとしてもエラー
this.cms.Items.AddRange(root.DropDownItems);
// 一つ一つ取り出して入れようとしても違ったエラー
foreach (ToolStripMenuItem tsmi in root.DropDownItems)
{
this.cms.Items.Add(tsmi);
}
}
くだもの,りんご
,いちご
,みかん
,スイカ
野菜,キャベツ
,きゅうり
,大根
,玉ねぎ
以上、よろしくお願いいたします。