0

フォームに 3 つのコントロールを追加したいだけです。最初の 2 つは表示されますが、3 番目は表示されません。なぜこの動作が起こっているのかわかりません。.bringToFront() を使用してみましたが、同じ結果になります。Me.controls.setChildIndex() も使用してみましたが、どちらも役に立ちません。

私は途方に暮れています。私は何か間違ったことをしているに違いない。助けてください。

ありがとう。

これは私のコードです:

' Add the label
' ------------------
  Dim menu_label As New Label
  menu_label.Text = "Menu"
  menu_label.Location = New Point(50, 20)
  menu_label.Width = 50
  menu_label.Font = New Font(main_font, main_font_size, FontStyle.Regular)
  menu_label.ForeColor = Color.White
  Me.Controls.Add(menu_label)

' create the image
' ---------------
  Dim logo As New PictureBox
  Dim logo_image As Image
  logo_image = My.Resources.logo
  logo.Image = logo_image
  logo.Width = 30
  logo.Height = 30
  logo.Left = 5
  logo.Top = 0
  Me.Controls.Add(logo)

' add a line
' ----------
  Dim line As New Panel
  line.Height = 1
  line.Width = Me.Width
  line.BackColor = Color.Red
  line.Location = New Point(0, 32)
  Me.Controls.Add(line)


' end code
' ---------------------------------

どの順序で並べても、最初の 2 つの項目だけが表示されます。そのため、ロゴとメニュー ラベルのみ、ロゴとラインのみ、ラインとメニュー ラベルのみのいずれかを取得します。それはナッツです!

だから私は試しました:

Me.Controls.SetChildIndex(logo, 0)
Me.Controls.SetChildIndex(menu_label, 1)
Me.Controls.SetChildIndex(line, 2)

レベル 2 に割り当てられたアイテムは表示されません。

4

1 に答える 1

0

私もテストしましたが、うまくいきました。結果を見やすくするために、フォームの背景色を黒に変更しました。

レイアウトトラブルシューティングテスト

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    ' Add the label
    ' ------------------
    Dim menu_label As New Label
    menu_label.Text = "Menu"
    menu_label.Location = New Point(50, 20)
    menu_label.Width = 50
    'menu_label.Font = New Font(main_font, main_font_size, FontStyle.Regular)
    menu_label.ForeColor = Color.White
    Me.Controls.Add(menu_label)

    ' create the image
    ' ---------------
    Dim logo As New PictureBox
    Dim logo_image As Image
    'logo_image = My.Resources.logo
    'logo.Image = logo_image
    logo.BackColor = Color.Yellow
    logo.Width = 30
    logo.Height = 30
    logo.Left = 5
    logo.Top = 0
    Me.Controls.Add(logo)

    ' add a line
    ' ----------
    Dim line As New Panel
    line.Height = 1
    line.Width = Me.Width
    line.BackColor = Color.Red
    line.Location = New Point(0, 32)
    Me.Controls.Add(line)

    Me.BackColor = Color.Black
End Sub

あなたのフォームには他に何がありますか?おそらく、スクリーンショットを投稿できますか?

于 2013-06-21T15:20:19.603 に答える