ADICIONAR EVENTO CLICK EM SUBITEM CONTEXTMENUSTRIP
Salve salve, pessoal.
Seguinte, no meu software em determinado momento eu crio um item(ToolStripMenuItem) NESTE CASO ITEM OCULTAR COLUNAS em um ContextMenuStrip.

e crio também subitens(subniveis) no item criado.
Até aà tudo bem.

Preciso adicionar a esses subitens um evento click, para que quando clicar(checkar) ocultar a coluna do listview.
No momento consigo adicionar evento click apenas no item , mas minha necessidade é o subnivel.
Não estou conseguindo pegar o evento click no subnivel do item.
O objeto é um ContextMenuStrip.
Abaixo segue o código de criação do item e subitem e o evento click do item.
Dessa forma consigo pegar o valor do item selecionado no listview.
Com tudo isso o que desejo é :
Ocultar a coluna clicada no menuitem.
Seguinte, no meu software em determinado momento eu crio um item(ToolStripMenuItem) NESTE CASO ITEM OCULTAR COLUNAS em um ContextMenuStrip.
e crio também subitens(subniveis) no item criado.
Até aà tudo bem.
Preciso adicionar a esses subitens um evento click, para que quando clicar(checkar) ocultar a coluna do listview.
No momento consigo adicionar evento click apenas no item , mas minha necessidade é o subnivel.
Não estou conseguindo pegar o evento click no subnivel do item.
O objeto é um ContextMenuStrip.
Abaixo segue o código de criação do item e subitem e o evento click do item.
Dim item As New ToolStripMenuItem([Ô]Ocultar Colunas[Ô])
For I = 0 To lstProdutosLancados.Columns.Count - 1
item.DropDownItems.Add(lstProdutosLancados.Columns.Item(I).Text)
CMProdutos.Items.Add(item)
[ô]AddHandler item.Click, New System.EventHandler(AddressOf Me.Item_Click)
Next
Private Sub Item_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim tsmi As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
Dim cms As ContextMenuStrip = TryCast(tsmi.Owner, ContextMenuStrip)
Dim ctrl As ListView = TryCast(cms.SourceControl, ListView)
If ctrl.SelectedItems.Count > 0 Then
MessageBox.Show(ctrl.Items(ctrl.SelectedIndices(0)).Text)
End If
End Sub
Dessa forma consigo pegar o valor do item selecionado no listview.
Com tudo isso o que desejo é :
Ocultar a coluna clicada no menuitem.
Fox Men serrar que você poderia me enviar um exemplo ?
é to quase conseguindo....
Agora quando clico no subitem pelo menos já da um erro....hehehehe
Alterei o seguinte :
Para :
Agora quando clico no subitem pelo menos já da um erro....hehehehe
Alterei o seguinte :
Dim item As New ToolStripMenuItem([Ô]Ocultar Colunas[Ô])
For I = 0 To lstProdutosLancados.Columns.Count - 1
item.DropDownItems.Add(lstProdutosLancados.Columns.Item(I).Text)
CMProdutos.Items.Add(item)
[ô]AddHandler item.Click, New System.EventHandler(AddressOf Me.Item_Click)
Next
Para :
Dim item As New ToolStripMenuItem([Ô]Ocultar Colunas[Ô])
For I = 0 To lstProdutosLancados.Columns.Count - 1
item.DropDownItems.Add(lstProdutosLancados.Columns.Item(I).Text)
CMProdutos.Items.Add(item)
AddHandler item.DropDown.Click, New System.EventHandler(AddressOf Me.Item_Click)
Next
Acho que assim funcionaria Foxman.
Dá uma testada ai...
Dim Contador As Integer = 0
Dim item As New ToolStripMenuItem
For I = 0 To lstProdutosLancados.Columns.Count - 1
With item
.Name = [Ô]OcultarColunas[Ô]
.Text = [Ô]Ocultar colunas[Ô]
With .DropDownItems.Add(lstProdutosLancados.Columns.Item(I).Text)
.Tag = Contador
AddHandler .Click, AddressOf OcultarColunas_Click
End With
End With
CMProdutos.Items.Add(item)
Contador += 1
Next
Sub OcultarColunas_Click(ByVal sender As Object, ByVal e As System.EventArgs)
MsgBox(CType(sender, ToolStripItem).Tag)
End Sub
Dá uma testada ai...
Dim Contador As Integer = 0
Dim item As New ToolStripMenuItem
For I = 0 To lstProdutosLancados.Columns.Count - 1
With item
.Name = [Ô]OcultarColunas[Ô]
.Text = [Ô]Ocultar colunas[Ô]
With .DropDownItems.Add(lstProdutosLancados.Columns.Item(I).Text)
.Tag = Contador
AddHandler .Click, AddressOf OcultarColunas_Click
End With
End With
CMProdutos.Items.Add(item)
Contador += 1
Next
Sub OcultarColunas_Click(ByVal sender As Object, ByVal e As System.EventArgs)
MsgBox(CType(sender, ToolStripItem).Tag)
End Sub
Citação::
Fox Men serrar que você poderia me enviar um exemplo ?
Um exemplo do menustrip ???
Citação:Com tudo isso o que desejo é :
Ocultar a coluna clicada no menuitem.
Resolvido Foxman
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Contador As Integer = 0
Dim item As New ToolStripMenuItem
For I = 0 To lstProdutosLancados.Columns.Count - 1
With item
.Name = [Ô]OcultarColunas[Ô]
.Text = [Ô]Ocultar colunas[Ô]
With .DropDownItems.Add(lstProdutosLancados.Columns.Item(I).Text)
.Tag = Contador
AddHandler .Click, AddressOf OcultarColunas_Click
End With
End With
CMProdutos.Items.Add(item)
Contador += 1
Next
End Sub
Sub OcultarColunas_Click(ByVal sender As Object, ByVal e As System.EventArgs)
lstProdutosLancados.Columns(CType(sender, ToolStripItem).Tag).Width = 0
End Sub
End Class
Jonathans,
aki deve estar com algum problema no meu vb.net pois o seu projeto abre com erros e nem consigo visualizar o formulário.
Mas tipo.
se eu passar seu código para dentro do evento de um botão como é o meu caso aqui, ocorre erro de evento, ou seja ele diz que o evento .Click não faz parte do objeto.

Qdo rodo o projeto veja o erro ao clicar no subitem desejado :
aki deve estar com algum problema no meu vb.net pois o seu projeto abre com erros e nem consigo visualizar o formulário.
Mas tipo.
se eu passar seu código para dentro do evento de um botão como é o meu caso aqui, ocorre erro de evento, ou seja ele diz que o evento .Click não faz parte do objeto.
Qdo rodo o projeto veja o erro ao clicar no subitem desejado :
Run-time exception thrown : System.Reflection.AmbiguousMatchException - Overload resolution failed because no Public [ô]Item[ô] is most specific for these arguments:
[ô]Public Overrides ReadOnly Property Item(key As String) As System.Windows.Forms.ColumnHeader[ô]:
Not most specific.
[ô]Public Overrides ReadOnly Property Item(index As Integer) As System.Windows.Forms.ColumnHeader[ô]:
Not most specific.
Vlw JONATHANS, funcionou certinho....
Fica ae um exemplo simples com muita funcionalidade.....
Valeu e obrigado....!!!
Fica ae um exemplo simples com muita funcionalidade.....
Valeu e obrigado....!!!
Tópico encerrado , respostas não são mais permitidas