C# Move Form without border

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Quadsoft.

    C# Move Form without border

    Hey Leute ,
    hab nen riesiges Problem was sich durch googeln nur vergrössert hat .
    Ich habe eine Form auf Formborderstyle auf none .

    Hab dazu diesen Code

    Quellcode

    1. private Point mouseposition;
    2. void MainFormMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    3. {
    4. mouseposition = new Point(-e.X, -e.Y);
    5. }
    6. void MainFormMouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    7. {
    8. if (e.Button == MouseButtons.Left)
    9. {
    10. Point mousePos = Control.MousePosition;
    11. mousePos.Offset(mouseposition.X, mouseposition.Y);
    12. Location = mousePos;
    13. }
    14. }


    Der die dazu bringen soll die Form zu bewegen , doch sie funktioniert nicht .
    Könnt ihr mir helfen ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „m97y97“ ()

    @myrax: Unter C# ist dieses Feature offensichtlich nicht so gut ausgebaut.
    Der Code, der unter VB bei 'formdrag' erscheint, hat erstaunliche Ähnlichkeit mit dem hier geposteten.
    Also dürfte das Problem nicht bei einem Code liegen, sondern bei der Umsetzung desselben auf C#.

    @m97y97: werden deine Unterprogramme auch irgendwo aufgerufen (Handler vorhanden?)
    [VB 2008] FormBoarderStyle = None bewegen

    Übersetzt auf C#

    Quellcode

    1. using Microsoft.VisualBasic;
    2. using System;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5. using System.Data;
    6. using System.Diagnostics;
    7. public class Form1
    8. {
    9. private Point MausLocation;
    10. private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    11. {
    12. if (e.Button == System.Windows.Forms.MouseButtons.Left) {
    13. MausLocation = e.Location;
    14. }
    15. }
    16. private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    17. {
    18. if (e.Button == System.Windows.Forms.MouseButtons.Left) {
    19. this.Location = e.Location - MausLocation + this.Location;
    20. }
    21. }
    22. public Form1()
    23. {
    24. MouseMove += Form1_MouseMove;
    25. MouseDown += Form1_MouseDown;
    26. }
    27. }



    Schau mal, ob das klappt :)
    1. Der Code im ersten Post funktioniert 100%
    2. @der_Kurt: Schwachsinn. ob der Code nun in VB oder in C# ist, spielt überhaupt keine rolle, da .NET Methoden genutzt werden. Die Sprache selbst ist völlig nebensächlich. Das ist gerade der große Vorteil von .NET.

    EDIT:

    Achso, jetzt verstehe ich. Du musst die beiden Eventhandler natürlich erst registrieren. So weiß das Programm doch gar nicht, dass es sie benutzen soll.

    also so:

    PHP-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Text;
    7. using System.Windows.Forms;
    8. namespace WindowsFormsApplication1
    9. {
    10. public partial class MainForm : Form
    11. {
    12. public MainForm()
    13. {
    14. InitializeComponent();
    15. this.MouseMove += new MouseEventHandler(MainFormMouseMove);
    16. this.MouseDown += new MouseEventHandler(MainFormMouseDown);
    17. }
    18. private Point mouseposition;
    19. void MainFormMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    20. {
    21. mouseposition = new Point(-e.X, -e.Y);
    22. }
    23. void MainFormMouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    24. {
    25. if (e.Button == MouseButtons.Left)
    26. {
    27. Point mousePos = Control.MousePosition;
    28. mousePos.Offset(mouseposition.X, mouseposition.Y);
    29. Location = mousePos;
    30. }
    31. }
    32. }
    33. }

    Quadsoft schrieb:

    @der_Kurt: Schwachsinn. ob der Code nun in VB oder in C# ist, spielt überhaupt keine rolle, da .NET Methoden genutzt werden. Die Sprache selbst ist völlig nebensächlich. Das ist gerade der große Vorteil von .NET.

    Danke für die Aufklärung. Vielleicht liest du dir nochmal die ersten paar Posts hier durch, dann siehst du, worauf sich meine Antwort bezieht. (Auf das Feature 'Code Snippets', und nicht auf eine simple Methode zum Verschieben von Fenstern.)
    Und meine Vermutung, dass kein Handler auf diese Methoden angesetzt ist, hast du ja auch bestätigt. Vielleicht hab ich ja doch Ahnung. :D

    der_Kurt schrieb:

    Danke für die Aufklärung. Vielleicht liest du dir nochmal die ersten paar Posts hier durch, dann siehst du, worauf sich meine Antwort bezieht. (Auf das Feature 'Code Snippets', und nicht auf eine simple Methode zum Verschieben von Fenstern.)
    Und meine Vermutung, dass kein Handler auf diese Methoden angesetzt ist, hast du ja auch bestätigt. Vielleicht hab ich ja doch Ahnung.

    Achos, sry, ja, das hängt tatsächlich vom Editor in VS (C# o. VB) (NICHT der Sprache selbst) ab, welche Snippets angeboten werden.