- PR -

動的にタブページ内にリストビューを追加していきたい

1
投稿者投稿内容
ゆず
会議室デビュー日: 2005/05/29
投稿数: 18
投稿日時: 2005-11-02 11:12
こんにちは。
現在vb.netでプログラムを作成しているのですが
やり方がわからないことがあります。

あるボタンを押すとTabFormsにページが追加され、
追加されたページ内に同じ内容のリストビューを
同じ位置に1つずつ貼り付けていきたいのですが
(何度もボタンを押すと、同じ内容のTabPageがTabFormsにどんどん追加される)

ボタンを押すとTabForms内にTabPageが追加されるところまではできたのですが
そこにどのようにリストビューを追加していいかわかりません。

Private Sub cmdAddForm_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdAddForm.Click

Dim TabPages As TabPage() = New TabPage() {}
Static mpagecount As Integer

ReDim Preserve TabPages(mPageCount)

TabPages(mPageCount) = New TabPage()
Me.TabForms.TabPages.Add(TabPages(mPageCount))
TabPages(mPageCount).Text = mPageCount + 1 & "枚目"
end sub

どなたかやり方がわかる方、教えていただけないでしょうか。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2005-11-02 12:26
Tabページの中にListViewを追加すればいいんじゃないかな
コード:
 TabPages(mPageCount).Controls.Add(リストビュー)


まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2005-11-02 14:19
引用:

あるボタンを押すとTabFormsにページが追加され、
追加されたページ内に同じ内容のリストビューを
同じ位置に1つずつ貼り付けていきたいのですが

そこにどのようにリストビューを追加していいかわかりません。


かずくんさんのおっしゃるとおりですが、NewしてAddして位置とサイズを設定して、となるでしょう。

中身が同じとありますが、内容の更新を含めて完全に同期表示するのであれば
ひとつのリストビューでまかなったほうがメモリにやさしいでしょう。

コード:
Private Sub cmdAddForm_Click(ByVal sender As System.Object, _
             ByVal e As System.EventArgs) Handles cmdAddForm.Click
        
   Dim TabPages As TabPage() = New TabPage() {}
   Static mpagecount As Integer
       
   ReDim Preserve TabPages(mPageCount)

   TabPages(mPageCount) = New TabPage()
   Me.TabForms.TabPages.Add(TabPages(mPageCount))
   TabPages(mPageCount).Text = mPageCount + 1 & "枚目"
end sub


#コードを見ていくつか。。。
TabPages変数はローカルですのでクリックするたびに新しいインスタンスになります。
使い道も不明だしそのコードだと必要なものではありませんよね。
mPageCountは値を保持しているので(カウントアップが見当たらないけど。。。)
TabPagesの配列数はそれなりになりますが、中身はそのときにNewしたものだけという状態になってます。
また、mPageCountがStaticになってますが、フォーム内で参照する可能性大ですので
モジュールスコープにしたほうが良いでしょう。
あと、細かいことですが、
Countは数であり、Indexは番目です。コードではmPageCountがIndexとして使われています。
mPageCountは初期値がゼロで+1していくのが自然ではないでしょうか。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-02 14:34
PageCount は必要なんでしょうか?

コード:

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click    
        Dim hTabPage As New System.Windows.Forms.TabPage()

        Me.TabControl1.TabPages.Add(hTabPage)

        Dim hListView As New System.Windows.Forms.ListView()

        hListView.Size = New System.Drawing.Size(64, 64)
        hListView.Location = New System.Drawing.Point(16, 32)

        Me.TabControl1.TabPages(Me.TabControl1.TabCount - 1).Controls.Add(hListView)
    End Sub


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ゆず
会議室デビュー日: 2005/05/29
投稿数: 18
投稿日時: 2005-11-02 14:42
あ、そうですよね。
すみません。できました。
ありがとうございました。
ゆず
会議室デビュー日: 2005/05/29
投稿数: 18
投稿日時: 2005-11-02 14:56
新しいお返事に気がつきませんでした。
まどかさん、じゃんぬねっとさん、丁寧なご回答ありがとうございました。
勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)