0

私はコード エディターに取り組んでおり、別の void を返すメソッド内にある keyargs イベントに文字列行を呼び出したいと考えています。

Enterキーを入力すると出力が発生し、ComboBoxからの選択リストがRichTextBoxに保持されているテキストに追加されます。

それを実現するために、このメソッドを呼び出す方法をお尋ねしたいと思います。

void Parse()
    {
        String inputLanguage =

          "using System;\n" + "\n" +
          "public class Stuff : Form { \n" +
          "  public static void Main(String args) {\n" +
          "\n" + "\n" +
        "  }\n" +
        "}\n";

        // Foreach line in input,
        // identify key words and format them when adding to the rich text box.
        Regex r = new Regex("\\n");
        String[] lines = r.Split(inputLanguage);
        foreach (string l in lines)
        {
            ParseLine(l);
        }
    }
void ParseLine(string line)
{
    Regex r = new Regex("([ \\t{}();])");
    String[] tokens = r.Split(line);

    foreach (string token in tokens)
    {

        // Set the token's default color and font.
        rtb.SelectionColor = Color.Black;
        rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Regular);

        // Check for a comment.
        if (token == "//" || token.StartsWith("//"))
        {
            // Find the start of the comment and then extract the whole comment.
            int index = line.IndexOf("//");

            rtb.SelectedText = comment;
            break;
        }

        // Check whether the token is a keyword. 
        var keywordsDef = new KeyWord();
        String[] keywords = keywordsDef.keywords;

        for (int i = 0; i < keywords.Length; i++)
        {
            if (keywords[i] == token)
            {
                // Apply alternative color and font to highlight keyword.
                HighlighType.keywordsType(rtb);
                break;
            }
        }
        rtb.SelectedText = token;
    }
    rtb.SelectedText = "\n";
}

この中から:

void lb_KeyDown(object sender, KeyEventArgs e)
    {

        if (e.KeyCode == Keys.Escape)
        {
            lb.Visible = false;
            lb.Items.Clear();
        }

        if (e.KeyCode == Keys.Enter)
        {
            //ParseLine(string line);
            Parse();

            string comment = line.Substring(index, line.Length - index);

            rtb.SelectedText = comment + " " + lb.SelectedIndex.ToString();
        }
    }

本当に助けが必要です。よろしくお願いします!

4

2 に答える 2

1

パラメータを間違って渡しています。メソッドを呼び出すときに型を渡すことはできません。コメント行は次のようになります

ParseLine(line);

変数lineは、上のどこかで宣言する必要がありますParseLine。何が含まれるかはあなた次第ですが、おそらく設定したいでしょう

string line = lb.Text;

したがって、コードは次のようになります。

void lb_KeyDown(object sender, KeyEventArgs e)
{

    if (e.KeyCode == Keys.Escape)
    {
        lb.Visible = false;
        lb.Items.Clear();
    }

    if (e.KeyCode == Keys.Enter)
    {
        string line = lb.Text;
        ParseLine(line);
        //Parse();

        string comment = line.Substring(index, line.Length - index);
        rtb.SelectionColor = Color.Green;
        rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Italic);
        rtb.SelectedText = comment + " " + lb.SelectedIndex.ToString();
    }
}
于 2013-03-06T11:41:54.173 に答える
0

関数を呼び出すことは問題ではありませんが、使用しているエディターで現在の行を取得する何らかの方法が必要です。それを取得したら、それを呼び出すことができますが、取得するParseLineまで何もする必要はありません。

于 2013-03-06T11:43:49.353 に答える