2017-08-15 9 views
-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; 
    } 
    
+0

正確に同じ縮尺で測定されます。しかし、彼らは同じ起源から置かれませんでした。フォームは、画面が置かれている場所に相対的な位置を持ちます。テキストボックスは、テキストボックスが置かれているコンテナを基準にしています。 – DonBoitnott

答えて

0

私はここで質問は表示されませんが、テキストボックスとフォームは両方ともピクセルで測定されています。あなたが気にする必要があるのは、フォームClientSizeまたはClientRectangle(どちらもピクセル単位です)です。

フォームが自動サイズ調整されていない場合は、フォームのLoadイベントでSetClientSizeCore(width、height)を呼び出すことができます。幅と高さは、すべてのtexstboxを保持する "ボックス"のサイズです。

関連する問題