Я уже проверил подобные вопросы, но не смог найти никакого рабочего ответа, мой собственный код
Я хотел написать код для редактирования текстовой маски, но при отладке кода он вызывал несколькокаждый раз, когда я пишу текст внутри текстового поля
Это корректно работает в первый раз, но это как в цикле for и многократно выполняет метод.
Помогите мне!
public class Resp
{
public string Text { get; set; }
public int Caret { get; set; }
}
public static Resp Masker(this string text, string mask, int caretIndex, bool ShowPlaceHolder)
{
string result;
if (text.Length <= mask.Length || caretIndex > 0)
{
var workingArray = new List<int>();
var maskArray = mask.ToArray();
for (var i = 0; i < mask.Length; i++)
if (maskArray[i] == '_')
workingArray.Add(i);
var textArray = text.ToArray();
var resultArray = new List<char>();
var indicator = 0;
for (var i = 0; i < maskArray.Length; i++)
{
var current = maskArray[i];
var writableIndex = workingArray.IndexOf(i);
if (writableIndex == -1 || indicator == text.Length)
{
resultArray.Add(current);
continue;
}
resultArray.Add(textArray[indicator]);
indicator++;
}
result = string.Concat(resultArray);
}
else
{
result = text;
}
return new Resp
{
Text = result,
Caret = caretIndex
};
}
private void TxtMobile_OnTextChanged(object sender, TextChangedEventArgs e)
{
if (!(sender is TextBox textBox)) return;
var process = textBox.Text.Masker("09__ ___ ____", textBox.CaretIndex, true);
textBox.Text = process.Text;
textBox.CaretIndex = process.Caret;
}