2009-05-02 27 views
6

Sto scrivendo un'app C# (WinForm) con un ListBox con contenuto aggiunto dall'utente. Ora, potrei avere un pulsante normale sotto il ListBox per rimuovere gli elementi, ma vorrei avere il pulsante proprio accanto al contenuto, quindi all'interno del ListBox.C# - Pulsante Aggiungi all'interno di ListBox

Ti piace questa:

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

Il problema è che mi manca l'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 avuto risultati significativi.

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

+0

Win Form o ASP.NET? – Canavar

+0

E ho downvoted per aver effettivamente letto la domanda ....: sospiro: –

+0

@Canavar WinForms. @Deviant Downvoted? – Vectovox

risposta

3

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

Quello che ho fatto è stato creare un DataGrid, lo ha reso simile a un ListView ma con il suo bagliore.L'ho fatto perché DataGrid ha già un pulsante di controllo integrato 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 sede il mio ListBox. Vedi cosa ho fatto lì? ;)

+1

Sì, DataGrids funziona alla grande, anche se sono più complicati di un ListBox. Puoi farlo sembrare un tavolo in HTML o uno stile simile. –

0

Non so perché vorresti farlo in particolare? Vorrei mettere un pulsante in basso che cancella tutti gli elementi selezionati nella lista. Questo è considerato il solito modo di fare una cosa del genere a meno che tu non voglia usare jquery e mettere un evento onClick sulla listbox che invia una chiamata per cancellare l'oggetto se è memorizzato in un database o rimuovere l'elemento dalla lista sulla pagina .

+3

Beh, non sono abituale e tendo ad optare per l'opzione più avanzata. Il fatto è che un pulsante (o un pulsante icona) sul lato è più piacevole alla vista e riduce anche il numero di clic di un clic per rimozione. – Vectovox

2

utilizzando Sistema; utilizzando System.Collections.Generic; usando System.Windows.Forms;

namespace WindowsFormsApplication11 { public partial class Form1: Forma { 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 (object sender, EventArgs e) { // Il pulsante Aggiungi è stato cliccato. // ...

button2.Enabled = true; 

}

private void button2_Click (object sender, EventArgs e) { // Il pulsante Rimuovi è stato cliccato. // ....

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

}

+0

Dovresti leggere meglio la domanda;) –

+0

Sì, non penso che tu abbia letto il mio domanda molto approfondita :) – Vectovox

+0

@Alb La domanda dice che "essere così all'interno del ListBox". Ad ogni modo questa tecnica di listbox.datasource = list è molto più compatta che chiara, aggiungi. Quindi ancora vale la risposta. – prabhakaran

6

Invece di ListBox è possibile utilizzare ListView, ListView ha la ability to add custom column types.

+0

ListBox e ListView sono a miglia di distanza. Forse dovrebbe gettare un controllo dell'albero per una buona misura –

+1

ListView in modalità di rapporto senza le intestazioni con selezione riga completa e non le linee della griglia apparire e comportarsi come ListBox. È più facile aggiungere pulsanti (o qualsiasi altro controllo per quella materia) come sottovoce, meglio quindi provare a creare un controllo personalizzato. –

Problemi correlati