Само событие не делает различий между текстом, введенным с помощью ввода пользователя, и текстом, измененным с помощью кода. Вы должны будете установить флаг самостоятельно, который говорит вашему коду игнорировать событие. Например,
private bool ignoreTextChanged;
private void textNazwa_TextCanged(object sender, EventArgs e)
{
if (ignoreTextChanged) return;
}
Затем используйте это для установки текста вместо простого вызова Text = "...";
:
private void SetTextboxText(string text)
{
ignoreTextChanged = true;
textNazwa.Text = text;
ignoreTextChanged = false;
}
Судя по вашему комментарию к другому ответу, похоже, у вас довольно много текстовых полей. В этом случае вы можете изменить функцию следующим образом:
private void SetTextBoxText(TextBox box, string text)
{
ignoreTextChanged = true;
box.Text = text;
ignoreTextChanged = false;
}
Тогда назовите это так:
SetTextBoxText(textNazwa, "foo");
Это выполнит то же самое, что и просто textNazwa.Text = "foo"
, но установит флаг, позволяющий вашему обработчику событий игнорировать событие.