Что именно вы имеете в виду, когда говорите, что свойство возвращает нулевое значение? Это на самом деле ноль, или ваш MessageBox просто показывает пустой?
Я быстро продублировал ваш код, и он ведет себя точно так, как ожидалось - MessageBox показывает, но он пуст, потому что значением по умолчанию свойства Text элемента управления TextBox является пустая строка.
Кроме того, то, как вы подходите к этому, немного необычно.
Во-первых, строка:
UserControl1 Usc = new UserControl1();
Как правило, вам не нужно создавать такой пользовательский элемент управления. Вместо этого вы можете перетащить элемент управления из панели инструментов на поверхность дизайна вашей формы. Тогда это позаботится о создании и инициализации вашего контроля для вас.
Я думаю, что это на самом деле ваша проблема - когда вы включаете строку кода выше, вы создаете новый экземпляр пользовательского элемента управления, а пользовательский элемент управления, который вы перетащили в конструктор, никак не реализуется. .
Если вы перейдете в дизайнерское представление вашей формы и нажмете на пользовательский элемент управления, вы должны увидеть окно свойств где-нибудь здесь. Если вы этого не сделаете, выберите его в меню «Вид» или нажмите F4. В списке свойств должно быть одно «Имя» - это программное имя, сгенерированное для вашего пользовательского элемента управления. Вы можете изменить это здесь, если хотите, но когда вы ссылаетесь на этот элемент управления в остальной части формы, это то, что вы должны использовать.
Во-вторых, следующие две строки:
string Make = Usc.rtnTxtMake;
MessageBox.Show(Make)
Вы можете напрямую получить доступ к свойству rtnTxtMake. Если вам позже не понадобится доступ к строке Make в остальной части кода, то прямой доступ к свойству обычно будет считаться лучшим стилем.
MessageBox.Show(userControl.rtnTxtMake);