Exemplo n.º 1
0
        /// <summary>
        /// 문자열 삭제
        /// </summary>
        /// <param name="offset">커서위치</param>
        /// <param name="removeLen">길이</param>
        public void RemoveStringToTrans(int offset, int removeLen)
        {
            SetTransCursor(offset);
            int originCursor = origin.GetCursor();

            int tempOffset        = offset;
            int tempRemoveLen     = removeLen;
            List <TokenBase> list = new List <TokenBase>(trans.GetTokenList());

            foreach (var token in list)
            {
                int offsetInToken = 0;
                if (tempRemoveLen <= 0)
                {
                    break;
                }

                if (tempOffset >= token.ToString().Length)
                {
                    tempOffset -= token.ToString().Length;
                    continue;
                }
                else
                {
                    offsetInToken = tempOffset;
                    tempOffset   -= tempOffset;
                }
                if (tempOffset <= 0)
                {
                    if (tempRemoveLen >= token.ToString().Length)
                    {
                        tempRemoveLen -= token.ToString().Length;
                        trans.GetTokenList().Remove(token);
                    }
                    else
                    {
                        if (token is StringToken)
                        {
                            StringToken temp        = token as StringToken;
                            string      newTokenStr = token.ToString().Remove(offsetInToken, tempRemoveLen);
                            temp.setString(newTokenStr);
                        }
                        else
                        {
                            trans.GetTokenList().Remove(token);
                        }

                        tempRemoveLen -= tempRemoveLen;
                    }
                }
            }

            string newStr = trans.ToOriginalString();

            origin.SetString(newStr);

            List <TokenBase> transList = Convert(newStr);

            trans.GetTokenList().Clear();
            trans.GetTokenList().AddRange(transList);

            SetOriginCursor(originCursor);
        }