C'est bien toi qui voulais mettre deux ListView en correspondance ?
J'aurais bien aimé savoir si ma réponse t'avait aidé finalement.
Poser des question c'est bien, mais un petit mot à celui qui t'a répondu c'est bien aussi :wink:
donc la solution du comment j'ai fait c'est comment recupere t-on l'item selectionner en integer pour utiliser la commande Remove de l'objet listview
si tu veux je te donne le code en vb.net et tu vois ce que tu peux faire avec !
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListView1.Items.Add("Item1")
ListView1.Items.Add("Item2")
ListView1.Items.Add("Item3")
ListView1.Items.Add("Item4")
End Sub
Private Sub SupprToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SupprToolStripMenuItem.Click
For i As Integer = 0 To ListView1.Items.Count - 1
If ListView1.Items.Item(i).Selected = True Then
ListView1.Items.Item(i).Remove()
Return
End If
Next
End Sub
Merci bien...
Mais est ce que je ne pourrais pas tout de même utiliser la touche suppr?
Quel est son code?
Oui bien sur a condition de mettre la proprieté de ta form KeyPreview = True
puis mettre le code dans l'evenement KeyDown
Private Sub DelItemListView()
ListView1.Focus()
Try
For i As Integer = 0 To ListView1.Items.Count - 1
If ListView1.Items.Item(i).Selected = True Then
ListView1.Items.Item(i).Remove()
Return
End If
Next
Catch ex As Exception
Exit Try
End Try
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyValue = Keys.Delete Then
DelItemListView()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListView1.Items.Add("Item1")
ListView1.Items.Add("Item2")
ListView1.Items.Add("Item3")
ListView1.Items.Add("Item4")
End Sub
Private Sub SupprToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SupprToolStripMenuItem.Click
DelItemListView()
End Sub
Il me semble que je n'est pas parler de ça "SelectedIndex"
regarde bien le code que j'ai donné
tu dois trouvé la correspondance en C#
Quote:
Private Sub DelItemListView()
ListView1.Focus()
Try
For i As Integer = 0 To ListView1.Items.Count - 1
If ListView1.Items.Item(i).Selected = True Then
ListView1.Items.Item(i).Remove()
Return
End If
Next
Catch ex As Exception
Exit Try
End Try
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyValue = Keys.Delete Then
DelItemListView()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListView1.Items.Add("Item1")
ListView1.Items.Add("Item2")
ListView1.Items.Add("Item3")
ListView1.Items.Add("Item4")
End Sub
Private Sub SupprToolStripMenuItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SupprToolStripMenuItem.Click
DelItemListView()
End Sub
Vu que je connais pas le C# je peux pas t'aider plus :(
Impossible de convertir implicitement le type 'int' en 'bool'
La propriété ou l'indexeur 'System.Windows.Forms.KeyEventArgs.KeyValue' ne peut pas être assigné -- il est en lecture seule
Il se pourrait que tu ais écrit par inadvertance un = là où tu aurais du écrire un == (dans ton if)
Quand tu rencontres un problème de ce genre, c'est une bonne idée d'inclure un bout du code en question dans le post, ça permet de t'aider mieux et plus facilement
ce que je veux dire c'est que tu replace Keys.Delete par 46 et sa devrais etre bon
Si je puis me permettre, même si ça marche, ce n'est pas très bon.
Keys.Delete est un type énuméré et doit être testé comme tel comme tu l'as d'ailleurs très bien fait toi même dans l'exemple VB que tu as donné. Si tu remplaces par une valeur numérique tu deviens dépendant de l'implémentation et si tu compiles ton code sur une autre implémentation il risque de ne plus marcher si Keys.Delete n'y vaut pas 46.
Je pense, comme je l'ai dit dans un autre post, que l'erreur de poppins est une simple faute de frappe ou étourderie.
A voir le message d'erreur émis par le compilateur, elle avait probablement écrit
if(e.KeyValue = Keys.Delete)
alors qu'elle devait écrire
if(e.KeyValue == Keys.Delete)
en C# le = sert toujours à une affectation. Pour tester une valeur c'est ==
Je voulais juste préciser que e.KeyValue ==Keys.delete ne marche pas...
Avec 46, ça marche...
Oui, mais non. Ce n'est pas (mais alors pas du tout) une bonne méthode de tester une valeur numérique sur un type énuméré. Je te renvoie à mon autre post.
Quand j'ai cité ton code c'était pour mettre en evidence que tu devais utiliser == et non =. Je me suis focalisé là dessus sans faire attention au reste. Les codes de touche ne se testent pas avec KeyValue mais avec KeyCode
Ok ....
Je vais devois formater mon PC car le Spy installer j'arrive pas a m'en debarasser avec tout les anti-Spy connu (free) de toute facon mon PC en avais besoin ;) (du formatage)
Salut poppins,
C'est bien toi qui voulais mettre deux ListView en correspondance ?
J'aurais bien aimé savoir si ma réponse t'avait aidé finalement.
Poser des question c'est bien, mais un petit mot à celui qui t'a répondu c'est bien aussi :wink:
Bonjour
j'ai la reponse mais en vb.net :)
donc la solution du comment j'ai fait c'est comment recupere t-on l'item selectionner en integer pour utiliser la commande Remove de l'objet listview
si tu veux je te donne le code en vb.net et tu vois ce que tu peux faire avec !
a bientot
Merci TroXsA
Tu as très bien compris le problème
J'aimerais bien que tu m'envoie le code en vb.net
Merci d'avance,
Poppins
Pour supprimer un item de rang n:
et pour supprimer l'item sélectionné
[/]Moi avec vb 2003 javais comme ça ! :)
c'est pas mieux mais sa fonctionnais bien !
Cordialement[/code]
Merci bien...
Mais est ce que je ne pourrais pas tout de même utiliser la touche suppr?
Quel est son code?
Raté, le sujet est une ListView :) et pas une ListBox :)
[/]Oui bien sur a condition de mettre la proprieté de ta form KeyPreview = True
puis mettre le code dans l'evenement KeyDown
Argh je deviens vieux. Depuis le début, je me suis obstiné à penser listbox :oops:
cela dit le principe est le même et les codes semblables (ouf)
Merci beaucoup...
;) ben c'est pas grave
le principe c'est d'ouvrir le debat ouvert et de trouver des solutions ensemble c'est le but d'un forum :)
Cordialement
Désolé, mais l'expression e.KeyValue = Keys.Delete me génère une erreur.....
Salut
Pourrais tu me dire quelle est cette erreur ?
car cher moi sa fonctionne tres bien ! en vb.net et non en C#
@+
Il me génère les erreurs suivantes :
Impossible de convertir implicitement le type 'int' en 'bool'
La propriété ou l'indexeur 'System.Windows.Forms.KeyEventArgs.KeyValue' ne peut pas être assigné -- il est en lecture seule
Impossible de convertir implicitement le type 'System.Windows.Forms.Keys' en 'int'
Il y a une evidence pour moi qu'en Vb.net et C# c'est pas la meme chose :)
Il faut alors voir ce qu'il te retourne en valeur e.KeyValue et recuperer cette valeur normalement il devrais te retourné "46" et faire
e.KeyValue = 46 alors (then)
ce que je veux dire c'est que tu replace Keys.Delete par 46 et sa devrais etre bon ! :)
ça marche merci !!!!
mais il n'accepte pas l'instruction
listView1.Items.Remove(listView1.Items[View1.SelectedIndex]);
Il dit que 'System.Windows.Forms.ListView' ne contient pas de définition pour 'SelectedIndex'
[/].....
re bonjour ! :)
Il me semble que je n'est pas parler de ça "SelectedIndex"
regarde bien le code que j'ai donné
tu dois trouvé la correspondance en C#
Vu que je connais pas le C# je peux pas t'aider plus :(
A bientot
Bonjour,
Il se pourrait que tu ais écrit par inadvertance un = là où tu aurais du écrire un == (dans ton if)
Quand tu rencontres un problème de ce genre, c'est une bonne idée d'inclure un bout du code en question dans le post, ça permet de t'aider mieux et plus facilement
Bonjour,
Si je puis me permettre, même si ça marche, ce n'est pas très bon.
Keys.Delete est un type énuméré et doit être testé comme tel comme tu l'as d'ailleurs très bien fait toi même dans l'exemple VB que tu as donné. Si tu remplaces par une valeur numérique tu deviens dépendant de l'implémentation et si tu compiles ton code sur une autre implémentation il risque de ne plus marcher si Keys.Delete n'y vaut pas 46.
Je pense, comme je l'ai dit dans un autre post, que l'erreur de poppins est une simple faute de frappe ou étourderie.
A voir le message d'erreur émis par le compilateur, elle avait probablement écrit
alors qu'elle devait écrire
en C# le = sert toujours à une affectation. Pour tester une valeur c'est ==
Merci :) vu que je connais pas le C# j'ai simplement trouver une solution de contournement :) ...
A bientot
Une solution de contournement, je l'avais bien compris comme ça
Tu sembles bien connaître VB, alors apprendre C# ne te posera aucune difficulté si le coeur t'en dit :)
A bientôt. C'est sympa de t'avoir comme nouveau participant régulier sur ce forum :)
:) Simpa merci
Puis j'evite d'aprendre le C# par peur de melanger les syntaxes quand je programme :wink:
A bientot
Merci pour vos efforts...
Je voulais juste préciser que e.KeyValue ==Keys.delete ne marche pas...
Avec 46, ça marche...
en tout cas, vous m'avez été d'un grand soutien, surtout que je suis nouveau avec les contrôles de c#....
Oui, mais non. Ce n'est pas (mais alors pas du tout) une bonne méthode de tester une valeur numérique sur un type énuméré. Je te renvoie à mon autre post.
Quand j'ai cité ton code c'était pour mettre en evidence que tu devais utiliser == et non =. Je me suis focalisé là dessus sans faire attention au reste. Les codes de touche ne se testent pas avec KeyValue mais avec KeyCode
Le code correct est donc
Fonctionnement garanti :)
Oui, c'est correct comme ça...
Merci :lol:
alors la c'est complement nul
Site avec Spyware plus prono a ne pas cliquer dessus
Je viens de supprimer le message dont tu parles.
Il y a en de temps en temps. Mais on surveille ;)
Ok ....
Je vais devois formater mon PC car le Spy installer j'arrive pas a m'en debarasser avec tout les anti-Spy connu (free) de toute facon mon PC en avais besoin ;) (du formatage)
@+