Ir para conteúdo
Fórum Script Brasil
  • 0

Componente Tab Strip Traduzido


Nabvchodhonozohr

Pergunta

Olá a todos, especialmente a GrayMalkin(é assim q se escreve?)!

Achei aqui no fórum um link para o site da microsoft onde é explicado a concepção de um componente TabStrip em ASP.Net. Como o meu Visual Studio só trabalha com Vb tive q traduzir o código q peguei nesse tutorial, pois está em C#. O problema é q eu não consegui de forma alguma usar esse componente pois tá dando erro com o evento SelectionChangedEventHandler e a propriedade SelectionChanged. Segue abaixo o link para a página e o código q tá dando erro:

Página código em C#

Public Delegate Sub SelectionChangedEventHandler(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)

    Public Event SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)

    'Função auxiliar que chama o evento executando código definido pelo usuário
    Sub OnSelectionChanged(ByVal e As SelectionChangedEventArgs)
        'SelectionChanged é a propriedade do evento
        If IsNothing(SelectionChanged) Then
            SelectionChanged(Me, e)
        End If
    End Sub

Q q tá errado? O q eu faço?

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Esse eu já corrigi (tem q ter um raise):

If SelectionChanged <> Nothing Then

RaiseEvent SelectionChanged(Me, e)

End If

Porém dá erro no delegate. Texto do erro:

"Conflicts with 'SelectionChangedEventHandler', which is implicitly declared for 'Public Event SelectionChanged(sender As Object, e As SelectionChangedEventArgs)' in class 'DataSetGrid'."

E no event:

"'Public Event SelectionChanged(sender As Object, e As SelectionChangedEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event."

Alguém sabe porque?

Link para o comentário
Compartilhar em outros sites

  • 0

Experimente tirar a linha do delegate. Eventos em VB.NET já criam implicitamente um delegate com o mesmo nome seguido de "EventHandler" (por isso o "conflito" que a mensagem de erro indica). Ou seja, vai ficar:

' LINHA COMENTADA - Public Delegate Sub SelectionChangedEventHandler(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)

   Public Event SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)

   'Função auxiliar que chama o evento executando código definido pelo usuário
   Sub OnSelectionChanged(ByVal e As SelectionChangedEventArgs)
       'SelectionChanged é a propriedade do evento
       If Not IsNothing(SelectionChanged) Then
           SelectionChanged(Me, e)
       End If
   End Sub

Note também que coloquei um Not ali na linha do if (veja que lá no código em C# o teste feito é "!=null", ou seja, não é nulo).

Não testei nada disso aqui, por isso, dê um retorno sobre o resultado.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

E aí Falador!

Cara, eu já havia comentado e percebi q o código não reclamou porém fiquei receoso de q na execução desse pau. E o not, realmente eu não tinha notado, valeu!!!

Bom, esse era o primeiro problema. O segundo era aquele evento SelectionChanged q você colocou o not na frente. Ele insiste q eu não posso chamá-lo diretamente, ou seja, só com um RaiseEvent, porém o raise de dentro do if funciona legal, mas quando eu coloco raise no teste o raise reclama q não acha nenhuma expressão. Agora eu não sei o q colocar no teste do if.

Valeu cara, obrigado pela ajuda!

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Veja só, olhando bem o código não deveria ser...

  Sub OnSelectionChanged(ByVal e As SelectionChangedEventArgs)
      'SelectionChanged é a propriedade do evento
      If Not IsNothing(e) Then
          RaiseEvent SelectionChanged(Me, e)
      End If
  End Sub

...? Afinal de contas, acho que o deve ser olhado se é nulo ou não é o argumento passado (no caso, o "e") para então chamar ou não o evento.

Experimente aí e dê um retorno.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
beleza cara! Era isso mesmo. Agora vou tentar usar o componente e se funcionar bem eu posto código aqui. Isso é, se eu não tiver mais contratempos até lá, hehehe!!! É meio sinistro pra quem tem menos de 2 meses de experiência em .Net.

Valeu.

Abraço

beleza! biggrin.gif Esse componente será muito útil!

Qualquer coisa, 'stamos aí.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Houston, we have a problem!!!

Ok, criei o componente, eliminei todos os erros, criei um datagrid alimentado por um dataset com 2 tabelas, o controle tabstrip me mostrou as "orelhinhas" com os nomes das tabelas. Daí eu cliquei e...nada! Ele não consegue mudar a tabela.

Lendo o tutorial descobri q para isso é imprescindível o maldito delegate. Daí eu coloquei o delegate:

Delegate Sub SelectionChangedEventHandler(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)

Public Event SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)

E ocorreu o mesmo erro de compilação de sempre:

"BC30408: Method 'Public Sub SelectionChanged(sender As Object, e As System.EventArgs)' does not have the same signature as delegate 'Delegate Sub SelectionChangedEventHandler(sender As Object, e As tabStrip.DataSetGrid.SelectionChangedEventArgs)'."

Já fiz de tudo e não deu certo. Preciso q esse delegate funcione. E o pior é q ninguém sabe nada a respeito disso.

Obrigado!!!

Houston, end of message!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Ok pessoal! O componente está praticamente pronto.

Estarei postando na seção de links, tutoriais e etc... todo o código do componente em vb e os 4 métodos adicionais pra fazer funcionar. É só copiar e colar praticamente.

Verifiquem lá e se puderem melhorar postem tb as melhorias.

Valeu, um abraço a todos!

Obrigado Graymalkin!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...