Строка представляет собой строку, независимо от вас понижающее приведение его в объект или нет. Вы можете проверить это с помощью typeof temp is String
(typeof-keyword).
Я не понимаю, где ваша фактическая проблема.
Вы не можете установить свойство Text Label с заданным объектом, потому что Label.Text должен быть типа String. Но вы могли бы использовать объекта ToString, чтобы получить строку ПРЕДСТАВЛЕНИЯ вашего объекта или, если вы знаете (проверить с TYPEOF), что ваш объект имеет тип String, вы можете просто бросить его обратно:
Label1.Text = DirectCast(temp , String)
EDIT: По к вашим обновлениям, я сильно recommend установить Option Strict! Почему вы не просто присваиваете значение свойству Text?
Label1.Text = "Test"
Вы приближаетесь к методу ByRef и не очень читаемы. Если вам действительно нужна такая вещь, и вы хотите установить только Text свойства различных элементов управления, попробуйте следующее:
Public Sub setControlText(ByVal ctrl As Control, ByVal text String)
ctrl.Text = text
End Sub
или если ваш «текст» должен иметь тип объекта:
Public Sub setControlText(ByVal ctrl As Control, ByVal value As Object)
If Not value Is Nothing Then ctrl.Text = value.ToString
End Sub
или вы можете использовать отражение, чтобы установить все свойства, но это не должно быть стандартным
Public Sub setProperty(ByVal obj As Object, ByVal propName As String, ByVal newValue As Object)
Dim prop As Reflection.PropertyInfo = obj.GetType().GetProperty(propName)
If Not prop Is Nothing AndAlso prop.CanWrite Then
prop.SetValue(obj, newValue, Nothing)
End If
End Sub
вы можете вызвать эту функцию следующим образом (считаю, что имя-свойства случая сено sitive):
setProperty(Label1, "Text", "Hello World!")
Из внешнего вида вы пытаетесь создать ссылку на текстовое свойство в ярлыке, чтобы вы могли установить его с помощью этого метода 'setIt' –
да, но мне нужно, чтобы он был открыт для любого свойства не только текста. – Phil
Проверьте мое редактирование для новой функции, которую я адаптировал из некоторого кода отражения. –