Beantwortet Rechtsklick- Frage

  • Montag, 19. Juli 2010 17:55
     
     

    Hallo

    ich habe eine Frage, nur weiss ich nicht ob das geht. Folgendes ich möchte gern ein Form per Rechtsklick aufrufen habe dazu aber nichts gefunden bis jetzt.

    Die form ist nicht sehr groß und die als erweitertes Menü für bestimmte Benutzeraktionen.

    Ist so etwas möchlich mit rechten Mausklick?

    LG

    Köhler

     

Antworten

  • Montag, 19. Juli 2010 19:49
    Moderator
     
     Beantwortet
    Hallo,

    ich habe eine Frage, nur weiss ich nicht ob das geht. Folgendes ich möchte gern ein Form per Rechtsklick aufrufen habe dazu aber nichts gefunden bis jetzt.

    Die form ist nicht sehr groß und die als erweitertes Menü für bestimmte Benutzeraktionen.

    Sehr einfach gehalten und nur als grober Ansatz gedacht:

    Public Class Form1
      Private Sub Form1_MouseUp(ByVal sender As Object, _
                  ByVal e As System.Windows.Forms.MouseEventArgs _
                     ) Handles Me.MouseUp
    
      If e.Button = Windows.Forms.MouseButtons.Right Then
       Dim f As New Form2()
       f.Location = Me.PointToScreen(e.Location)
       f.StartPosition = FormStartPosition.Manual
       f.Show()
      End If
     End Sub
    End Class
    

    Für Form2 dann noch im Deactivate Ereignis das Abräumen:

    Public Class Form2
    
     Private Sub Form2_Deactivate(ByVal sender As Object, _
                    ByVal e As System.EventArgs _
                       ) Handles Me.Deactivate
      Me.Close()
     End Sub
    End Class

    Das ganze ist ausbaufähig. So verliert bspw. bei einem echten Menü das Formular nicht den Fokus.

    Denkbare Alternative wäre auch ein eigenes UserControl, als Formularersatz, das über die ToolStripControlHost Klasse die Fähigkeit bekommt, als Item in einem normalen ContextMenuStrip verwendet werden zu können. Damit umgehst Du gewöhnungsbedürftige Fokusverhalten und kommst der Menüfunktion näher.

    Gewusst wie: Verwenden eines ToolStripControlHost als Wrapper für ein Windows Forms-Steuerelement
    http://msdn.microsoft.com/de-de/library/9k5etstz.aspx

    Vielleicht beschreibst Du auch noch einmal genauer, was Du erreichen möchtest und wo geklickt werden soll.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort vorgeschlagen chrixko Montag, 19. Juli 2010 19:52
    • Als Antwort markiert alevaron Montag, 19. Juli 2010 20:54
    •  

