BillWoodruff
Вот одно решение, которое приводит к отсутствию границы формы и делает форму повторно значительной:
1. Установите 'FormBorderStyle в' FixedToolWindow и спрячьте другие обычные вещи.
2. Этот пример не включает в себя код для перемещения формы; это остается для вас, чтобы написать.
using System;
using System.Drawing;
using System.Windows.Forms;
namespace YourNameSpace
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
const int MoveZoneSize = 16;
const int ReSizeThreshold = 4;
private Rectangle scrnBounds;
private Rectangle moveZone;
// for use when making the Form movable
private int mdx, mdy, dx, dy;
private bool mouseIsUp = true;
private void Form1_Load(object sender, EventArgs e)
{
UpdateScreenSize();
}
private void UpdateScreenSize()
{
moveZone = new Rectangle(0,0,MoveZoneSize,MoveZoneSize);
scrnBounds = this.DisplayRectangle;
moveZone.Offset(scrnBounds.Right - MoveZoneSize, scrnBounds.Bottom - MoveZoneSize);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (ModifierKeys == Keys.Alt && e.KeyCode == Keys.Escape)
{
this.MouseMove -= Form1_MouseMove;
this.Close();
}
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (moveZone.Contains(e.Location))
{
mdx = e.X;
mdy = e.Y;
this.MouseMove += Form1_MouseMove;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
this.MouseMove -= Form1_MouseMove;
UpdateScreenSize();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
dx = Math.Abs(e.X - mdx);
dy = Math.Abs(e.Y - mdy);
if (dx < ReSizeThreshold && dy < ReSizeThreshold) return;
this.Width = e.X;
this.Height = e.Y;
}
}
}
Записи:
1. создается прямоугольник (квадрат) 'moveZone, который охватывает область нижнего правого края формы размера 'MoveZoneSize.
2. определен порог "демпфирования" ReSizeThreshold событий перемещения мыши. это может сделать изменение размера формы визуально более плавным.
3. мышь вниз обнаружена,и если местоположение мыши вниз находится в границах зоны перемещения, обработчик перемещения мыши подключен к форме.
4.в событии перемещения мыши вычисляется Дельта перемещения мыши, и если она меньше 'ReSizeThreshold, то метод завершается. если дельта больше, то форма изменяется, и текущие границы формы и границы прямоугольника moveZone пересчитываются заново.
Прочие комментарии:
1. в зависимости от компьютера, видеокарты, памяти и т. д., а также от возможной сложности элементов формы и использования в них якоря и док-станции, отступа, поля и т. д. Свойства: визуальное качество изменение размера формы мышью во время выполнения ... может варьироваться. Конечно, вы должны установить для свойства формы 'DoubleBuffered значение 'true.
BillWoodruff
Он работает на моей машине под управлением Win 10. Проверьте, чтобы убедиться, что вы установили:
1. FormBorderStyle to ' FixedToolWindow
2. ShowIcon to ' None
3. Обивка на 0,0,0,0
4. SizeGripStyle to ' None
Вы настроили внешний вид окна в Win 10 ?
твое здоровье, Билл