Nem sei que titulo dar...

Bro840

Power Member
Estou a desenvolver uma aplicação em .Net

- Criei via código um ContextMenu que é preenchido também via código com base numa tabela de uma base de dados.

- Associei este ContextMenu a uma Label

Até aqui tudo bem, quando carrego na Label aparece a lista certinha de items. Agora eu queria que a Label ficasse com item que eu escolhe do ContextMenu

Ex: O ContextMenu contém a seguinte lista: Porto, Benfica, Sporting.... Eu escolho Sporting... Queria que a propriedade text do objecto Label mostrasse Sporting.


Tem de ser possível mas eu não sei como.

Obrigado
 
Não sei como tens os eventos associados ao ContextMenu, mas assim deve fazer o que pretendes ...
ContextMenuStrip cms = new ContextMenuStrip();
....
cms.ItemClicked += new ToolStripItemClickedEventHandler(cms_ItemClicked);

private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
this.Label1.Text = e.ClickedItem.ToString();
}

Em todo o caso, deves ter sempre um evento associado a cada MenuItem do ContextMenu.
 
mcog_blaster obrigado

Mas a verdade é que eu tenho várias labels no formulário por isso é que fica dificil de saber em qual delas é que deu origem ao context menu...

Tou a programar em vb-net mas percebi o teu raciociono.

Obrigado
 
Uma ideia que tive foi a seguinte.

Através do evento MouseClick eu consigo saber as coordenadas do rato no momento do RightClick, se houver algum método que me permita pesquisar que objecto existe em determinada coordenada, então ai já teria toda a informação que preciso...
 
no evento recebes um objecto, que em principio tem o nome de sender, esse objecto é o objecto em que carregaste, para aceder as suas propriedades, se bem me lembro, tens que fazer um cast
 
Samuel é isso mesmo, mas, o objecto que eu carreguei é o ContextMenu.... Por isso o sender envia um objecto do tipo ContextMenuStrip
 
mcog_blaster obrigado

Mas a verdade é que eu tenho várias labels no formulário por isso é que fica dificil de saber em qual delas é que deu origem ao context menu...

Tou a programar em vb-net mas percebi o teu raciociono.

Obrigado

Então tens de saber quem foi que lançou o ContextMenu (parent)
ContextMenuStrip cms = (ContextMenuStrip)sender;
if (cms != null)
{
System.Windows.Forms.Label parent = (System.Windows.Forms.Label)cms.SourceControl;
parent.Text = e.ClickedItem.ToString();
}
 
what the **** lololol não podia ser mais simples!!!!

No Evento cm_ItemClicked

cm.SourceControl.Text = e.ClickedItem.Text

Faltava-me conhecer a propriedade souce control que grande lol e o pior é que eu andei a ver se via alguma coisa sugestiva deste género.

Muito muito obrigado ;)
 
Back
Topo