Domanda

Sto scrivendo un'app C # (WinForm) con un ListBox con contenuti aggiunti dall'utente. Ora, potrei avere un pulsante normale sotto il ListBox per rimuovere gli elementi, ma vorrei avere il pulsante proprio accanto al contenuto, trovandosi così all'interno del ListBox.

In questo modo:

  • Contenuto 1 | X
  • Contenuto 2 | X
  • ...
  • Contenuto 5 | X

Il problema è che non ho esperienza in .NET, quindi non ho idea di come ciò sarebbe possibile con tutti i controlli automatici in corso. L'ho cercato su Google, ma non ho trovato risultati significativi.

Eventuali suggerimenti, indizi o frammenti per raggiungere questo obiettivo sono i benvenuti! :)

È stato utile?

Soluzione 2

Quindi si potrebbe fare un controllo personalizzato ma per la mia app non ne vale davvero la pena.

Quello che ho fatto è stato creare un DataGrid, facendolo assomigliare a un ListView ma con il suo flare. L'ho fatto perché DataGrid ha già un controllo pulsanti incorporato nelle sue celle.

Sì, lo so, un po 'fugly "hack", ma funziona come un fascino! :)

Puntelli a Shay Erlichmen che mi ha portato a pensare fuori dal mio ListBox. Vedi cosa ho fatto lì? ;)

Altri suggerimenti

Invece di ListBox puoi usare ListView, ListView ha la la possibilità di aggiungere tipi di colonna personalizzati .

utilizzando il sistema; utilizzando System.Collections.Generic; utilizzando System.Windows.Forms;

spazio dei nomi WindowsFormsApplication11 {     classe parziale pubblica Form1: Form     {         Elenco _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 (mittente oggetto, EventArgs e) {     // È stato fatto clic sul pulsante Aggiungi.     // ...

button2.Enabled = true;

}

private void button2_Click (mittente oggetto, EventArgs e) {     // È stato fatto clic sul pulsante Rimuovi.     // ....

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

}

Supponendo che sia un'app WinForms

Avresti bisogno di un controllo personalizzato per quello. Verificherei venditori come http: // www. devexpress.com/Products/NET/Controls/WinForms/Editors/editors/ListBoxes.xml forse qualcuno conosce un controllo che lo fa specificamente.

Non so perché vorresti farlo in modo specifico? Vorrei mettere un pulsante in basso che elimina tutti gli elementi selezionati nella casella di riepilogo. Questo è considerato il solito modo di fare una cosa del genere a meno che non si desideri utilizzare jquery e inserire un evento onClick nella casella di riepilogo che invia una chiamata per eliminare l'elemento se è archiviato in un database o rimuovere l'elemento dall'elenco nella pagina .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top