Alle Antworten

  • Montag, 19. Juli 2010 19:42
     
     
    Ich denke jeder hier wird Schwierigkeiten haben deine Frage zu verstehen. Versuche dein Problem bitte noch einmal ausführlich zu erklären. Beispiel um generell einen Rechtsklick abzufangen: Im MouseClick-Event überprüfen ob e.Button = Windows.Forms.MouseButtons.Right
    • Bearbeitet chrixko Montag, 19. Juli 2010 19:52 Erweiterung
    •  
  • Montag, 19. Juli 2010 19:49
    Moderator
     
     Beantwortet
    Hallo,

    ich habe eine Frage, nur weiss ich nicht ob das geht. Folgendes ich möchte gern ein Form per Rechtsklick aufrufen habe dazu aber nichts gefunden bis jetzt.

    Die form ist nicht sehr groß und die als erweitertes Menü für bestimmte Benutzeraktionen.

    Sehr einfach gehalten und nur als grober Ansatz gedacht:

    Public Class Form1
      Private Sub Form1_MouseUp(ByVal sender As Object, _
                  ByVal e As System.Windows.Forms.MouseEventArgs _
                     ) Handles Me.MouseUp
    
      If e.Button = Windows.Forms.MouseButtons.Right Then
       Dim f As New Form2()
       f.Location = Me.PointToScreen(e.Location)
       f.StartPosition = FormStartPosition.Manual
       f.Show()
      End If
     End Sub
    End Class
    

    Für Form2 dann noch im Deactivate Ereignis das Abräumen:

    Public Class Form2
    
     Private Sub Form2_Deactivate(ByVal sender As Object, _
                    ByVal e As System.EventArgs _
                       ) Handles Me.Deactivate
      Me.Close()
     End Sub
    End Class

    Das ganze ist ausbaufähig. So verliert bspw. bei einem echten Menü das Formular nicht den Fokus.

    Denkbare Alternative wäre auch ein eigenes UserControl, als Formularersatz, das über die ToolStripControlHost Klasse die Fähigkeit bekommt, als Item in einem normalen ContextMenuStrip verwendet werden zu können. Damit umgehst Du gewöhnungsbedürftige Fokusverhalten und kommst der Menüfunktion näher.

    Gewusst wie: Verwenden eines ToolStripControlHost als Wrapper für ein Windows Forms-Steuerelement
    http://msdn.microsoft.com/de-de/library/9k5etstz.aspx

    Vielleicht beschreibst Du auch noch einmal genauer, was Du erreichen möchtest und wo geklickt werden soll.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort vorgeschlagen chrixko Montag, 19. Juli 2010 19:52
    • Als Antwort markiert alevaron Montag, 19. Juli 2010 20:54
    •  
  • Montag, 19. Juli 2010 19:51
     
     

    Hallo

    ich möchte gern eine Form per rechtsklick aufrufen.

    Form1 per rechtsklick form2 aufrufen

    LG

    Köhler

  • Montag, 19. Juli 2010 19:55
     
      Enthält Code
    Hallo,

    ich habe eine Frage, nur weiss ich nicht ob das geht. Folgendes ich möchte gern ein Form per Rechtsklick aufrufen habe dazu aber nichts gefunden bis jetzt.

    Die form ist nicht sehr groß und die als erweitertes Menü für bestimmte Benutzeraktionen.

    Sehr einfach gehalten und nur als grober Ansatz gedacht:

    Public Class Form1
    
     Private Sub Form1_MouseUp(ByVal sender As Object, _
    
           ByVal e As System.Windows.Forms.MouseEventArgs _
    
             ) Handles Me.MouseUp
    
    
    
     If e.Button = Windows.Forms.MouseButtons.Right Then
    
      Dim f As New Form2()
    
      f.Location = Me.PointToScreen(e.Location)
    
      f.StartPosition = FormStartPosition.Manual
    
      f.Show()
    
     End If
    
     End Sub
    
    End Class
    
    
    

    Für Form2 dann noch im Deactivate Ereignis das Abräumen:

    Public Class Form2
    
    
    
     Private Sub Form2_Deactivate(ByVal sender As Object, _
    
            ByVal e As System.EventArgs _
    
              ) Handles Me.Deactivate
    
     Me.Close()
    
     End Sub
    
    End Class
    

    Das ganze ist ausbaufähig. So verliert bspw. bei einem echten Menü das Formular nicht den Fokus.

    Denkbare Alternative wäre auch ein eigenes UserControl, als Formularersatz, das über die ToolStripControlHost Klasse die Fähigkeit bekommt, als Item in einem normalen ContextMenuStrip verwendet werden zu können. Damit umgehst Du gewöhnungsbedürftige Fokusverhalten und kommst der Menüfunktion näher.

    Gewusst wie: Verwenden eines ToolStripControlHost als Wrapper für ein Windows Forms-Steuerelement
    http://msdn.microsoft.com/de-de/library/9k5etstz.aspx

    Vielleicht beschreibst Du auch noch einmal genauer, was Du erreichen möchtest und wo geklickt werden soll.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de


         Also ich erstelle gerade ein Texteditor und nutze die besagte Form wie als Menü für verschiedeen Formatierungsmöglichkeiten. Klar geht es auch mit den  Contexmenü aber ich möchte was neues ausprobieren. Vielleicht als vergleich ähnlich wie bei Office 2007, aber nicht genauso.

    LG

    Köhler

     

  • Montag, 19. Juli 2010 20:53
     
      Enthält Code
    Hallo,

    ich habe eine Frage, nur weiss ich nicht ob das geht. Folgendes ich möchte gern ein Form per Rechtsklick aufrufen habe dazu aber nichts gefunden bis jetzt.

    Die form ist nicht sehr groß und die als erweitertes Menü für bestimmte Benutzeraktionen.

    Sehr einfach gehalten und nur als grober Ansatz gedacht:

    Public Class Form1
    
    
    
     Private Sub Form1_MouseUp(ByVal sender As Object, _
    
    
    
        ByVal e As System.Windows.Forms.MouseEventArgs _
    
    
    
         ) Handles Me.MouseUp
    
    
    
    
    
    
    
     If e.Button = Windows.Forms.MouseButtons.Right Then
    
    
    
     Dim f As New Form2()
    
    
    
     f.Location = Me.PointToScreen(e.Location)
    
    
    
     f.StartPosition = FormStartPosition.Manual
    
    
    
     f.Show()
    
    
    
     End If
    
    
    
     End Sub
    
    
    
    End Class
    
    
    
    
    
    

    Für Form2 dann noch im Deactivate Ereignis das Abräumen:

    Public Class Form2
    
    
    
    
    
    
    
     Private Sub Form2_Deactivate(ByVal sender As Object, _
    
    
    
        ByVal e As System.EventArgs _
    
    
    
         ) Handles Me.Deactivate
    
    
    
     Me.Close()
    
    
    
     End Sub
    
    
    
    End Class
    
    

    Das ganze ist ausbaufähig. So verliert bspw. bei einem echten Menü das Formular nicht den Fokus.

    Denkbare Alternative wäre auch ein eigenes UserControl, als Formularersatz, das über die ToolStripControlHost Klasse die Fähigkeit bekommt, als Item in einem normalen ContextMenuStrip verwendet werden zu können. Damit umgehst Du gewöhnungsbedürftige Fokusverhalten und kommst der Menüfunktion näher.

    Gewusst wie: Verwenden eines ToolStripControlHost als Wrapper für ein Windows Forms-Steuerelement
    http://msdn.microsoft.com/de-de/library/9k5etstz.aspx

    Vielleicht beschreibst Du auch noch einmal genauer, was Du erreichen möchtest und wo geklickt werden soll.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de


         Also ich erstelle gerade ein Texteditor und nutze die besagte Form wie als Menü für verschiedeen Formatierungsmöglichkeiten. Klar geht es auch mit den  Contexmenü aber ich möchte was neues ausprobieren. Vielleicht als vergleich ähnlich wie bei Office 2007, aber nicht genauso.

    LG

    Köhler

     


    Hallo

    habe gerade mal den Ansatz ausprobiert und es klappt so wie ich es mir vorstellen.

    Vielen Dank erstmal

    LG

    Köhler