What about to disconnect the event handler before the change and reconnect afterward?
if (txtMyOtherText.Text == string.Empty)
{
MessageBox.Show("The other text field should not be empty.");
txtMyText.TextChanged -= textMyText_TextChanged;
txtMyText.Clear();
txtMyText.TextChanged += textMyText_TextChanged;
return;
}
In more complex cases it is better to have a try/finally and reenable the TextChanged event in the finally part