ローソク足・出来高チャートにTreeViewを追加する

ローソク足・出来高チャートは、銘柄コードをテキストボックスに入力する必要がありました。この手間を少し省くため以前、作成した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;
                }
            }
        }
    }

実行結果

タイトルとURLをコピーしました