none
[VB 2008] 請問表單執行初始化問題 RRS feed

  • 問題

  • 大大好
    小弟在這邊又有一個問題
    當我在執行表單時
    因為我有設計兩個checkedlistbox
    裡面有設計在checkedlistbox 1溝選後checkedlistbox 2則會產生新的項目
    問題為
    我想設計一個按鈕
    在按下此按鈕後,能恢復成此表單最初始的執行畫面
    即之前產生的新項目都不會出現的狀態
    程式改如何撰寫呢?
    感謝大家的回覆

    2009年5月26日 下午 07:33

解答

  • 小弟有幾個想法:

    1. 裡面有設計在checkedlistbox 1溝選後checkedlistbox 2則會產生新的項目---->

    2.在按下此按鈕後,能恢復成此表單最初始的執行畫面,即之前產生的新項目都不會出現的狀態

    所以依照以上所敘述,你的目的只是把 checkedlistbox 2 所產生的新項目清除掉。
    並把checkedlistbox 12的勾選狀態全部取消而已。參考如下 我用的是VS2005
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Me.CheckedListBox1.ClearSelected()'將第一個所有的選取狀態取消
    
            Me.CheckedListBox2.Items.Clear()'清空第2個的Item,所新增出的有項目
    
        End Sub
    
    
    • 已提議為解答 bauannModerator 2009年5月30日 下午 07:02
    • 已標示為解答 yan0937 2009年5月31日 上午 07:17
    2009年5月27日 上午 02:01

所有回覆

  • 希望下列範例程式對您有幫助。

     enum ChildType
            {
                StringType, IntType
            };
    
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack) 
                    ChkBox1Init(CheckBoxList1);
            }
    
            private void ChkBox1Init(CheckBoxList chkbox)
            {
                        chkbox.Items.Clear();
                        for (int i = 0; i < 2; i++)
                        {
                            chkbox.Items.Add(new ListItem(i.ToString()));
                        }
            }
    
            private void ChildChkBoxInit(CheckBoxList chkbox, ChildType chtype)
            {
                chkbox.Items.Clear();
                switch (chtype)
                {
                    case ChildType.StringType:
                        for (int i = 0; i < 5; i++)
                            chkbox.Items.Add(new ListItem(i.ToString("c")));
                        break;
                    case ChildType.IntType:
                         for (int i = 0; i < 3; i++)
                            chkbox.Items.Add(new ListItem(i.ToString()));
                        break;
    
                }
            }
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                ChkBox1Init(CheckBoxList1);
                CheckBoxList2.Items.Clear();
            }
    
            protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                switch (this.CheckBoxList1.SelectedIndex)
                {
                    case 0:
                        ChildChkBoxInit(CheckBoxList2,ChildType.StringType);
                        break;
                    case 1:
                        ChildChkBoxInit(CheckBoxList2, ChildType.IntType);
                        break;
                }
            }

    2009年5月27日 上午 01:15
  • 小弟有幾個想法:

    1. 裡面有設計在checkedlistbox 1溝選後checkedlistbox 2則會產生新的項目---->

    2.在按下此按鈕後,能恢復成此表單最初始的執行畫面,即之前產生的新項目都不會出現的狀態

    所以依照以上所敘述,你的目的只是把 checkedlistbox 2 所產生的新項目清除掉。
    並把checkedlistbox 12的勾選狀態全部取消而已。參考如下 我用的是VS2005
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Me.CheckedListBox1.ClearSelected()'將第一個所有的選取狀態取消
    
            Me.CheckedListBox2.Items.Clear()'清空第2個的Item,所新增出的有項目
    
        End Sub
    
    
    • 已提議為解答 bauannModerator 2009年5月30日 下午 07:02
    • 已標示為解答 yan0937 2009年5月31日 上午 07:17
    2009年5月27日 上午 02:01