我使用函数为类创建文本框以生成文本框数组,并且我希望将网格居中到表单中。经过一些调试后,我意识到表单高度和宽度的测量尺度与文本框的宽度和高度不同。 变量的值:
horzCellOffset = 50
private TextBox AddNewTextBox()
{
SOSTextBox txtBox = new SOSTextBox();
this.List.Add(txtBox);
hostForm.Controls.Add(txtBox);
txtBox.Height = height;
txtBox.Width = width;
float scrnWidth = hostForm.Width;
float scrnHeight = hostForm.Height;
txtBox.Top = (int)(((int)((Count - 1) / numCols) + 1) * vertCellOffset + (scrnHeight / 2 - ((numRows / 2 + 1) * vertCellOffset)));
txtBox.Left = (int)((((Count - 1) % numCols) + 1) * horzCellOffset + (scrnWidth / 2 - ((numCols / 2 + 1) * horzCellOffset)));
txtBox.ArrayLocation = new Point ((Count - 1) / numCols, (Count - 1) % numCols);
txtBox.Tag = Count;
txtBox.Font = new Font(txtBox.Font.FontFamily, height / 6.0f); // makes font size 1/3 of the height of textBox
txtBox.Text = "\r\n";
txtBox.KeyPress += new KeyPressEventHandler(KeyPressHandler);
return txtBox;
}
答案 0 :(得分:0)
我在这里看不到任何问题,但文本框和表格都是"测量"像素。您需要关注的是表单ClientSize或ClientRectangle(两者都以像素为单位)。
如果您的表单没有自动调整大小,那么在表单Load事件中,您可以调用SetClientSizeCore(width,height),其中width和height是" box"的大小。它包含你所有的texstbox。