none
ContextMenuStrip Dinâmico no Listivew RRS feed

  • Pergunta

  • Boa Tarde,

       Tenho uma aplicação WinForm no Visual Studio 2005 e Windows XP.

       Minha dúvida é a seguinte: Tenho um Listview onde coloco o ContextMenuStrip dinâmico, onde eu desabilito algumas opções desse menu quando não tenho item selecionado no listview e habilito quando tem itens selecionados. Fiz o seguinte código no Mouse Click:

     

    Code Snippet

    try

    {

      if (e.Button == MouseButtons.Right)

      {

       if (this.lvwCampos.SelectedIndices.Count != -1)

       {

        this.editarCampoToolStripMenuItem.Enabled = true;

        this.removerCampoToolStripMenuItem.Enabled = true;

       }

       else

       {

        this.editarCampoToolStripMenuItem.Enabled = false;

        this.removerCampoToolStripMenuItem.Enabled = false;

       }

      }

     

     Point p = new Point(e.X, e.Y);

     this.cmsCampos.Show(this.lvwCampos, p);

     this.cmsCampos.Refresh();

    }

    catch

    { }

     

     

    O problema é que esse evento só esta sendo chamado caso o click tenha sido feito em sobre um item selecionado. E não estou conseguindo fazer aparecer o ContextMenuStrip quando não tem item selecionado.

     

    Muito obrigado por qualquer tentativa de ajuda.

    Clayr Madeira.

    segunda-feira, 10 de março de 2008 17:27

Respostas

  • Boa tarde Clayr.

     

    Bem, não entendi muito bem, mas vamos lá?

     

    se você linkar  a propriedade contextmenustrip do listview com seu contextmenustrip, provavelmente vai resolver o problema de somente quando estiver selecionado ele aparecer.

     

    e no seu contextmenustripo, no evento Opening, vc coloca o seu fonte somente com essas linhas:

     

    Code Snippet

    {

       if (this.lvwCampos.SelectedIndices.Count != -1)

       {

        this.editarCampoToolStripMenuItem.Enabled = true;

        this.removerCampoToolStripMenuItem.Enabled = true;

       }

       else

       {

        this.editarCampoToolStripMenuItem.Enabled = false;

        this.removerCampoToolStripMenuItem.Enabled = false;

       }

      }

     

     

     

    veja se funciona.

     

    Espero ter ajudado.

     

    t+

    segunda-feira, 10 de março de 2008 19:36

Todas as Respostas

  • Boa tarde Clayr.

     

    Bem, não entendi muito bem, mas vamos lá?

     

    se você linkar  a propriedade contextmenustrip do listview com seu contextmenustrip, provavelmente vai resolver o problema de somente quando estiver selecionado ele aparecer.

     

    e no seu contextmenustripo, no evento Opening, vc coloca o seu fonte somente com essas linhas:

     

    Code Snippet

    {

       if (this.lvwCampos.SelectedIndices.Count != -1)

       {

        this.editarCampoToolStripMenuItem.Enabled = true;

        this.removerCampoToolStripMenuItem.Enabled = true;

       }

       else

       {

        this.editarCampoToolStripMenuItem.Enabled = false;

        this.removerCampoToolStripMenuItem.Enabled = false;

       }

      }

     

     

     

    veja se funciona.

     

    Espero ter ajudado.

     

    t+

    segunda-feira, 10 de março de 2008 19:36
  • Deu certo sim, muito obrigado.
    Não sabia da existencia desse evento Opening no ContextMenuStrip.

     

     

    Obrigado.
    Abração.

    segunda-feira, 10 de março de 2008 20:15