Я думаю, проблема в том, что вы предполагаете следующее:
TextBox myeventtxtbox = (TextBox)sender
делает копию вашего текстового поля, так что у вас как-то будет два текстовых поля в памяти.Это не так, он просто создает другую переменную ссылку на то же текстовое поле.sender
также является ссылкой на текстовое поле в форме, как и ваше textbox
Внутри оператора using вы, таким образом, имеете 3 различные переменные, все указывающие на одно и то же текстовое поле
Важно понимать, чтонезависимо от того, сколько разных переменных у вас есть, есть только одно текстовое поле.Если вы хотели бы провести аналогию, если бы текстовое поле было телевизором, установить другую переменную ссылку на него - все равно что купить другой пульт.Теперь у вас есть 3 пульта, и любой из них может выключить телевизор.Если бы пульт дистанционного управления был каким-то интеллектуальным устройством, которое показывало статус телевизора, то все 3 пульта сообщали бы, что телевизор выключен (утилизирован) после того, как один из них выключил его.Вы не можете увеличить громкость с помощью пульта 2 после выключения телевизора с пульта 1
Назад к c #
В конечном итоге вызов .Dispose()
для любой переменной, ссылающейся на текстовое поле, располагает само текстовое поле, а не ссылку на него.Идея оператора using
состоит в том, что он удаляет экземпляр объекта, который был установлен в круглых скобках.Вызов dispose для любых ссылок на переменные ваших имен на текстовое поле (mytextbox, myeventtextbox, sender - все ссылки на него) будет располагать текстовое поле так, что когда оператор using завершается и вызывается myeventtextbox.Dispose (), все остальные ссылки на переменныетеперь связано с расположенным текстовым полем
Нам не нужно микроуправлять переменными в c #, как это может быть в других языках.Ссылки на переменные очищаются, когда они выходят из области видимости (когда выполнение покидает блок фигурных скобок, в котором объявлена переменная).Если больше нет сохранившихся ссылок на объект в памяти, объект будет удален из памяти
. В этом случае sender
и myeventtextbox
перестанут существовать как ссылки на текстовое поле, когдаОбработчик событий завершает выполнение.Текстовое поле все еще сохранится, потому что mytextbox
все еще ссылается на него.Также к ней относится коллекция .Controls
формы.Если вы удалили элемент управления из .Controls
, а для mytextbox
было установлено значение = NULL, больше не будет сохраняющихся ссылок на текстовое поле, и он будет удален из памяти
.