48 messaggi dal 23 maggio 2008
Ciao a tutti
Ho comincianto da poco a creare progetti WindowsForm
e cercando in giro ho letto in giro che è possibile togliere la barra del titolo in modo da poter Personalizzare "al massimo" La WinForm..

La barra l'ho tolta Solo che ora vorrei che la WinForm sia comunque spostabile dall'utente.. cercando Ho trovato uno script c# che pero sembra non funzionare forse perchè sbaglio qualcosa ecco il codice:

public Form1()
{
InitializeComponent();
}
private Point diff;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
diff= new Point(-e.X, -e.Y);
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point mouse_loc = Control.MousePosition;
mouse_loc.Offset(diff.X, diff.Y);
this.Location = mouse_loc;
}
}
}

Qualcuno saprebbe aiutarmi???

A un'altra cosa ne ho trovato uno in vb Funzionante
ma a me serve in C# qualcuno saprebbe tradurlo???

Private diff As Point

Public Sub New()
InitializeComponent()
End Sub

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
diff = New Point(-e.X, -e.Y)
End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
Dim mouse_loc As Point = Control.MousePosition
mouse_loc.Offset(diff.X, diff.Y)
Me.Location = mouse_loc
End If
End Sub

Grazie in anticipo per l'aiuto
CIAO
Ti dico due cose:
1) il codice che hai scritto è esattamente la traduzione C# di quello VB più in basso
2) Mi sembra corretto, tant'è che ho fatto cut-paste della versione C# su un'applicazione nuova e funziona alla grande.

Quindi magari ricontrolla ciò che hai effettivamente sul suo progetto!

Ciao
.m
48 messaggi dal 23 maggio 2008
Ciao sul progetto è lo stesso...
devo impostare forse qualche altra proprietà???

Il codice vb non è quello scusa ho sbagliato è questo e funziona

Dim MousePos As Point
Dim IsMouseDown As Boolean
Private Sub ClassBox_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
MousePos = New Point(MousePosition.X - Me.Location.X, MousePosition.Y - Me.Location.Y)
IsMouseDown = True
End Sub

Private Sub ClassBox_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
IsMouseDown = False
End Sub

Private Sub ClassBox_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If IsMouseDown Then
Me.Location = New Point(MousePosition.X - MousePos.X, MousePosition.Y - MousePos.Y)
End If
End Sub
Modificato da goldberg il 28 settembre 2008 23.45 -
Modificato da goldberg il 28 settembre 2008 23.45 -
48 messaggi dal 23 maggio 2008
Ciao mi è venuto un'altro dubbio non è che non mi funziona perchè uso la versione Express????

Ciao
La versione Express non c'entra nulla.

Cosa vuol dire "non funziona"? Non sposta nulla? sposta male? Sei sicuro di aver agganciato entrambi i metodi agli eventi MouseDown e MouseMove? Se metti un breakpoint nei due metodi e avvii l'app in debug, vengono effettivamente eseguiti?
48 messaggi dal 23 maggio 2008
Non Mi Sposta Nulla..

Io imposto la proprietà FormBorderStyle a none poi inserisco quel codice ma non mi fa spostare la winform..

Devo fare qualcos'altro???
L'unica cosa che mi viene in mente è che gli eventi non siano agganciati. Hai fatto le verifiche con il debugger che ti ho detto?
48 messaggi dal 23 maggio 2008
Hai ragione gli eventi non vengono eseguiti ma perchè???

mhhh....!!!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.