C# List in una listbox

sabato 05 aprile 2008 - 15.34

lucaddr Profilo | Newbie

Ciao ragazzi,

premetto che non sono esperto in c#,infatti ho una classe di questo tipo, che utilizza una classe generica List.

public List<BarcodeDataResponse> GetBarcodes()
{
symbolBaseComm.Open();

List<BarcodeDataResponse> barcodes = new List<BarcodeDataResponse>();

byte[] bytes = { 0x07, 0x02, 0x00 };
bool fReceived = false;
PortData receivedData = null;

for (int i = 0; i < 5 && !fReceived; i++)
{
symbolBaseComm.Send(new PortData(bytes, bytes.Length));

receivedData = symbolBaseComm.Receive();
if (receivedData.NumBytes >= 10 && receivedData.Bytes[0] == 6)
{
fReceived = true;
}
else
{
Thread.Sleep(200);
}
}

symbolBaseComm.Close();

if (receivedData != null && receivedData.NumBytes > 9 && receivedData.Bytes[0] == 6)
{
int byteIndex = 10;

while (byteIndex < receivedData.NumBytes - 10)
{
int packetLength = (int)receivedData.Bytes[byteIndex];
if (packetLength > 0)
{
int packetType = (int)receivedData.Bytes[byteIndex + 1];
if (packetType > 0)
{
BarcodeDataResponse barcodeData = new BarcodeDataResponse();

barcodeData.Timestamp = ExtractPackedTimestamp(
receivedData.Bytes[byteIndex + packetLength - 3],
receivedData.Bytes[byteIndex + packetLength - 2],
receivedData.Bytes[byteIndex + packetLength - 1],
receivedData.Bytes[byteIndex + packetLength - 0]);

barcodeData.Code = Encoding.ASCII.GetString(receivedData.Bytes, byteIndex + 2, packetLength - 5);

barcodeData.CodeType = symbolBaseComm.CodeTypes[(byte)packetType];

barcodes.Add(barcodeData);
}

byteIndex += packetLength + 1;
}
else
{
++byteIndex;
}
}
}
else
{
return null;
}

return barcodes;
}

Vorrei inserire il return barcodes in una listbox, per esempio. Ma non capisco come estrapolare il dato. L'unica cosa che riesco è utilizzare il Count e contare quante righe ci sono.

Sicuramente qualcuno di Voi riuscirà a rispondermi.

Grazie mille,
Luca.

aiedail92 Profilo | Expert

Ciao

Prova a procedere in questo modo:

//Ottieni il risultato della tua funzione List<BarcodeDataResponse> result = GetBarcodes(); ////Eventualmente pulisci i precedenti valori della listBox //tuaListBox.Items.Clear(); //Leggendo la nota in fondo scegli quale //Dei due metodi usare //Primo metodo: { //Uso AddRange (vedi nota *) tuaListBox.Items.AddRange(result.ToArray()); } //Secondo metodo: { //Uso un ciclo foreach... foreach (BarcodeDataResponse barCode in result) { //Scegli la proprietà che serve a descrivere l'elemento tuaListBox.Items.Add(barCode.ProprietàDaUsarePerVisualizzareIlValore); } }

*Nota su AddRange (da MSDN): "[...] In genere a questo metodo viene passata una matrice di oggetti String; tuttavia è anche possibile passare una matrice di qualsiasi tipo di oggetti. Quando un oggetto viene aggiunto all'insieme, ListBox innanzitutto verifica che la proprietà DisplayMember della classe ListControl abbia il nome di un membro dell'oggetto specificato come riferimento quando si ottiene il testo dell'elemento. Se non è stato specificato alcun membro per la proprietà DisplayMember, ListBox chiama il metodo ToString dell'oggetto per ottenere il testo da visualizzare nell'elenco. [...]"

Luca

lucaddr Profilo | Newbie

Perfetto... funziona. A barCode devo scrivere a mano la proprietà da visualizzare, credevo che VS mi dasse automaticamente le varie opzioni quando scrivevo barCode. (proprietà).

Perfetto, grazie mille. Non male questo List.

gae58 Profilo | Senior Member

ciao,

dovrei realizzare una pagina web in cui inserire dei nomi in alcuni textBox e poi stampare i codici a barre.

Mi puoi dire se è fattibile e darmi un avvio?

grazie

Gaetano

Panshin Profilo | Newbie

hi to all,
This c# code can get 215 barcode records from the OPN 2001 device only. Can you help me? May be You have memory map of the opn 2001 device? A main problem for me: hoe can i get barcode list > 215 records?
Regards
Igor
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5