2010-11-22 5 views
0

L'idée est qu'il existe une zone de liste avec des éléments et que vous souhaitez modifier un élément au milieu de la liste. Vous sélectionnez cet élément et cliquez sur le bouton "Modifier" et un nouveau formulaire apparaît avec les données de l'article sélectionné précédemment à partir du premier formulaire prêt à être modifié dans une zone de texte. Après avoir modifié et cliqué sur OK, le second formulaire suppose de renvoyer cette chaîne modifiée au premier formulaire et d'insérer la chaîne modifiée dans le même emplacement au lieu de l'élément sélectionné à l'origine, de sorte qu'il semble avoir été modifié pour l'utilisateur.[VB.NET] Comment ajouter un élément de chaîne renvoyé par un autre formulaire à une zone de liste à un emplacement spécifique à la place d'un autre?

+0

Donc, fondamentalement, vous voulez modifier l'élément sélectionné dans la zone de liste en ouvrant un nouveau formulaire pour entrer la nouvelle valeur? –

+0

Ouais, exactement. – JohnnyCake

+0

Sauf que la chaîne est divisée() et placée dans des zones de texte séparées sur le second formulaire. Puis joignez() les valeurs modifiées et renvoyez-les comme une seule chaîne au premier formulaire et remplacez-le par l'élément d'origine de la zone de liste. – JohnnyCake

Répondre

1

Edit: Traduit le code pseudo au code VB.NET réel pour me rafraîchir la mémoire: D

string = InputBox("Enter text") 
// Do whatever you want with the string 
x = listBox.SelectedIndex 
listBox.Items(x) = string 

Vous pouvez Content à la place de Text aussi.

+0

Merci, mais cette méthode est seulement bonne pour une seule ligne de texte. Il doit s'appliquer à la chaîne amener split avec array() de array et placé dans des zones de texte séparées sur le second formulaire et vice versa à droite au lieu de l'élément d'origine. – JohnnyCake

+0

Ensuite, vous stockez la chaîne renvoyée par 'InputBox()' à variable, 'Split()' it, placez-les dans des emplacements corrects, modifiez-les si nécessaire et 'Join()' ou tout ce que vous voulez leur faire . –

+0

D'accord, je vois. Mais il n'y a pas de propriété Text pour SelectedItem pour moi. – JohnnyCake

0

Assurez-vous que le formulaire qui s'affiche est Modal. Voici un exemple simple de ce que vous pouvez faire. (Cela suppose que vos éléments listbox sont des chaînes et est un exemple pour l'édition jusqu'à trois éléments listbox seulement. Si la liste va être vous beaucoup plus grand voudra poursuivre une architecture différente.)

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    Dim intTextboxCounter As Integer = 0 
    For Each i As Integer In Form1.ListBox1.SelectedIndices 

     Select Case intTextboxCounter 
      Case 0 
       TextBox1.Text = Form1.ListBox1.Items(i) 
      Case 1 
       TextBox2.Text = Form1.ListBox1.Items(i) 
      Case 3 
       TextBox3.Text = Form1.ListBox1.Items(i) 
     End Select 

     intTextboxCounter += 1 

    Next 

End Sub 

Lorsque cette charge il va faire défiler les éléments de la liste sélectionnée et mettre sa valeur dans une zone de texte. Pour mettre à jour les valeurs ...

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    Dim intTextboxCounter As Integer = 0 
    For Each i As Integer In Form1.ListBox1.SelectedIndices 

     Select Case intTextboxCounter 
      Case 0 
       Form1.ListBox1.Items(i) = TextBox1.Text 
      Case 1 
       Form1.ListBox1.Items(i) = TextBox2.Text 
      Case 2 
       Form1.ListBox1.Items(i) = TextBox3.Text 
     End Select 

    Next 

End Sub 
Questions connexes