コード例 #1
0
        /// <summary>
        ///  改变内容和光标移动,并进行提示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PLCCodeEditor_SelChange(object sender, ICodeSenseEvents_SelChangeEvent e)
        {
            //this.CreateGraphics().FillEllipse(Brushes.Red, new Rectangle(0, 0, 10, 10));


            //选择和行号不变:不作格式化            

            if (lastLineNumber == GetCaretLineNumber())
            {
                lastTokenType = CurrentToken; // After edit Token will be changed
                return;
            }
            if (SelLength != 0)
            {
                lastLineNumber = GetCaretLineNumber();
                lastTokenType = CurrentToken;
                return;
            }

            string formatedText = FormatRow(lastLineNumber, true, false);
            string noFormatedText = GetLine(lastLineNumber);
            if (formatedText == noFormatedText)        //出错没进行格式化
            {
                lastLineNumber = GetCaretLineNumber();
                lastTokenType = CurrentToken;
                return;
            }

            Position position = GetCaretPosition();                            //先保存实际的Caret,一删一加Caret变了,Token也会变  

            int length = (formatedText.Length > noFormatedText.Length) ? formatedText.Length : noFormatedText.Length;
            ReplaceText(formatedText, GetLineRange(lastLineNumber,
                GetLineLength(lastLineNumber)));       //获取当前行的字符数,不能超过,否则会有溢出

            SetCaretPos(position.LineNo, position.ColNo);  //还原Caret

            lastLineNumber = GetCaretLineNumber();                     //当前行变为上一行  
            lastTokenType = CurrentToken;
        }
コード例 #2
0
        // 格式化
        private void Format()
        {
            //选择和行号不变:不作格式化            
            //if (lastLineNumber == GetCaretLineNumber())
            //    return;
            if (SelLength != 0)
            {
                lastLineNumber = GetCaretLineNumber();
                lastTokenType = CurrentToken;
                return;
            }

            string formatedText = FormatRow(lastLineNumber, true, false);
            string noFormatedText = GetLine(lastLineNumber);
            if (formatedText == noFormatedText)        //出错没进行格式化
            {
                lastLineNumber = GetCaretLineNumber();
                lastTokenType = CurrentToken;
                return;
            }

            Position position = GetCaretPosition();                            //先保存实际的Caret,一删一加Caret变了,Token也会变  

            int length = (formatedText.Length > noFormatedText.Length) ? formatedText.Length : noFormatedText.Length;
            ReplaceText(formatedText, GetLineRange(lastLineNumber,
                GetLineLength(lastLineNumber)));       //获取当前行的字符数,不能超过,否则会有溢出

            SetCaretPos(position.LineNo, position.ColNo);  //还原Caret

            lastLineNumber = GetCaretLineNumber();                     //当前行变为上一行  
            lastTokenType = CurrentToken;
        }