动态构造的文本框定位

时间:2015-08-20 05:11:20

标签: c# winforms

我正在构建一个程序,您可以根据一个文本框创建矩形并修改它们的长度,该文本框应该出现在矩形的上方,并且显示为宽度的2倍。

到目前为止,使用这个程序,您可以使用鼠标绘制矩形,并且当您释放鼠标时,它会运行一个方法并创建这些动态文本框。

public void mainCounter()
{
     Textbox aboveBox = new TextBox();
     aboveBox.Name = Convert.ToString(_mainRectangle.Width);
     aboveBox.Left = _mainRectangle.Width / 2;
     aboveBox.Top = _mainRectangle.Height + 5;
     panel1.Controls.Add(aboveBox);
}

所以我想要发生的事情应该看起来像一个矩形,一旦绘制了一个文本框悬停在它的头部中心之上,但是我得到的是一个文本框出现在Y轴的一部分上,如果我画的话不同的矩形出现在X轴的不同位置,但它始终位于Y轴的相同位置。

屏幕截图:

enter image description here

这可能只是愚蠢的我再次做,我道歉,如果是这样,但任何帮助将是伟大的。谢谢你们!

1 个答案:

答案 0 :(得分:2)

如果要将文本框置于居中位置,则会出现坐标错误。请注意,您没有位置与矩形的位置相关的文本框(左,上),我认为这是一个错误。

如果您希望某些对象与其他对象相邻绘制,则通常应该执行类似

的操作
A.Left = B.Left + ...
A.Top = B.Top + ...

试试这个

Textbox aboveBox = new TextBox();
aboveBox.Name = Convert.ToString(_mainRectangle.Width);
aboveBox.Width = ...
aboveBox.Left = _mainRectangle.Left + (_mainRectangle.Width - aboveBox.Width) / 2;
aboveBox.Top = _mainRectangle.Top - aboveBox.Height - 5;
panel1.Controls.Add(aboveBox);

或类似的东西