2014-11-18 6 views
1

일반 Sub을 작성했으며 입력 값을 String으로 변환하여 TextBox (이 경우에는 파워 포인트 텍스트 상자)으로 가져와야합니다. 너무 CStr을 사용하여 일반 매개 변수를 String으로 변환하는 방법은 무엇입니까?

The value of t cannot be converted into string

내가 시도한 CStr (당신이 코드에서 볼 수 있듯이)하지만이 나던 도움말 :

Sub InsertValueIntoTextbox(Of t)(ByVal sldNr As Integer, ByVal tbName As String, ByVal valueToInsert As T) 
    _pptSld = _pptPre.Slides(sldNr) 
    _pptSld.Shapes(tbName).TextFrame.TextRange.Text = CStr(valueToInsert) 
End Sub 

내 문제가 나에게이 컴파일러 오류를 제공한다는 것입니다 :처럼이 보인다. 아무도 내가이 일을하도록 도울 수 없었고 왜 TCStr으로 변환 할 수 없는지 말할 수 있습니까?

+0

'valueToInsert'를 항상 String으로 변환하려면 왜 generic 메소드를 사용해야합니까? 왜 매개 변수를 String으로 만듭니 까? –

답변

1

마다 Object수 있습니다.ToString입니다. 그렇다면 왜 사용하지 않습니까?

Dim text = If(valueToInsert Is Nothing, "", valueToInsert.ToString()) 
_pptSld.Shapes(tbName).TextFrame.TextRange.Text = text 

제네릭에는 CStr을 사용할 수 없습니다. 매개 변수의 유형은 String으로 변환 할 수 있어야하며, 이는 귀하의 경우에 보장되지 않습니다. 그래서 컴파일러 오류가 발생합니다. 나는 더 이상 오래된 VB 함수를 사용하지 않을 것이다. 항상 .NET 대안이 있습니다.

+0

아,이 작동합니다. 왜 ToString이 작동하지만 CStr()이 나던 지 말해 줄 수 있습니까? 나는 단지 이해하고 싶다. 귀하의 답변 주셔서 감사합니다! – ruedi

+1

@ruedi : 이미 내 대답을 편집했습니다. 'CStr'은 문자열로 변환 할 수있는 매개 변수를 제외하므로 모든 객체가 허용되는 것은 아닙니다. 부울, 날짜, 숫자, 아무것도 또는 문자열과 같은 것만 –

관련 문제