Merhaba ben Visual Studio'da C#'den program tasarlıyorum. Flatsize'ı flat yaparak tasarladım. Fakat tek problemim var o da programı hiçbir yere oynatamıyorum. Mouse ile dol tık basılı tutup sürüklemeye çalışıyorum. Normal olarak ama olmuyor. Ne yapabilirim?
Is there a way to make a form that has no border (FormBorderStyle is set to "none") movable when the mouse is clicked down on the form just as if there was a border?
stackoverflow.com
Takıldığınız bir nokta olursa sormaktan çekinmeyin, yardımcı olmaya çalışırım.
"mouseDown" gördüğünüz gibi bir bool değişkeni. Mouse tuşuna bastığınızda MouseDown eventi tetiklenip "mouseDown" değişkeni true yapıyor. Eğer o değişken true değilse MouseMove eventinin içindeki kodlar çalışmıyor. Böylece MouseMove eventi her tetiklendiğinde (mouse hareket ettiğinde tetiklenir) form kaymıyor, sadece mousea basılı tutulduysa kayıyor. Mouse bırakıldığında MouseUp tetikleniyor ve bu değer tekrar false oluyor.
"lastLocation" ise Mouse tuşuna en son bastığınız noktayı kaydediyor, böylece sizin mouse'u ne kadar kaydırdığınız ölçülüyor.
Bu değişkenleri o eventlerin herhangi birinin üstüne (dışına) vs. yazabilirsiniz. Üç event için de ortak olduğundan birinin içine yazmamalısınız.
Kodda hata göremedim, zaten hata veriyor dememişsiniz. Tahmin ediyorum, siz kodu direkt kopyala-yapıştır ile programa attınız. Eğer böyle yaptıysanız;
O fonksiyonlar bir event gibi çalışmıyor çünkü tetiklenmiyorlar. Siz bir butona çift tıklayarak event oluşmasını sağladığınızda aslında Visual Studio formun tasarım koduna oluşturduğu fonksiyonu event olarak atıyor. Siz sadece kodu attığınızda bu olmuyor. Bizim o fonksiyonun event olduğunu ve hangi event olarak atanacağını, yani ne zaman tetikleneceğini belirmemiz lazım.
Bunu arayüzden yapmanın yolu şu: Sağ altta Properties olan, formdaki araçların özelliğini belirttiğimiz noktadan Event sekmesini "Şimşek" işaretine tıklayarak açın. Orada gerekli eventleri bulup fonksiyon adlarını yazın. Şu şekilde olmalı:
Fonksiyon adlarını doğru yazdığınızdan emin olun, yoksa düzgün çalışmayacaktır.