2016-12-16 74 views
-3

該函數需要一個通用列表(Byte())作爲agrs傳遞,而我似乎無法獲得任何內容添加到此列表。我需要printdata(0)& (1)加入它。添加到List(of Byte())

Dim printdata(1) As String 


labelname = "WasNow" 

printdata(0) = "9,99" 
printdata(1) = "6.99" 

Dim args = New List(Of Byte()) 

args.Add(Convert.ToByte(printdata)) 


ApplicationContext.CurrentDevice.Printer.Print(labelname, 1, args) 
Frmscanprint.Show() 

這是工作的C#版本代碼,只添加一個項目。

private void printButton_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      this.printNumber++; 
      var args = new List<byte[]>() { Encoding.ASCII.GetBytes(string.Format(CultureInfo.InvariantCulture, "Test #{0}", this.printNumber)) }; 
      if (!ApplicationContext.AllDevicesSelected) 
      { 
       ApplicationContext.CurrentDevice.Printer.Print("SamplePrint", 1, args); 
      } 
      else 
      { 
       PrintSampleForEachDevice("SamplePrint", 1, args); 
      } 
     } 
    } 
+1

C#正在轉換一個字符串,而VB正試圖轉換一個字符串格式的數字,這是兩碼事。 Convert.ToByte不佔用數組。如果你想轉換字符串格式的實際數字,你必須正確設置文化,因爲9,99和6.99是兩種不同的格式(點對逗號)。也許嘗試在VB –

回答

1

您提供的C#示例獲取單個字符串並將其轉換爲字節數組,並將該數組分配給新創建的列表。

你的代碼沒有做同樣的事情。您正嘗試將字符串數組轉換爲字節數組。您嘗試使用的方法不允許使用此轉換類型。即使有可能,結果也將是一個包含整個內容的單字節數組,而不是一個字節數組的數組。

如果你想做與C#代碼一樣的事情,那麼你一定要從你的字符串數組中爲它做每一個itm。

如果你想做與C#代碼一樣的事情,你應該從你的字符串數組中爲每個單個項目做它。例如:

For Each item As String In printdata 
     args.Add(Encoding.ASCII.GetBytes(item)) 
    Next 
+0

中使用Encoding.ASCII.GetBytes感謝您的幫助,這已解決了我遇到的問題。 – user2186810