Question

J'écris une application C # (WinForm) avec un ListBox dont le contenu a été ajouté par l'utilisateur. Maintenant, je pourrais avoir un bouton ordinaire sous le ListBox pour supprimer des éléments, mais j'aimerais avoir le bouton juste à côté du contenu, se trouvant ainsi à l'intérieur du ListBox.

Comme ceci:

  • Contenu 1 | X
  • Contenu 2 | X
  • ...
  • Contenu 5 | X

Le problème est que je manque d’expérience dans .NET, je n’ai donc aucune idée de la façon dont cela serait possible avec tous les contrôles automatisés en cours. Je l'ai googlé, mais je n'ai obtenu aucun résultat significatif.

Tous les conseils, indices ou extraits permettant d’atteindre cet objectif sont les bienvenus! :)

Était-ce utile?

La solution 2

On peut donc créer un contrôle personnalisé, mais pour mon application, cela ne vaut pas vraiment la peine.

Ce que j'ai fait était de créer un DataGrid, le faisant ressembler à un ListView mais avec sa propre flare. Je l’ai fait parce que DataGrid a déjà un contrôle de bouton intégré à ses cellules.

Oui, je sais, genre de "bidouille", mais cela fonctionne comme un charme! :)

Des accessoires pour Shay Erlichmen qui m'a amené à penser à l'extérieur de ma ListBox. Regarde ce que j'ai fait là? ;)

Autres conseils

Au lieu de ListBox, vous pouvez utiliser ListView. ListView dispose de la possibilité d'ajouter des types de colonne personnalisés .

using System; using System.Collections.Generic; using System.Windows.Forms;

espace de noms WindowsFormsApplication11 {     classe partielle publique Form1: Form     {         List _items = new List ();

    public Form1()
    {
        InitializeComponent();

        _items.Add("One");
        _items.Add("Two");
        _items.Add("Three");

        listBox1.DataSource = _items;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // The Add button was clicked.
        _items.Add("New item " + DateTime.Now.Second);

        // Change the DataSource.
        listBox1.DataSource = null;
        listBox1.DataSource = _items;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        // The Remove button was clicked.
        int selectedIndex = listBox1.SelectedIndex;

        try
        {
            // Remove the item in the List.
            _items.RemoveAt(selectedIndex);
        }
        catch
        {
        }

        listBox1.DataSource = null;
        listBox1.DataSource = _items;
    }
}

}

private void button1_Click (expéditeur d'objet, EventArgs e) {     // Le bouton Ajouter a été cliqué.     // ...

button2.Enabled = true;

}

private void button2_Click (expéditeur d'objet, EventArgs e) {     // Le bouton Supprimer a été cliqué.     // ....

if (listBox1.Items.Count == 0)
{
    button2.Enabled = false;
}

}

En supposant que ce soit une application WinForms

Vous aurez besoin d’un contrôle personnalisé pour cela. Je vérifierais auprès de fournisseurs tels que http: // www. devexpress.com/Products/NET/Controls/WinForms/Editors/editors/ListBoxes.xml Peut-être que quelqu'un connaît un contrôle qui le fait spécifiquement.

Je ne sais pas pourquoi vous voudriez faire précisément cela? Je mettrais un bouton en bas qui supprime tous les éléments sélectionnés dans la liste. Cela est considéré comme le moyen habituel de le faire, sauf si vous souhaitez utiliser jQuery et placer un événement onClick dans la zone de liste qui envoie un appel pour supprimer l'élément s'il est stocké dans une base de données ou le supprimer de la liste de la page. .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top