我正在构建一个程序,您可以根据一个文本框创建矩形并修改它们的长度,该文本框应该出现在矩形的上方,并且显示为宽度的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轴的相同位置。
屏幕截图:
这可能只是愚蠢的我再次做,我道歉,如果是这样,但任何帮助将是伟大的。谢谢你们!
答案 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);
或类似的东西