Listview ....

martedì 31 agosto 2010 - 10.47
Tag Elenco Tags  C#

fede2612 Profilo | Newbie

Salve a tutti
Avrei una domanda da farvi:
Ho una listview che attraverso i tasti PgUp e Pgdn cambio i dati della riga selezionata, i dati vengono trasferiti in due textbox che mi visualizzano i dati selezionati, ma la riga evidenziata nella listview mi salta dall'inizio alla fine della lista e non corrisponde alla riga selezionata attraverso i tasti.
Come posso evidenziare anche nella listview i dati selezionati da tastiera?
quello che segue è un pezzo della routine pgdn:
if (e.KeyCode == Keys.PageDown)
{
if (avanti == ListaRelatori.Items.Count - 1)
{

}
else
{
avanti = avanti + 1;
indietro = avanti;
CognomeNome.Text = ListaRelatori.Items[avanti].SubItems[0].Text;
Tempo.Text = ListaRelatori.Items[avanti].SubItems[1].Text;
System.TimeSpan i = new System.TimeSpan(0, 0, 0, 0);
string Tempo1 = Tempo.Text;
DateTime OraInizio1 = Convert.ToDateTime(Tempo1);
ore = System.Convert.ToInt32(OraInizio1.Hour);
min = System.Convert.ToInt32(OraInizio1.Minute);
seconds = 00;
SetTextBox.Text = ore.ToString("00") + ":" + min.ToString("00") + ":" + (seconds % 60).ToString("00");
string val = ore.ToString("00") + ":" + min.ToString("00") + ":" + (seconds % 60).ToString("00");
StartTime = ConvertSetTime(this.SetTextBox.Text);
otherForm.StartTime = StartTime;
otherForm.CognomeNome.Text = CognomeNome.Text;
otherForm.Tempo.Text = Tempo.Text;
otherForm.CognomeNome.Show();
otherForm.Tempo.Show();
otherForm.Conta.Text = val;
otherForm.timer1.Stop();
timonoff = "0";
//this.ListaRelatori.EnsureVisible(avanti);
ListaRelatori.Items[avanti].EnsureVisible();
}
}

Vi ringrazio per il vostro cortese aiuto

Ciao
Federico

AntCiar Profilo | Expert

Ciao.

Quando usi il PageDown o PageUp è normale che la listView 'schizza' alla pagina successiva di visualizzazione.
Se vuoi gestire sia l'utilizzo del PageDown, PageUp oppure le frecce direzionali, genera l'evento "ItemSelectionChanged" sulla listView.

Creati per prima cosa una Sub che prenda i dati dall'elemento selezionato della listView (sempre se è selezionato un elemento)
(ho usato nomi di textbox generiche, poi adatti tu il tutto con i tuoi nomi)

private void WriteTextBoxData() { this.Textbox1.Text = ""; this.Textbox2.Text = ""; this.Textbox3.Text = ""; this.Textbox4.Text = ""; this.Textbox5.Text = ""; if (this.listView1.SelectedItems.Count == 1) { this.Textbox1.Text = this.listView1.SelectedItems[0].Text; this.Textbox2.Text = this.listView1.SelectedItems[0].SubItems[1].Text; this.Textbox3.Text = this.listView1.SelectedItems[0].SubItems[2].Text; this.Textbox4.Text = this.listView1.SelectedItems[0].SubItems[3].Text; this.Textbox5.Text = this.listView1.SelectedItems[0].SubItems[4].Text; } }


Poi all'interno dell'evento 'ItemSelectionChanged' metti questo codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Cristian Barca

fede2612 Profilo | Newbie



Grazie dei consigli!!

Ciao
Fede
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5