Reghunaath
Reghunaath

Reputation: 121

how to make a textbox with rounded corner in c#?

I was wondering how to make a class for textboxes with rounded corners in c#(visual studio). Could anyone please help me. I found a code online to create it but not able to enlarge(stretch) it

using System.Windows.Forms;
using System.Drawing;
using System;

class round : TextBox
{
    [System.Runtime.InteropServices.DllImport("gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
    private static extern IntPtr CreateRoundRectRgn
    (
        int nLeftRect, // X-coordinate of upper-left corner or padding at start
        int nTopRect,// Y-coordinate of upper-left corner or padding at the top of the textbox
        int nRightRect, // X-coordinate of lower-right corner or Width of the object
        int nBottomRect,// Y-coordinate of lower-right corner or Height of the object
                        //RADIUS, how round do you want it to be?
        int nheightRect, //height of ellipse 
        int nweightRect //width of ellipse
    );
    protected override void OnCreateControl()
    {
        base.OnCreateControl();
        this.Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(2, 3, this.Width, this.Height, 15, 15)); //play with these values till you are happy
    }
}

Upvotes: 5

Views: 19056

Answers (1)

user10216583
user10216583

Reputation:

I found a code online to create it but not able to enlarge(stretch) it.

With this code, the control will be resized (stretched) when you rebuild the project.

To apply that in the designer without rebuilding the project, override the OnResize event instead of the OnCreateControl event.

Replace this:

protected override void OnCreateControl()
{
    base.OnCreateControl();
    this.Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(2, 3, this.Width, this.Height, 15, 15)); //play with these values till you are happy
}

with this:

protected override void OnResize(EventArgs e)
{
    base.OnResize(e);
    this.Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(2, 3, this.Width, this.Height, 15, 15)); //play with these values till you are happy
}

Good luck.

Upvotes: 6

Related Questions