Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
ListView ContextMenu
martedì 24 gennaio 2006 - 13.39
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Ciciu
Profilo
| Senior Member
233
messaggi | Data Invio:
mar 24 gen 2006 - 13:39
Ciao a tutti.
Ho un problema con il context menu dei controlli ListView.
Sono riuscito a far comparire menu diversi nel caso in cui l'Utente stia right-clicckando su un item o "sul vuoto" del controllo...
Ma come faccio ad intercettare il click sull'intestazione della colonna ?
Ciao - Fabio
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 24 gen 2006 - 14:52
>Ciao a tutti.
>
>Ho un problema con il context menu dei controlli ListView.
>
>Sono riuscito a far comparire menu diversi nel caso in cui l'Utente
>
>Ma come faccio ad intercettare il click sull'intestazione della
> colonna ?
Così:
DataGrid.HitTestInfo info = dataGrid1.HitTest(e.X, e.Y);
if(info.Type == DataGrid.HitTestType.ColumnHeader)
{
Console.WriteLine("HEADER");
}
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Ciciu
Profilo
| Senior Member
233
messaggi | Data Invio:
mar 24 gen 2006 - 15:25
Ciao.
Temo che non funzioni correttamente sul ListView...
Ho fatto una prova agganciandomi all'evento MouseUp del ListView, ma non mi sembra intercettare il right click sull'intestazione della colonna (mentre lo intercetta correttamente sull'item e/o sul "vuoto")...
In particolare non ho trovato nulla di somigliante al membro "Type" di datagrid...
private void lstPeople_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
ListViewHitTestInfo a = lstPeople.HitTest(e.X, e.Y);
MessageBox.Show(a.Location.ToString());
}
}
Ciao - Fabio
Fabio G
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 24 gen 2006 - 16:33
Ciao,
scusa non so perchè ma mi sono sognato che si trattava di DataGrid anche se in realtà era una ListView :-O Ho dormito poco ..
Allora per farlo con la ListView la cosa è un po' più complicata, è necessario creare una classe derivata da ListView e fare un override di WndProc che è una funzione che smista i messaggi di Windows. A quel punto bisogna cercare i messaggi di tipo WM_NOTIFY e verificare se all'interno c'è:
NM_RCLICK
che scatta quando viene premuto un tasto destro del mouse su un controllo.
Se c'è verificare che la posizione sia quella dove appare l'Header, e a quel punto ci sei.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/common/notifications/nm_rclick.asp
Non è una cosa banale da implementare.
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Torna su
Stanze Forum
Elenco Threads
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 !