📄 fs_reg.cs
字号:
//
// FS_menu_recall
//
this.FS_menu_recall.Index = 0;
this.FS_menu_recall.Text = "撤销(&U) Ctrl+Z";
this.FS_menu_recall.Click += new System.EventHandler(this.FS_menu_recall_Click);
//
// FS_menu_cut
//
this.FS_menu_cut.Index = 3;
this.FS_menu_cut.Text = "剪切(&T) Ctrl+X";
this.FS_menu_cut.Click += new System.EventHandler(this.FS_menu_cut_Click);
//
// menuItem3
//
this.menuItem3.Index = 2;
this.menuItem3.Text = "-";
//
// menuItem4
//
this.menuItem4.Index = 6;
this.menuItem4.Text = "-";
//
// FS_menu_selectall
//
this.FS_menu_selectall.Index = 7;
this.FS_menu_selectall.Text = "全选(&A) Ctrl+A";
this.FS_menu_selectall.Click += new System.EventHandler(this.FS_menu_selectall_Click);
//
// FS_menu_redo
//
this.FS_menu_redo.Index = 1;
this.FS_menu_redo.Text = "重复(&R) Ctrl+Y";
this.FS_menu_redo.Click += new System.EventHandler(this.FS_menu_redo_Click);
//
// FS_Reg
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(692, 393);
this.Controls.Add(this.FS_BottomPanel);
this.Controls.Add(this.FS_TopPanel);
this.Name = "FS_Reg";
this.Text = "正则测试工具1.0 (By 沙沙)";
this.Resize += new System.EventHandler(this.FS_Reg_Resize);
this.Load += new System.EventHandler(this.FS_Reg_Load);
this.FS_TopPanel.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.FS_BottomPanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
//Application.EnableVisualStyles();//xp样式
Application.Run(new FS_Reg());
}
private void FS_Execute_Click(object sender, System.EventArgs e)
{
try
{
MatchCollection found =null;
Regex r;
string _regx = FS_regx.Text;
RegexOptions TheOptions;
//RegexOptions TheOptions;
//TheOptions=RegexProject.Options;
if (FS_isIgnore.Checked)
TheOptions = RegexOptions.Singleline | RegexOptions.IgnoreCase;
else
TheOptions = RegexOptions.Singleline;
r = new Regex(@_regx,TheOptions);
string _inputstr = FS_input.Text;
found = r.Matches(_inputstr);
FillTreeWithMatches(found,r);
FS_total.Text = "总共( " + found.Count.ToString() + " )条匹配项";
}
catch(Exception ee)
{
MessageBox.Show("错误:"+ee.Message.ToString());
return;
}
}
private void ClearTreeNodes()
{
FS_tree.Nodes.Clear();
}
private void FillTreeWithMatches(MatchCollection found,Regex CreatingRegexObject)
{
ClearTreeNodes();
foreach (Match m in found)
{
if(m.Value.Length>0)
{
int ThisNode= AddTreeNode("["+m.Value + "]",m,1);
if(m.Groups.Count>1)
{
for (int i=1;i<m.Groups.Count;i++)
{
string SubNodeText = CreatingRegexObject.GroupNameFromNumber(i)+": ["+m.Groups[i].Value+"]";
AddSubNode(ThisNode,SubNodeText,m.Groups[i],i);
}
}
}
}
}
private void AddSubNode(int parentNodeIndex,string caption,Group captureGroup,int groupIndex)
{
FS_tree.Nodes[parentNodeIndex].Nodes.Add(new TreeNode(caption,0,0));
FS_tree.Nodes[parentNodeIndex].Nodes[groupIndex-1].Tag=captureGroup;
FS_tree.Nodes[parentNodeIndex].Expand();
}
private int AddTreeNode(string nodeText,Match currentMatchForNode,int iconIndex)
{
TreeNode t = new TreeNode(nodeText,iconIndex,iconIndex);
FS_tree.Nodes.Add(t);
int ThisNode=FS_tree.Nodes.Count-1;
FS_tree.Nodes[ThisNode].Tag=currentMatchForNode;
return ThisNode;
}
private void FS_tree_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
ShowCurrentTreeResultInInputText();
}
private void ShowCurrentTreeResultInInputText()
{
try
{
if(FS_tree.SelectedNode.Parent==null) // Must be the top level node
{
Match m=(Match)FS_tree.SelectedNode.Tag;
if(m!=null)
{
FS_input.Select( m.Index,m.Length);
FS_input.ScrollToCaret();
}
}
else if(FS_tree.SelectedNode.Parent.Parent==null) // Must be a group
{
Group g=(Group)FS_tree.SelectedNode.Tag;
if(g!=null)
{
FS_input.Select(g.Index,g.Length);
FS_input.ScrollToCaret();
}
}
else // Must be a capture
{
Capture c=(Capture)FS_tree.SelectedNode.Tag;
if(c!=null)
{
FS_input.Select(c.Index,c.Length);
FS_input.ScrollToCaret();
}
}
}
catch(Exception err)
{
MessageBox.Show(err.Message);
}
}
private void FS_Reg_Resize(object sender, System.EventArgs e)
{
FS_Init();
}
private void FS_Reg_Load(object sender, System.EventArgs e)
{
FS_Init();
}
private void FS_Init()
{
FS_regx.Anchor = ( ( ( AnchorStyles.Top | AnchorStyles.Bottom ) | AnchorStyles.Left ) | AnchorStyles.Right ); //定位"转到"按钮组件与窗体的上、右边框保持一致
FS_Execute.Anchor = ( AnchorStyles.Top | AnchorStyles.Right ); //定位"转到"按钮组件与窗体的上、右边框保持一致
}
private void FS_menu_copy_Click(object sender, System.EventArgs e)
{
if (FS_input.SelectedText!="")
{
Clipboard.SetDataObject(FS_input.SelectedText, true);
}
}
private void FS_menu_paste_Click(object sender, System.EventArgs e)
{
IDataObject iData = Clipboard.GetDataObject();
if (iData.GetDataPresent(DataFormats.Text))
{
FS_input.Paste();
}
}
private void FS_menu_recall_Click(object sender, System.EventArgs e)
{
FS_input.Undo();
}
private void FS_menu_cut_Click(object sender, System.EventArgs e)
{
if (FS_input.SelectedText!="")
{
FS_input.Cut();
}
}
private void FS_menu_selectall_Click(object sender, System.EventArgs e)
{
FS_input.SelectAll();
}
private void FS_Menu_Popup(object sender, System.EventArgs e)
{
if (FS_input.SelectedText=="")
{
FS_menu_cut.Enabled = false;
FS_menu_copy.Enabled = false;
}
else
{
FS_menu_cut.Enabled = true;
FS_menu_copy.Enabled = true;
}
}
private void FS_menu_redo_Click(object sender, System.EventArgs e)
{
FS_input.Redo();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -