28. november 2005 - 15:03Der er
6 kommentarer og 2 løsninger
Flytte en Non-Rectangular form
Jeg har lavet en form, hvor jeg har fjernet den øverste bjælke, så nu kan jeg ikke flytte rundt på min form. Jeg har i toppen af formen en label, jeg vil gerne have sådan at når man holder venstre muse tast inde, så flyter formen sig rundt ligesom på normal vis.
Jeg har fundet dette link fra microsoft, men her flytter den lige meget hvor man trykker henne på formen. Og det virker i øvrigt ikke særligt godt.
Hvordan gør jeg lige det?
Jeg skal vel have lavet noget kode, så der sker noget når man holder venstre muse knap inde over label'en
Du kan lave en eventhandler på mousebutton_down der sætter en klassevariabel der siger at museknapper er trykket ned. På mouse_move eventet kan du så tjekke om denne klassevariabel er sand (altså musen er nede), hvis det er tilfældet, så flyt formen til der hvor musen er (husk at tænke på størrelsen af formen, samt at positition siger noget om øverste venstre hjørne så vidt jeg husker). En sidste eventhandler på mousebutton_up sætter så klassevariablen til falsk, og når du flytter musen uden at ha knappen nede, flyttes formen ikke.
De 3 eventhandlers vil så se nogenlunde sådan her ud:
private bool isMouseDown; //variabel til at sige om musen er nede eller ej private Point mouseOffset; //variabel til at gemme det offset der skal bruges til at tage højde for formens størrelse
private void form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { int xOffset; int yOffset; if (e.Button == MouseButtons.Left) { xOffset = -e.X - SystemInformation.FrameBorderSize.Width; yOffset = -e.Y - SystemInformation.FrameBorderSize.Height; mouseOffset = new Point(xOffset, yOffset); this.isMouseDown = true; } }
Min virker nemlig meget mærkeligt. Hvis jeg har en label, og jeg gerne vil have at formen flytter sig når man holder muse tasten nede over den label. Hvordan gør jeg det?
Jeg skal vel have koden her imellem private void label11_Click(object sender, EventArgs e) {
Deler pointene da jeg ikke kan få jens's metode til at virke ordenligt
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.