/// <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); }