View Full Version : [VB.NET] Contenuto di combobox in txt
daxdaxdax
05-01-2010, 00:51
Ciao a tutti,
è fattibile salvare in un file di testo il contenuto di una combobox in modo da dargli "memoria" ad ogni apertura del form?
Io non ci riesco :muro:
yorkeiser
05-01-2010, 09:51
Ciao a tutti,
è fattibile salvare in un file di testo il contenuto di una combobox in modo da dargli "memoria" ad ogni apertura del form?
Io non ci riesco :muro:
Certamente.
Intanto, per contenuto intendi il valore selezionato o la lista intera? Ti posto qualche spezzone di simil-codice per il valore selezionato.
Vado un po' a memoria per vb6 (sono piuttosto arrugginito), ma dovrebbe essere portabile senza modifiche su .NET.
in fase di salvataggio:
Open "c:\percorso....\file.txt" For Output As #1
print #1, combobox.value
close #1
in fase di apertura del form, ad esempio sul FormLoad:
dim s as string
Open "c:\percorso....\file.txt" For input As #1
input #1,s
combobox.value = s
close #1
Ciao a tutti,
è fattibile salvare in un file di testo il contenuto di una combobox in modo da dargli "memoria" ad ogni apertura del form?
Io non ci riesco :muro:
Semplice.
Per importare da Txt a Combo :
ComboBox1.Items.Clear()
Using SR As New IO.StreamReader(percorso & nomeFile)
While SR.EndOfStream = False
ComboBox1.Items.Add(SR.ReadLine)
End While
End Using
Da Combo a Txt :
Using SW As New IO.StreamWriter(percorso & nomeFile)
For i As Integer = 0 To ComboBox1.Items.Count - 1
SW.WriteLine(ComboBox1.Items(i))
Next
End Using
;)
@ yorkeiser : quello è VB6. Meglio consigliare tecniche che utilizzano il framework in VB.NET. ;)
yorkeiser
05-01-2010, 10:48
[...]
@ yorkeiser : quello è VB6. Meglio consigliare tecniche che utilizzano il framework in VB.NET. ;)
L'avevo specificato, era giusto per dargli un'idea ;)
daxdaxdax
05-01-2010, 13:48
Grazie mille ragazzi ora ho capito. :p
radeon_snorky
29-03-2010, 10:48
se non è un problema... mi inserisco in questa discussione!
ho "quasi" lo stesso problema:
devo caricare in combobox dei dati così strutturati
1|2|3|4
10|20|30|40
a|b|c|d
però devo prendere solo i primi 2 di ogni riga e "addarli"
mentre gli altri dati devono poter essere usati per altre cose (dalla combo seleziono e alla pressione di un tasto "prendo" anche gli atri)
ecco il codice che non riesco a sistemare:
Private Sub carica()
Dim folder As String = Application.StartupPath
Dim fName As String = "\tecnici.csv"
Dim FFN As String
FFN = folder + fName
Dim linea As String
Dim Argomenti() As String
Using treader As New StreamReader(FFN, True)
Try
While treader.EndOfStream = False
Do
linea = treader.ReadLine()
Argomenti = Split(linea, "|")
Tnome = Argomenti(1)
Tcogn = Argomenti(2)
TcodF = Argomenti(3)
Ttel = Argomenti(4)
Temail = Argomenti(5)
Tprof = Argomenti(6)
Tprov = Argomenti(7)
Tcod = Argomenti(8)
ComboBox1.Items.Add(Tnome & " " & Tcogn)
MsgBox(Tnome)
Loop
End While
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Using
End Sub
mi da errore nel limite della matrice e non mi carica un beneamato
dove sbaglio?
EDIT:
ho fatto un nuovo progetto e adesso funziona... scusate!
rimane però una piccola domanda, come recupero gli altri dati all'occorrenza? riapro uno streamreader posizionandomi sulla riga impostata nella combobox o c'è un modo più semplice?
grazie!
=KaTaKliSm4=
30-03-2010, 00:24
EDIT:
ho fatto un nuovo progetto e adesso funziona... scusate!
rimane però una piccola domanda, come recupero gli altri dati all'occorrenza? riapro uno streamreader posizionandomi sulla riga impostata nella combobox o c'è un modo più semplice?
grazie!
Beh da quello che vedo quelle sono informazioni su un "qualcosa" penso una persona.
La programmazione OOP viene chiamata cosi proprio perchè da la possibilità di creare e manipolare oggetti.
Persona è un'oggetto!
public class Persona
{
private string _nome;
public string Nome
{
get { return _nome; }
set { _nome = value; }
}
private string _Cognome;
...
...
...
}
Sfrutta anche le generics collection come per esempio List<>,
Crea una Lista : List<Persona> Lista = new List<Persona>();
con un ciclo passa tutte le righe del file salvando ogni valore (preso con la split) in un'oggetto Persona istanziato:
Esempio:
string [] parametri;
while ((line = reader.ReadLine()) != null)
{
parametri = line.split(new char[],'|');
Persona pers = new Persona();
Pers.Nome = parametri[0];
Pers.Cognome = parametri[1];
...
...
...
Lista.add (Pers)
}
Cosi facendo hai una lista di oggetti persona da poter interrogare in qualsiasi modo e quando vuoi ;)
P.s ho scritto il codice in c# non penso sia un problema....sono funzioni basilari :)
Ciao!
rimane però una piccola domanda, come recupero gli altri dati all'occorrenza? riapro uno streamreader posizionandomi sulla riga impostata nella combobox o c'è un modo più semplice?
Non riaprirei affatto un nuovo StreamReader.
Se vuoi gestire oggetti o strutture in una ComboBox dai un'occhiata a questo post :
http://www.hwupgrade.it/forum/showpost.php?p=25047401&postcount=9
Ma forse, più che una ComboBox, vedrei meglio un DataGridView, con la possibilità di nascondere le colonne che non ti interessano... ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.