PDA

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:

gugoXX
20-02-2008, 22:50
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.