Всем привет! Бывает при разработке программы, мы можем создать не стандартную форму приложения, или отключить границы окна. В таком случаи у нас загрузиться программа но мы не сможем ее двигать.
Для того что бы создать форму в качестве картинки вам нужно использовать изображение в Background или если у вас геометрическая фигура в виде формы тогда следующий код:
1 |
Title="MainWindow" Height="450" Width="800" AllowsTransparency="True" WindowStyle="None" Background="{x:Null}" MouseLeftButtonDown="Window_MouseLeftButtonDown" > |
Как мы видим Background просто присваиваем Null если этого не сделать будет виден фон формы.
Решение WPF:
Достаточно обработать событие при нажатии левой кнопкой мыши по форме и вызвать всего лишь один метод DragMove(); который позволит перетаскивать окно за любую область.
1 2 3 4 5 |
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { // Для перетаскивания окна за любую область. DragMove(); } |
Альтернативное решение.
Для перемещения окна без формы заголовка можем воспользоваться winapi. Нам так же необходимо создать обработчик при нажатии кнопки мыши. Целый листинг кода ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
[DllImport("user32", CharSet = CharSet.Auto)] internal extern static bool PostMessage(IntPtr hWnd, uint Msg, uint WParam, uint LParam); [DllImport("user32", CharSet = CharSet.Auto)] internal extern static bool ReleaseCapture(); const uint WM_SYSCOMMAND = 0x0112; const uint DOMOVE = 0xF012; const uint DOSIZE = 0xF008; public Form1() { InitializeComponent(); // this.FormBorderStyle = FormBorderStyle.None; // this.MouseDown += new MouseEventHandler(Form1_MouseDown); // this.MouseDown += new MouseEventHandler(label1_MouseDown); this.FormBorderStyle = FormBorderStyle.None; this.MouseDown += new MouseEventHandler(Form1_MouseDown); } private void Form1_MouseDown(object sender, MouseEventArgs e) { ReleaseCapture(); PostMessage(this.Handle, WM_SYSCOMMAND, DOMOVE, 0); } |
Такой пример можно использовать и для Winform приложений.