📄 treeform.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;
using System.Text.RegularExpressions;
namespace CmmInterpretor
{
public partial class TreeForm : Form
{
public TreeForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Dispose();
}
//获得语法树
public TreeView getTree()
{
return treeView1;
}
//全部展开
private void button2_Click(object sender, EventArgs e)
{
treeView1.ExpandAll();
}
//全部收缩
private void button3_Click(object sender, EventArgs e)
{
treeView1.CollapseAll();
}
//关闭提示框
private void button4_Click(object sender, EventArgs e)
{
textBox1.Visible = false;
button4.Visible = false;
button4.Enabled = false;
}
//展开两层
private void button5_Click(object sender, EventArgs e)
{
treeView1.CollapseAll();
foreach (TreeNode node_0 in treeView1.Nodes)
{
node_0.Expand();
foreach (TreeNode node_1 in node_0.Nodes)
{
node_1.Expand();
}
}
}
//保存语法树
private void button6_Click(object sender, EventArgs e)
{
if (treeView1 == null)
{
MessageBox.Show(" 语法树不存在! ", "出错", MessageBoxButtons.OK);
return;
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.DefaultExt = "xml";
sfd.Filter = "XML files (*.xml)|*.xml";
DialogResult answer = sfd.ShowDialog();
if (answer != DialogResult.Cancel)
{
Tree tf = new Tree();
XmlDocument treeXml = tf.Tree2XML(ref treeView1);
if (treeXml != null)
treeXml.Save(sfd.FileName);
}
}
//打开语法树
private void openTreeButton_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.DefaultExt = "xml";
openFileDialog1.Filter = "XML Files (*.xml)|*.xml";
DialogResult answer = openFileDialog1.ShowDialog();
if (answer == DialogResult.Cancel) return;
TextReader tr = File.OpenText(openFileDialog1.FileName);
Tree tsl = new Tree();
string grammerTree = tr.ReadToEnd();
tr.Close();
if (grammerTree.Contains("<") || grammerTree.Contains("&"))
{
grammerTree = Regex.Replace(grammerTree, @"<", "<").ToString();
grammerTree = Regex.Replace(grammerTree, @"&", "&").ToString();
}
treeView1.Nodes.Clear();
tsl.CreateTree(grammerTree, treeView1.Nodes);
treeView1.ExpandAll();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -