-1
私は、テキストボックスの配列を作成するクラスのテキストボックスを作成する関数を使用しています。いくつかのデバッグの後、フォームの高さと幅がテキストボックスの幅と高さとは異なるスケールで測定されることに気付きました。変数の 値:フォームの高さと幅がTextBoxの高さと異なって測定される
- 高さ= 50
- 幅= 50
- NUMCOLS = 10
- numRowsの数= 10
- vertCellOffset = 50
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; }
正確に同じ縮尺で測定されます。しかし、彼らは同じ起源から置かれませんでした。フォームは、画面が置かれている場所に相対的な位置を持ちます。テキストボックスは、テキストボックスが置かれているコンテナを基準にしています。 – DonBoitnott