2015-01-15 43 views
1

我需要幫助在這裏,我沒有用完想法。 我需要在下面的代碼中做,以便能夠從項目中選擇一個文件(My.resources),而不是HardCoding這一行 FSR.Write(My.Resources._1_5, 0, My.Resources._1_5.Length) 我希望能夠通過選定的值,但我不能將My.Resources._1_5存儲爲一個Byte變量,它一直說不能將1維的Bytes數組存儲爲Byte。 _1_5是一個doc文件,我有一長串我希望能夠從中選擇的文件。發送具體的價值BinaryWriter

Dim TempFileName As String = "TMPDoc.doc" 
     Dim TempFolder As String = My.Computer.FileSystem.SpecialDirectories.Temp 
     Dim path As String = Application.StartupPath & "\" 
     TempFileName = path & TempFileName 

     Dim FS As New System.IO.FileStream(TempFileName, IO.FileMode.Create, FileAccess.Write) 
     Dim FSR As New System.IO.BinaryWriter(FS) 
     FSR.Write(My.Resources._1_5, 0, My.Resources._1_5.Length) 
     FSR.Close() 
     FS.Close() 

     appWord.Documents.Open(TempFileName) 

不知道我是否在解釋自己。

+0

它是一個Byte()變量,而不是Byte變量。 – 2015-01-15 17:10:51

回答

0

如果作爲最有可能的情況下,My.Resources._1_5財產公開爲一個字節數組,那麼你可以簡單地創建一個字節數組變量指向它,就像這樣:

Dim resource_1_5() As Byte = My.Resources._1_5 

或者你可以創建字節數組列表,並將其添加到列表中,這樣的:

Dim resources As New List(Of Byte())() 
resources.Add(My.Resources._1_5) 

不過,你可能真的想要做的字符串名稱,而不是通過一個具體的屬性剛剛訪問資源。如果是這樣的話,你可以通過ResourceManager的名字得到它,就像這樣:

Dim resource_1_5() As Byte = DirectCast(My.Resources.ResourceManager.GetObject("_1_5", My.Resources.Culture), Byte()) 

注意上面的樣本中,該GetObject方法返回一個Byte陣列,但它蒙上它爲Object。因此,您需要使用DirectCastCType將其重新轉換回Byte陣列。

+0

按預期工作:D非常感謝您的幫助!這麼晚纔回復很抱歉 – JavierM 2015-01-23 17:13:17