none
動的にボタンを追加する方法 RRS feed

  • 質問

  • vb2012のwindows store アプリを作っているのですが、

    Private testButtons() As Button
            Protected Overrides Sub LoadState(navigationParameter As Object, pageState As Dictionary(Of String, Object))
            Me.testButtons = New Button(14) {}
            Dim i As Integer
            For i = 0 To Me.testButtons.Length - 1
                'インスタンス作成
                Me.testButtons(i) = New Button
                'プロパティ設定
                Me.testButtons(i).Name = "Button" + i.ToString()
                Me.testButtons(i).Content = i.ToString()
                Me.testButtons(i).Width = 30
                Me.testButtons(i).Height = 30
                Me.testButtons(i).Margin = New Thickness(CDbl(i) * 30, 30, 0, 0)
    
            Next i

    まではやったのですが、画面に表示することができません

    vb2010では

    Me.controls.AddRange(Me.testButtons)

    でいけたのですがvb2012ではないようです

    仮に、testgridというgridの中に表示させるにはどうすればよろしいのでしょうか。


    2013年6月29日 10:19

回答

すべての返信

  • 手元に実行環境が無いのですが、多分、こんな感じでになると思います。

    Me.testGrid.Children.Add(Me.testButtons(i))
    • 回答としてマーク shocho0101 2013年6月29日 13:08
    2013年6月29日 11:10
  • 細かいことで申し訳ないですが、念のため。

    以前に使えていた Controls.AddRange が使えない理由は、VB のバージョンではなく、作成しているプロジェクトの種別に起因します。
    Controls.AddRange でコントロールを追加することは 「Windows フォームアプリケーション」 のプロジェクトでは使えます。これ以外の「WPF アプリケーション」や「Windows ストアアプリケーション」といったプロジェクトではクラスの体系が異なるので使うことができません。

    今回の Controls.AddRange の件以外でもいろいろと違う部分が出てくると思いますので、「バージョンが違うから使えない」と考えずに、「ストアアプリではどうすればできるのか」という視点で調べていきましょう。

    2013年6月30日 10:37
    モデレータ