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

Menu Suspenso


Andersonjb

Pergunta

E ai Gray, essa duvida aqui é pra você porque foi voce que me ajudou da ultima vez, ve se você consegue me ajudar: Bem, uns posts atrás ai, você me ajudou a fazer que quando eu clicasse em uma DataGrid com o botão direto, ela aparecesse um Menu Suspenso. O código é esse:

    Private Sub dgtabela_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Button = MouseButtons.Right Then
            Dim obj As New Point
            obj.X = e.X
            obj.Y = e.Y
            Cmf.Show(dgtabela, obj)
        End If
    End Sub

Bem, só que acontece que isso não está funcionando. Bem, agora um detalhe, é que eu coloquei a DataGrid em cima de uma Tabcontrol, é isso que não está fazendo esse click direito funcionar? Se for, como eu resolvo isso? valeu!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Não está funcionando? O que acontece exatamente? Se não acontece nada, verifique o que digo abaixo.

Você está utilizando o VS.NET mesmo ou o #Develop (SharpDevelop)? Estou perguntando porque estranhei a declaração da rotina...

Private Sub dgtabela_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)

... faltando o "Handles dgtabela.MouseDown".

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Não, estou usando o Visual Studio, VB.NET mesmo. Bem, não será por causa de uma classe que eu estou usando na DataGrid? É uma classe que você fez pra mim pra mudar os numeros do lado, lembra? É essa:

    Public Class MyDataGrid
        Inherits DataGrid

        Public Event VScroll(ByVal sender As Object, ByVal se As System.Windows.Forms.ScrollEventArgs)

        Public Sub ScrollTo(ByVal se As ScrollEventArgs)
            If Not Me.DataSource Is Nothing Then
                Me.GridVScrolled(Me, se)
            End If
        End Sub

        Protected Overrides Sub OnPaint(ByVal pe As System.Windows.Forms.PaintEventArgs)
            MyBase.OnPaint(pe)

            If Not Me.DataSource Is Nothing Then
                Dim info As HitTestInfo = Me.HitTest(10, 48)

                If info.Type = DataGrid.HitTestType.RowHeader Then
                    Dim fonte As New Font("Tahoma", 8)
                    Dim cor As Brush = Drawing.Brushes.Black
                    Dim posY As Long
                    Dim posX As Long

                    For i As Integer = info.Row To info.Row + Me.VisibleRowCount
                        Try
                            posX = Me.GetCellBounds(i, 0).X - 30
                            posY = Me.GetCellBounds(i, 0).Y
                        Catch ex As Exception
                            posX = -1
                            posY = -1
                        End Try
                        If posX >= 0 And posY >= 0 Then
                            Dim área As New RectangleF(posX, posY, 30, 30)

                            pe.Graphics.DrawString(Hex(i.ToString()), fonte, cor, área)
                        End If
                    Next
                End If
            End If
        End Sub
        Protected Overrides Sub GridVScrolled(ByVal sender As Object, ByVal se As System.Windows.Forms.ScrollEventArgs)
            MyBase.GridVScrolled(sender, se)
            RaiseEvent VScroll(sender, se)
        End Sub
    End Class
E lá em cima, nas declarações, a DataGrid está declarada desta maneira:
    Friend WithEvents dgtabela As MyDataGrid

POde ser esse o motivo da falta do Handles?

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, agora sim, problema resolvido!  laugh.gif  Mas estranho ele sumir assim só porque eu mudei o controle de lugar, não é?

Na verdade não é tão estranho porque, se você tirar a parte do Handles, aquela dali é uma rotina (Sub) como qualquer outra. O que diz que esta rotina deve ser chamada quando o evento for invocado é justamente o Handles.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...