Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Nabvchodhonozohr

Componente Tab Strip Traduzido

Question

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?

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!!!

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148104
    • Total Posts
      643375
×
×
  • Create New...