View Full Version : [C#] Creare un evento DoubleClick su una ListView
leonapster
20-02-2008, 21:58
Ho visto che C# (vs 2008) non supporta l'evento DoubleClick.
Come posso fare per integrarlo?
||ElChE||88
20-02-2008, 22:20
Ho visto che C# (vs 2008) non supporta l'evento DoubleClick.
Come posso fare per integrarlo?
:confused:
Ho appena guardato e c'è sia DoubleClick che MouseDoubleClick... :mbe:
Ciao, la DoubleClick la puoi usare quando devi intercettare che qualcuno ha semplicemente doppio-cliccato sul controllo.
Se pero' ti serve anche sapere dove, e da li anche cosa, allora devi usare la MouseDoubleClick, che ti restituisce anche le coordinate cliccate.
leonapster
21-02-2008, 13:35
:confused:
Ho appena guardato e c'è sia DoubleClick che MouseDoubleClick... :mbe:
Avevo già provato ma non mi funzionava:
questo è il code:
private void listView1_MouseDoubleClick(object sender, EventArgs e)
{
.....
}
Però il codice viene eseguito appena faccio click sull'item, e non con il doppio click.
||ElChE||88
21-02-2008, 14:43
Avevo già provato ma non mi funzionava:
questo è il code:
private void listView1_MouseDoubleClick(object sender, EventArgs e)
{
.....
}
Però il codice viene eseguito appena faccio click sull'item, e non con il doppio click.
Ho appena provato e funziona solo con il doppio click (correttamente).
Ma l'event handler lo hai aggiunto a mano? Perché aggiungendolo con VS dovrebbe esserci MouseEventArgs, non EventArgs.
Prova a vedere se il handler è simile a questo:
this.listView1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listView1_MouseDoubleClick);
leonapster
21-02-2008, 19:45
Ho appena provato e funziona solo con il doppio click (correttamente).
Ma l'event handler lo hai aggiunto a mano? Perché aggiungendolo con VS dovrebbe esserci MouseEventArgs, non EventArgs.
Prova a vedere se il handler è simile a questo:
this.listView1.MouseDoubleClick += new System.Windows.Forms.MouseEventHan
dler(this.listView1_MouseDoubleClick);
Perfetto!
Questo era quello che avevo:
this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_MouseDoubleClick);
Ora è tutto ok!
grazie
leonapster
21-02-2008, 20:11
Edit:
Per ordinare un pò le cose ho inserito il codice che doveva essere effettuato al doppio_click in un metodo private void chiamato Download(); In questo modo potevo richiamarlo sia al doppio click sulla listview, sia ThisToolStripMenuItem.
Ma ora funziona solo con ThisToolStripMenuItem??? Da cosa può dipendere?
||ElChE||88
21-02-2008, 20:15
Posta le parti di codice. :fagiano:
leonapster
21-02-2008, 21:09
private void Download()
{
try
{
if (listView1.SelectedItems.Count != 0)
{
DialogResult reply = MessageBox.Show("Do you want to download" + listView1.SelectedItems[0].SubItems[1].Text + "?",
"Confirm download", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (reply == DialogResult.Yes)
{
string catch_url = listView1.SelectedItems[0].SubItems[10].Text;//URL download
.....
}
}
}
catch (Exception error2)
{
MessageBox.Show("Error: " + error2);
}
}
In pratica prende l'url, contenuto in una colonna della listview e lo scarica
private void downloadThisToolStripMenuItem_Click(object sender, EventArgs e)
{
Download();
}
private void listView1_MouseDoubleClick(object sender, EventArgs e)
{
Download();
}
||ElChE||88
21-02-2008, 22:18
Gli event handler come sono?
Sicuro che non chiami il metodo? Magari non segna l'oggetto come selezionato e al primo if salta tutto il pezzo di codice.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.