In your button1_click event,
Code:
this.obj_pos.X = r * (float)Math.Cos(ctr * Math.PI / 180.0f) + circle_center.X;
this.obj_pos.Y = r * (float)Math.Sin(ctr * Math.PI / 180.0f) + circle_center.Y;
For every graphical object in C#, it's position is defined as the top-leftmost point (well im not sure but at least for WinForms its defined this way). Which means for circular objects, it's position isn't defined as its centre but rather by the top-leftmost point of the square it is bounded to. So we'll have to offset its position by half the diameter for both X and Y coordinates to get the coordinates of the coordinates of the centre.
In short,
Centre = (Position.X + 0.5*Radius, Position.Y + 0.5*Radius)
= (Position.X + 0.5*Width, Position.Y + 0.5*Height)
Some simple math (I.E. deducting the offsets from both sides) will give :
Code:
this.obj_pos.X = r * (float)Math.Cos(ctr * Math.PI / 180.0f) + circle_center.X - this.obj_pos.Width / 2;
this.obj_pos.Y = r * (float)Math.Sin(ctr * Math.PI / 180.0f) + circle_center.Y- this.obj_pos.Height / 2;
The same applies for ovals as well in case you're ever gonna work with ellipses :)
BTW, I would strongly recommend you to organize your tabindexes for the controls (it's jumping all over the place now) or disable it completely by setting tabstop = false