Deseleziono listview cancello valore

sabato 08 settembre 2012 - 16.20
Tag Elenco Tags  VB.NET  |  Visual Studio 2008  |  MySQL 5.5

Mau67 Profilo | Expert

Ciao forum, ho questo codice che mi inserisce in sequenza delle stringhe in base alla selezione della mia listview

Private Sub ListView5_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles ListView5.ItemCheck
TextBox1.Text = TextBox1.Text & "," & ListView5.Items(e.Index).Text
If TextBox1.Text.StartsWith(",") Then
TextBox1.Text = TextBox1.Text.Remove(0, 1)
End If
End Sub

se deseleziono la checkbox mi reinserisce la stessa stringa, io invece vorrei che se deseleziono mi cancellasse anche la stringa inserita relativa item
Come posso fare?
grazie
Mau67

DomA Profilo | Expert

Prova apportando queste modifiche:

Dim start As Integer = TextBox1.Text.IndexOf(CChar("," & Listview.item.Text))

TextBox1.Text = TextBox1.Text.Remove(start, TextBox1.Text.Length - start)


http://www.infomidia.it

Domenico

Mau67 Profilo | Expert

inserendo la stringa che mi hai scritto se la copio così comè mi sottoline come errore ("," & ListView.Item.Text))
Dim start As Integer = TextBox2.Text.IndexOf(CChar("," & ListView.Item.Text))

allora ho modificato così
Dim start As Integer = TextBox2.Text.IndexOf(CChar("," & ListView6.Items(e.Index).Text))
però mi restituisce questo errore nel debug
StartIndex non può essere minore di zero. Nome parametro: startIndex

il codice è inserito nell' Private Sub ListView6_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles ListView6.ItemCheck
grazie
Mau67

DomA Profilo | Expert

Ciao Mau67,
errore a parte (il codice l'ho scritto qui e non nell'editor) il secondo errore sembrerebbe indicare che non trova il testo: ("," & ListView6.Items(e.Index).Text) nella TextBox
Ora ti chiedo 2 cose
1) la txt si chiama TextBox1 o TextBox2?
2) se l'errore non dipende dal nome della txt (come presumo) prova a fare questa modifica:
Dim start As Integer = TextBox2.Text.IndexOf(CChar(ListView6.Items(e.Index).Text))


Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

Mau67 Profilo | Expert

l'errore lo da qua TextBox2.Text = TextBox2.Text.Remove(start, TextBox2.Text.Length - start)

StartIndex non può essere minore di zero. Nome parametro: startIndex

Scusa ma il codice va scritto nell'ItemCheck?
Mau67

DomA Profilo | Expert

Dim start As Integer = TextBox2.Text.IndexOf(CChar("," & ListView6.Items(e.Index).Text)) msgbox(start.ToString())

se la msgbox ti restituisce un valore <0 allora non trova il testo nella txt (il primo dovrebbe essere nella posizione 0). Per questo ti ho detto di modificare così:

Dim start As Integer = TextBox2.Text.IndexOf(CChar(ListView6.Items(e.Index).Text))

Prova e fammi sapere.
Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

Mau67 Profilo | Expert

quando seleziona la checkbox mi restituisce zero la successive mi restituisce il valore dell'item quello che voglio sapere il codice è scritto nella posizione giusta? te lo posto tutto


Private Sub ListView6_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles ListView6.ItemCheck
TextBox2.Text = TextBox2.Text & "," & ListView6.Items(e.Index).Text
If TextBox2.Text.StartsWith(",") Then
TextBox2.Text = TextBox2.Text.Remove(0, 1)
End If

Dim start As Integer = TextBox2.Text.IndexOf(CChar(ListView6.Items(e.Index).Text))
TextBox2.Text = TextBox2.Text.Remove(start, TextBox2.Text.Length - start)


End Sub
perchè quando lo mando in esecuzione così non mi complia la text box2

se invece elimino la prima parte del codice mi restituisce l'errore
Mau67

DomA Profilo | Expert

Per prima cosa bisogna verificare lo stato della checkbox poi si provvederà eventualmente all'eliminazione dell'item selezionato. prova così:



Private Sub ListView6_ItemCheck(ByVal sender As Object, _ ByVal e As System.Windows.Forms.ItemCheckEventArgs) _ Handles ListView6.ItemCheck If (e.CurrentValue = CheckState.Checked) Then TextBox2.Text = TextBox2.Text & "," & ListView6.Items(e.Index).Text ElseIf (e.CurrentValue = CheckState.Unchecked) Then Dim start As Integer = TextBox2.Text.IndexOf(CChar(ListView6.Items(e.Index).Text)) TextBox2.Text = TextBox2.Text.Remove(start, TextBox2.Text.Length - start) End If End Sub

eventualmente adegua la condizione FALSE col tuo codice e vedi cosa succede.


Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5