przesuwanie okna

Odpowiedz Nowy wątek
2006-11-14 15:16
ŁATATA
0

Witam
Mam pytanie. Ukryłem pasek tytułu (własciwość FormBorderStyle = none) i chce teraz aby formę można było przewsuwać klkiając w dowolnym miejscu formy. Jak to zrobić?
Z góry dziękuję.

Pozostało 580 znaków

2006-11-14 15:42
0

Zdarzenie onMouseDown ustawia jakas flage, w zdarzeniu onMouseMove przesuwasz formatke, jesli flaga ustawiona, onMouseUp sciagasz flage.


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-14 16:04
ŁATATA
0

mógłbyś dokłdniej napisać co mam w onMouseMove wpisać?

Pozostało 580 znaków

2006-11-15 10:08
0

W onMouseDown zapamietujesz wspolrzedne klikniecia mysz, powiedzmy w skladowych x i y. W onMouseDown robisz:


if(!mouseDown)//wlasna flaga klikniecia
return;
Form formatka = ((Form)sender);
formatka.SetDesktopLocation(formatka.DesktopLocation.X - (x - e.X), formatka.DesktopLocation.Y - (y - e.Y));



i powinno hulac.

You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-15 19:21
ŁATATA
0

nie hula...
ktoś ma inny pomysł?

Pozostało 580 znaków

2006-11-15 19:22
0

Pokaz kod - nie hula, troche malo mowi :P Mi dziala, obstaje przy swoim ;)


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-15 19:45
ŁATATA
0
int x, y;
            x = MousePosition.X;
            y = MousePosition.Y;
           if (!mouseDown)
                return;
            Form formatka = ((Form)sender);
            formatka.SetDesktopLocation(formatka.DesktopLocation.X - (x - e.X), formatka.DesktopLocation.Y - (y - e.Y));

Mam probleem z tą flagą klknięcia jak to zrobić?

Pozostało 580 znaków

2006-11-15 19:50
0

Ekhem... chyba nie przeczytales tego, co napisalem :/ pozycje myszy w trakcie klikniecia zapamietujesz w zdarzeniu onMouseDown, to raz. Po drugie mozesz je zrobic jako skladowe. Tak samo z flaga. To co napisales powyzej nie ma prawa dzialac (chocby dlatego, ze przeciez wspolrzednie w zdarzeniu i wspolrzedne myszki to dokladnie to samo :P). Swoja droga machnalem sie powyzej - ten kod co dalem dotyczy onMouseMove ;)


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-11-15 19:53
ŁATATA
0

ale co z tą flagą mousedown help plz :)

Pozostało 580 znaków

2006-11-15 20:06
ŁATATA
0

poradziłem już sobie prawie. ale przy klknięciu przewsuwa mi się okno do górnego lewego rogu ekranu i wtedy jak trzymam wcisniety przycisk i przesuwam myszką to wszystko działa OK. tylko dlaczeog sie przesuwa przy klknieciu ;/

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            int x, y;
            aa = 2;
            x = MousePosition.X;
            y = MousePosition.Y;
            label6.Text = x.ToString();
            label7.Text = y.ToString();            
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            aa = 1;
        }
   private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (aa != 2)//wlasna flaga klikniecia
               return;
            Form formatka = ((Form)sender);
            formatka.SetDesktopLocation(formatka.DesktopLocation.X - (Convert.ToInt32(label6.Text) - e.X), formatka.DesktopLocation.Y - (Convert.ToInt32(label7.Text) - e.Y));

        }

Pozostało 580 znaków

2006-11-15 22:53
0

No dobra...

Gdziekolwiek w klasie, poza metodami piszesz:


int x,y;
bool mouseDown = false;


To sie nazywa skladowe.

a pozniej:
<code class="c#">
void Form1MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
  mouseDown = true;
  x = e.X;
  y = e.Y;
}
void Form1MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
  mouseDown = false;    
}

void Form1MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
  if(!mouseDown)
    return;
  Form formatka = ((Form)sender);
  formatka.SetDesktopLocation(formatka.DesktopLocation.X - (x - e.X), formatka.DesktopLocation.Y - (y - e.Y));
}

You need to learn how to walk
before you can run

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0