How to add border to user control in design view?

Transparent images are pure evil in Windows Forms, so I created my own management class to handle them. The designer does not show my control when he is empty. I would like to add a thin border, but only in the design view (and when the border is not added by the user). How can I do it?

My class:

class TransparentImage : Control { public Image Image { get; set; } protected Graphics graphics; public string FilePath { get; set; } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT return cp; } } protected override void OnPaintBackground(PaintEventArgs pevent) { // Don't paint background } protected override void OnPaint(PaintEventArgs e) { // Update the private member so we can use it in the OnDraw method this.graphics = e.Graphics; // Set the best settings possible (quality-wise) this.graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; this.graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear; this.graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; this.graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; if (Image != null) { // Sets the images' sizes and positions var width = Image.Size.Width; var height = Image.Size.Height; var size = new Rectangle(0, 0, width, height); // Draws the two images this.graphics.DrawImage(Image, size); } } } 
+5
source share
1 answer

Check if (this.DesignMode) in OnPaint and call DrawRectangle .

You can use new Pen(SystemColors.ActiveBorder) { DashStyle = DashStyle.Dot }

+6
source

Source: https://habr.com/ru/post/1239742/


All Articles