I would like to add buttons to side of my windows form on C# (in outside). The buttons should move together as soon as when the window was moved.
For e
I see two options:
Either put the buttons in a separate form and make both forms stick together by coding the Move and maybe Resize events.
Or, simpler, make the Form transparent and remove Border and Title area. I would go for this option.
Here you go:
First you style the Form by:
this.ControlBox = false;this.MaximizeBox = false;this.MinimizeBox = false;this.Text= "";this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;this.BackColor = System.Drawing.Color.Fuchsia;this.TransparencyKey = this.BackColor;Now add to the Form
Panel that fills the right, main portion of the FormButton you want attachedLabel (label1) inside the main Panel, filling the top and holding the form's title textTab control etc..Finally we want to add code to make the form moveable:
using System.Runtime.InteropServices;
..
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
private void label1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
You can look up code to make the window sizeable, too..
You can look up code to give the button a non-rectangular shape using a region. Note that you need to avoid anti-aliased pixels here or else the Fuchsia will shine through.