ローソク足・出来高チャートは、銘柄コードをテキストボックスに入力する必要がありました。この手間を少し省くため以前、作成したTreeViewを追加し、銘柄選択を簡単にします。
追加するコントロールは、TreeViewとButtonの2つです。TreeVewへの追加、削除は行わない。なので、CodeTreeViewで作成した「Stock_v.xml」を「\bin\Debug」フォルダにコピーします。
コントロールの配置

btnLoad_Clickイベントの追加
このイベントでxmlファイルをTreeViewに読み込みます。本イベントは、CodeTreeViewで作成したプログラムコードを流用します。
ファイルの先頭で、XML 処理を行う名前空間を宣言します。
using System.Xml;
private void btnLoad_Click(object sender, EventArgs e)
{
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
try
{
doc.Load(@"Stock_v.xml");
XmlElement root = doc.DocumentElement;
XmlElement name = (XmlElement)root.FirstChild;
treeView1.Nodes.Clear();
while (name != null)
{
TreeNode node = new TreeNode(name.Name);
node.Text = XmlConvert.DecodeName(node.Text);
node.Name = node.Text;
// categoryの追加
treeView1.Nodes.Add(node);
XmlElement member = (XmlElement)name.FirstChild;
while (member != null)
{
string strCodeName = member.FirstChild.Value;
string[] str = strCodeName.Split(' ');
// str[0] : code
// str[1] : name
TreeNode memberNode = new TreeNode(strCodeName);
memberNode.Name = str[0];
// member(code & name)の追加
node.Nodes.Add(memberNode);
member = (XmlElement)member.NextSibling;
}
name = (XmlElement)name.NextSibling;
}
}
catch
{
MessageBox.Show("ファイルの読み込みに失敗しました。", "実行エラー");
}
}
treeView1_AfterSelectイベントの追加
このイベントで、TreeViewにある銘柄コードをtxtCode.Textへコピーしてきます。これにより既存のプログラムコードをできるだけ触らないようにします。
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node != null)
{
if (e.Node.Parent != null)
{
Console.WriteLine(e.Node.Name);
txtCode.Text = e.Node.Name;
}
}
}
}
実行結果
