ho usato le soluzioni di Don Kirkby e Matthew Ferreira e ha creato la mia soluzione che unisce i due. Ho aggiunto uno StatusStrip chiamato "resizeHandle", reso delle dimensioni di 20x20 pixel e ascoltato i suoi eventi.
public class CustomForm : Form
{
private const int WmNcLButtonDown = 0xA1;
private const int HtBottomRight = 17;
private const int wmNcLButtonUp = 0xA2;
private bool isResizing = false;
[DllImport("user32.dll")]
private static extern int ReleaseCapture();
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hwnd, int msg, int wparam, int lparam);
private void resizeHandle_MouseDown(object sender, MouseEventArgs e)
{
isResizing = true;
}
private void resizeHandle_MouseMove(object sender, MouseEventArgs e)
{
if (isResizing)
{
// Check if we have released the Left mouse button
isResizing = (e.Button == MouseButtons.Left);
ReleaseCapture();
if (isResizing)
{
SendMessage(Handle, wmNcLButtonDown, HtBottomRight, 0);
}
else
{
// Left Mouse button was released, end resizing.
SendMessage(Handle, wmNcLButtonUp, HtBottomRight, 0);
}
}
}
Sì, ho implementato la ridimensionamento nello stesso modo pochi giorni fa. Ma penso che dovrei selezionare la tua risposta perché sei stato il primo a postare qui. –