That's correct, this is not the Right Way™. Effective Winforms programming strongly relies on inheritance to let the usual benefits of object-oriented programming pay off. Add a class to your project and paste this code:
using System;
using System.Windows.Forms;
public class OvalLabel : Label {
protected override void OnResize(EventArgs e) {
using (var path = new System.Drawing.Drawing2D.GraphicsPath()) {
path.AddEllipse(0, 0, this.Width, this.Height);
this.Region = new System.Drawing.Region(path);
}
base.OnResize(e);
}
}
Compile and you get the new control on the top of the toolbox. Use it in your designs, replacing existing Label controls where appropriate. Quickest way to do that is with Search+Replace. You probably want a constructor to set the default for some properties. And note that no code is required in the rest of your app at all.
Note the other benefits, it still works correctly when you resize the labels and you get the WYSIWYG view in the designer. And you'll now also have a decent shot at fixing the other problems you have to address, like the Text getting clipped by the oval. Or not use the Region property at all but draw a much better looking anti-aliased oval in an override for OnPaintBackground(). Etcetera.