ㄚ嘉 發問時間: 電腦與網際網路程式設計 · 1 0 年前

vb6 動態list

各位大大好!

我利用Set list3 = Controls.Add("VB.ListBox", "List3") '動態載入List

這個載入了一個動態的list,然後執行一個計算式將文字都放在這個list3中,可是我在執行一次的話,就會出現錯誤訊息:已有一名為list3的控制項存在。

問題1:我應該在按command執行一程式前,先把我開啟的list關掉呢?

問題2:假設如果我要把原本的動態list3,給顯示出來,應該怎麼做呢?(包括設定list的長、寬、及位置~~~等)

已更新項目:

不好意思!

我知道已有list3了,所才要問如何移除!

我有測試了!但不行,出現了錯誤訊息

controls.remove 使用必需用controls.add方法所加入的控制項才用使用(出現錯誤訊息)

2、屬性應該怎樣設定呢?可以詳細點嗎?因為我是初學者,所以要麻煩你!謝謝!

2 個已更新項目:

謝謝豬大大!我測試完成可行了!

也謝謝鴨子,及W.J.S大師的意見!

另外提姆我也想試試你的方法,是不是要先設一個靜態的LIST,可是我的前提是一開始我不要有LIST,是在中途執行程式才出現,不知道你的方法可行嗎?

如果可是的話請你在指導一下,我也學習一下不一樣的方式!看那個好用!

4 個解答

評分
  • 1 0 年前
    最佳解答

    在執行一次的話,就會出現錯誤訊息:已有一名為list3的控制項存在。

    因為已經有 List3 存在了啊~

    問題1:我應該在按command執行一程式前,先把我開啟的list關掉呢?

    Controls.Remove 用來移除元件~

    問題2:假設如果我要把原本的動態list3,給顯示出來,應該怎麼做呢?(包括設定list的長、寬、及位置~~~等)

    Controls.Add後~ 要設定屬性 Heigh , Width , Top , Left , Visible

    2008-08-25 01:54:40 補充:

    靜態方式的不能Remove啊~

    動態產生就要避免跟靜態物件的名稱重覆~

    指定屬性不會??? 你應該會吧~

    List.屬性 = xxxx

    2008-08-25 22:07:18 補充:

    用 load 前提是要先有一個陣列控制項~

    不想出現用 Visible 屬性就可以~

  • W.J.S.
    Lv 7
    1 0 年前

    應該是你在設計階段就有放進一個List3的物件在表單裡面,所以用add & remove都沒辦法,詳細檢查一下吧.

    For Each i In Controls

      Debug.Print TypeName(i), i.Name

    Next

  • 鴨子
    Lv 6
    1 0 年前

    Set list3 = Controls.Add("VB.ListBox", "List3")

    是VB6

  • 提姆
    Lv 5
    1 0 年前

    我個人習慣用控制項陣列'+Load來做這件事,

    首先,先把List3.Index設成0, 使List3變成控制項陣列,

    然後程中寫

    Load List3(1)

    就可以了。

     

    用Load產生的動態控制項可用Unload移除:

    Dim olst as ListBox

    For Each lLst in List3

     if olst.Index <> Then Unload olst

    Next

    2008-08-25 06:38:20 補充:

    使用Load產生的動態控制項會複制項會直接複制原陣列中的靜態控制項,

    即List(0)的各項屬性,連Top/Left'height/Width都一模一樣,

    也就是說,會疊在一起。

    把能在Form上顯示,至少要把動態控制項移一下

    List3(1).Visible = True

    List3(1).Top = List3(0).Top + List3(0).Heigth

    2008-08-25 08:43:28 補充:

    不好意思,一開始忘了講,我的是VB6的語法。

    2008-08-29 11:12:43 補充:

    我的需要先有一個靜態的List3(0)才行。

還有問題?馬上發問,尋求解答。