private void runToolStripMenuItem1_Click(object sender, EventArgs e) { try { if (isEditorMode) { if (isOutputShow) { op.Activate(); } else { isOutputShow = true; op = new Output(); op.Show(); } run(MainrichTextBox.Text, sender, e, op.OutputrichTextBox); } else { run(MainrichTextBox.Lines[line - 1], sender, e); } } catch (IndexOutOfRangeException) { } catch (Exception er) { MainrichTextBox.AppendText("\n" + er.Message); } }
private void editorModeToolStripMenuItem_Click(object sender, EventArgs e) { if (editorModeToolStripMenuItem.Checked == true) { isEditorMode = false; editorModeToolStripMenuItem.Checked = false; openToolStripMenuItem.Enabled = false; LabelExplain.Text = ""; if (MainrichTextBox.Text != "") { DialogResult Result = MessageBox.Show("是否保存", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (Result == DialogResult.Yes) { saveToolStripMenuItem_Click(sender, e); } } MainrichTextBox.Clear(); } else { isEditorMode = true; editorModeToolStripMenuItem.Checked = true; MainrichTextBox.Clear(); openToolStripMenuItem.Enabled = true; LabelExplain.Text = " 当前处于编辑器模式,若要执行请按\"Ctrl+Enter\""; } }
private void CurrentState() { int index = MainrichTextBox.GetFirstCharIndexOfCurrentLine(); line = MainrichTextBox.GetLineFromCharIndex(index) + 1; column = MainrichTextBox.SelectionStart - index + 1; MaintoolStripStatusLabel.Text = " lines:" + line.ToString() + " columns:" + column.ToString(); }
private void run(string input, object sender, EventArgs e, RichTextBox richtextbox) { try { string pattern = @"(?<!Math\.)(E|LN2|LN10|LOG2E|LOG10E|PI|SQRT1_2|SQRT2|abs|acos|asin|atan|atan2|ceil|cos|exp|floor|log|max|min|pow|random|round|sin|sqrt|tan)"; MatchCollection mc = Regex.Matches(input, pattern); foreach (Match m in mc) { Regex rgx = new Regex(pattern); input = rgx.Replace(input, "Math." + m); } switch (input.TrimEnd(' ')) { case "help": helpToolStripMenuItem1_Click(sender, e); break; case "exit": exitToolStripMenuItem_Click(sender, e); break; case "save": saveToolStripMenuItem_Click(sender, e); break; case "statusbar": statusBarToolStripMenuItem_Click(sender, e); break; case "menubar": menuBarToolStripMenuItem_Click(sender, e); break; case "clear": MainrichTextBox.Clear(); break; default: Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine(); var result = Microsoft.JScript.Eval.JScriptEvaluate(input, ve); richtextbox.AppendText("\n" + result.ToString()); break; } } catch (NullReferenceException) { } catch (Exception er) { richtextbox.AppendText("\n" + er.Message); } }
private void MainrichTextBox_KeyDown(object sender, KeyEventArgs e) { view(e); try { if (isEditorMode) { if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter) { if (isOutputShow) { op.Activate(); } else { isOutputShow = true; op = new Output(); op.Show(); } run(MainrichTextBox.Text, sender, e, op.OutputrichTextBox); } } else { if (e.KeyCode == Keys.Enter) { run(MainrichTextBox.Lines[line - 1], sender, e); } } } catch (IndexOutOfRangeException) { } catch (Exception er) { MainrichTextBox.AppendText("\n" + er.Message); } }
private void Clear(object sender, EventArgs e) { MainrichTextBox.Clear(); }
private void SelectAll(object sender, EventArgs e) { MainrichTextBox.SelectAll(); }
private void Paste(object sender, EventArgs e) { MainrichTextBox.Paste(); }
private void Cut(object sender, EventArgs e) { MainrichTextBox.Cut(); }