1

我有一个类继承了一个面板,我正在向该面板添加一个组框。该组框现在包含几个文本框。我想通过使用组框的 AutoSize 属性和组框的 Padding 属性使文本框在组框中水平和垂直居中。这是我的尝试:

Imports System.Drawing

Public Class pnlItemMstr_A_OSI
    Inherits Panel

    Public Sub New(ByRef ItemMstr_DS As DataSet, ByVal padding As Integer)
        MyBase.New()

        Dim drItemMstr As DataRow = ItemMstr_DS.Tables(0)(0)
        Dim txtHeight As Integer = 26

        ' article numbers
        Dim grpArtNum As New GroupBox
        Dim txtARTC_NUM_DOM_C As New TextBox
        Dim txtARTC_NUM_CAN_C As New TextBox

        With txtARTC_NUM_DOM_C
            .Text = drItemMstr("ARTC_NUM_DOM_C").ToString
            .Size = New Size(200, txtHeight)
            .Location = New Point(0, 0)
        End With

        With txtARTC_NUM_CAN_C
            .Text = drItemMstr("ARTC_NUM_CAN_C").ToString
            .Size = New Size(200, txtHeight)
            .Location = New Point(0, txtHeight)
        End With

        With grpArtNum
            grpArtNum.Text = "Article Number"
            grpArtNum.Padding = New Padding(padding)
            grpArtNum.Controls.Add(txtARTC_NUM_DOM_C)
            grpArtNum.Controls.Add(txtARTC_NUM_CAN_C)
        End With

        Me.Controls.Add(grpArtNum)

    End Sub

End Class

我最终得到的是丑陋的,而不是我期望发生的,请注意组框文本是如何被截断的:

在此处输入图像描述

似乎没有正确应用填充,但我确定我只是做错了什么。

4

1 回答 1

1

Padding 属性主要用于 Dock Styled 子控件,因此请尝试在 GroupBox 中添加一个 Dock 填充面板以包含这些 TextBox:

With grpArtNum
  grpArtNum.Text = "Article Number"
  grpArtNum.Padding = New Padding(padding)
  Dim innerPanel As New Panel With {.Dock = DockStyle.Fill}
  innerPanel.Controls.Add(txtARTC_NUM_DOM_C)
  innerPanel.Controls.Add(txtARTC_NUM_CAN_C)
  grpArtNum.Controls.Add(innerPanel)
End With
于 2013-10-22T16:41:32.243 回答