2012-01-24 12 views
10

Non riesco a capire il controllo corretto da utilizzare per un elenco di lavori predefiniti nel modulo incluso. Attualmente ho un controllo ListBox nel gruppo Nome lavoro predefinito che elenca tutti i lavori predefiniti per un negozio di servizi marittimi (ad esempio cambio dell'olio, messa a punto, ecc ...). Quindi, in base all'elemento (ovvero il nome del lavoro) selezionato nel mio ListBox, ho bisogno di visualizzare gli articoli corrispondenti a quel lavoro. Ad esempio, se il cambio dell'olio è il lavoro selezionato, devo mostrare 4 litri di olio, 1 filtro dell'olio, manodopera, ecc ... e così via.Come nascondere ListView ColumnHeader?

Attualmente, quando carico i dati del modulo, ho un DAO che recupera tutti i miei lavori dal database utilizzando LINQ su SQL. Quindi faccio scorrere i risultati e inserisco i nomi dei lavori in ListBox. Il problema che sto avendo è che non c'è nessun tag per gli oggetti ListBox come c'è per gli oggetti ListView. Quindi, ogni volta che l'utente seleziona un altro oggetto nel ListBox, devo eseguire un'altra query LINQ per ottenere di nuovo il lavoro dal database in modo che possa visualizzare i suoi elementi corrispondenti. Se potessi usare un ListView e nascondere l'intestazione della colonna, potrei impostare l'intero lavoro sul tag in modo che ogni volta che l'utente seleziona un nuovo elemento avessi accesso ai dettagli senza dover effettuare un'altra chiamata al database. C'è un modo in cui posso nascondere l'intestazione della colonna di un ListView senza nascondere l'intera colonna?

Windows Form

+0

userei una griglia, se devono essere visualizzati i dati tabulari, credo in un GridView è possibile nascondere la HeaderRow. –

+0

La modalità 'View' è impostata su' Dettagli'. Perché non impostarlo su 'List'? – InBetween

risposta

43

È possibile impostare il HeaderStyle membro del ListView-None.

listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;

7

Checkout ListView HeaderStyle proprietà. Ha le seguenti opzioni:

  1. Nessuno
  2. Nonclickable
  3. cliccabili

Da MSDN:

La proprietà HeaderStyle consente di specificare se le intestazioni delle colonne sono visibili o , se sono visibili, se funzioneranno come pulsanti cliccabili. Se la proprietà è impostata su HeaderStyle ColumnHeaderStyle.None, le intestazioni delle colonne non vengono visualizzate, anche se le voci e sottovoci del controllo ListView sono ancora disposte in colonne

1

è anche possibile creare semplice oggetto come ListItem che ha due poperties: Text (stringa) e Tag (oggetto). Quindi implementare ListItem.ToString() e utilizzarli anche nello ListBox.

È possibile anche verificare Better ListView Express componente, che è gratuito e permette di visualizzare gli elementi in dettagli vista, senza colonne. Il vantaggio su ListBox e ListView è un aspetto nativo e molte funzionalità extra.

0

Ho scoperto che se si sa per certo che non si visualizzano le intestazioni, potrebbe essere meglio impostare la proprietà HeaderStyle su Nessuno, come menzionato in precedenza da Rajesh.

Quando si imposta nel .CS quando si carica inizialmente lo schermo, le intestazioni vengono visualizzate fino a quando lo schermo non è completamente visualizzato.

1

modo più semplice è utilizzare l'evento ColumnWidthChanging

private void listViewExtended1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e) 
     { 
      if (e.ColumnIndex == 0) 
      { 
       e.Cancel = true; 
       e.NewWidth = listViewExtended1.Columns[e.ColumnIndex].Width; 
      } 
     } 
Problemi correlati