Newsgroup: it.comp.lang.visual-basic
Titolo: vb.net Aprire un form dove clicco

Ciao a tutti,
ho la necessità di aprire una piccola form di selezione di una data,
in modo che il suo angolo superiore sinistro sia posizionato
esattamente dov'è il cursore del mouse.
Non sono riuscito a trovare esempi su come farlo, qualcuno riesce a
darmi una mano?
Grazie

 ha scritto nel messaggio


E che esempi vuoi trovare? :)
frm.Location = Me.PointToClient(Cursor.Position)
Ciao 

 Ciao
Ciao Fabio,
innanzitutto Cursor.Position non me lo prende ma devo mettere tutto il
percorso completo :
frm.Location = Me.PointToClient(System.Windows.Forms.Cursor.Position)
poi la form non si apre con l'angolo superiore sinistro dove ho il
mouse ma molto spostata rispetto a quella posizione.
Hai qualche idea?
Grazie

 ha scritto nel messaggio 
news:1174741271.8...@p15g2000hsd.googlegroups.com...

Ok, ho fatto due prove.
Puoi fare così:
1) frm.Show nel MouseDown o nel MouseUp:
frm.Location = Me.PointToScreen(e.Location)
2) frm.Show dove vuoi:
frm.Location = System.Windows.Forms.Cursor.Position
Cursor.Position restituisce già la Location sullo schermo, pensavo fosse 
relativa alla client area del form.
Devi indicare il nome completo perchè altrimenti va in conflitto con la 
dproprietà Cursor del form che indica la forma del cursore.
Ciao

 - Mostra testo tra virgolette -
Ciao Fabio,
ho provato ma nulla. la form compase sempre dove vuole.
Questo è il codice:
 Private Sub btnDataAcquisto_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnDataAcquisto.Click
        Try
            Dim frm As New frmKeeperDate
            frm.Location = System.Windows.Forms.Cursor.Position
            frm.ShowDialog()
          frm = Nothing
        Catch ex As Exception
            Call Errore(Err, Me.Name, "btnDataAcquisto_Click")
        End Try
    End Sub
non riesco a capire dove sbaglio

 non riesco a capire dove sbaglio
Eh... questo è un bel bug della ShowDialog che ha fatto diventare matto 
anche me.
Per risolverlo devi impostare la posizione iniziale all'interno della Load 
di frmKeeperDate (che io rinominerei nel nuovo .Net style KeeperDateForm)
Private Sub frmKeeperDate_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
    Location = System.Windows.Forms.Cursor.Position
End Sub
oppure per renderla un po' più flessibile aggiungi a frmKeeperDate una 
proprietà (qui uso una variabile per fare in fretta):
Public RightLocation As Point
Private Sub frmKeeperDate_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
    Location = RightLocation
End Sub
E poi la richiami con
frmKeeperDate.RightLocation = System.Windows.Forms.Cursor.Position
frmKeeperDate.ShowDialog()
Ciao

 ha scritto nel messaggionews:1174752050.9...@l75g2000hse.googlegroups.com...

Ciao Fabio,
grazie della tua pazienza. Il tuo codice funziona alla perfezione.
Ho ricevuto anche una risposta sul forum
microsoft.public.dotnet.languages.vb sul quale mi hanno postato questo
codice che funziona esattamente come il tuo. Te lo posto per tua
conoscenza.
   Dim frm As New frmKeeperDate
   frm.StartPosition = FormStartPosition.Manual
   frm.Location = System.Windows.Forms.Cursor.Position
   frm.ShowDialog()
A me su VB.net 2005 con il framework 2.0 funziona.
Grazie del tuo prezioso aiuto.