簡體   English   中英

如果選中復選框,我如何將“項目”添加到 arraylist?

[英]How can I add “item” to arraylist, if checkbox is marked?

我對 c# 還是有點陌生,我目前正被困在一個項目中。 所以基本上我目前有一個由 5 個文本框、一個復選框和一個按鈕組成的表單。 當用戶填寫信息並在不勾選復選框的情況下提交時,信息將存儲在 arraylist 中。 如果用戶注冊為 traindriver,並標記 traindriver 復選框並提交,則需要將“id”傳遞給 arraylist,以及所有其他信息,如名字和姓氏等。

目前我有一個人 class,它工作得很好。 然后我有一個名為 traindrivers 的子類,它由一個“id”變量組成,每次注冊新的 traindrivers 時都會“遞增”,因為它們不能具有相同的編號。 那么,如果注冊的人被標記為火車司機,我該如何將此“id”添加到“personsArrayList”中?

形式

我嘗試使用添加新人員時使用的過程。 但由於某種原因,我找不到包含 id 的變量。

public class Persons
{
    //instance variables
    private string firstname;
    private string lastname;
    private string email;
    private int age;


    //constructor
    public Persons(string firstname, string lastname, string email, int age)
    {
        this.firstname = firstname;
        this.lastname = lastname;
        this.email = email;
        this.age = age;
    }

    public string FirstName
    {
        get { return firstname; }
        set { firstname = value; }
    }
    public string LastName
    {
        get { return lastname; }
        set { lastname = value; }
    }
    public string Email
    {
        get { return email; }
        set { email = value; }
    }
    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public override string ToString()
    {
        return FirstName + " " + LastName + " - " + Email + " - " + Age + ".";
    }

}

public class Traindrivers : Persons
{
    protected int id;
    protected static int mycounter;

    public Traindrivers(int id, string firstname, string lastname, string email, int age) : base(firstname, lastname, email, age)
    {
        mycounter++;
        id = mycounter;
    }


    public int LicensNumber
    {
        get { return id; }
        set { id = value; }
    }

    public override string ToString()
    {
        return LicensNumber + FirstName + LastName + Email + Age;
    }
}

------------ aspx 頁面 ---------

protected void Button1_Click(object sender, EventArgs e)
    {
        Persons p1 = new Persons(TextBoxFirstName.Text, TextBoxLastName.Text, TextBoxEmail.Text, Convert.ToInt32(TextBoxAge.Text));
        personsArrayList.Add(p1);

        //Session["trainpersons"] = personsArrayList;
    }

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
      // When the checkbox is marked, add "id" to the arraylist
    }

    protected void ShowButton_Click(object sender, EventArgs e)
    {
        ListBox1.Items.Clear();
        for (int i = 0; i < personsArrayList.Count; i++)
        {
            ListBox1.Items.Add(personsArrayList[i].ToString());
            Console.WriteLine(i);
        }
    }
}

protected void trainBtn_Click(object sender, EventArgs e)
    {
        ListBox1.Items.Clear();
        for (int i = 0; i < traindriversArrayList.Count; i++)
        {
            ListBox1.Items.Add(traindriversArrayList[i].ToString());
        }
    }

預期的結果是只要是注冊的火車司機就添加“id”。 當然也可以將go 放入personsArrayList。

我發現了這種方法:在運行時使用 addrange 但設置一個完整的項目列表

  string[] days = new[] { "Sunday", "Monday", "Tuesday" };
  checkedListBox1.Items.AddRange(days);

好的,基於這個新的編輯,只要做一些小的改動,一切都會好起來的。 首先你不需要任何計數器,static id 就足夠了,因為你想增加那個 id,它應該被初始化。 並且由於它將自動工作,因此無需將 id 作為參數

    public class Traindrivers : Persons
    {
        protected int id=0;
    //                   ^^
        protected static int mycounter=0;

        public Traindrivers(/*int id,*/ string firstname, string lastname, string email, int age) : base(firstname, lastname, email, age)
//                          ^^^^^^^^^
        {
            mycounter++;
            id = mycounter;
        }


        public int LicensNumber
        {
            get { return id; }
            set { id = value; }
        }

        public override string ToString()
        {
            return LicensNumber + FirstName + LastName + Email + Age;
        }
    }

當您想使用它時,在 Button1_Click 方法中,首先檢查該復選框是否已選中,然后根據該復選框進行操作,如下所示:

protected void Button1_Click(object sender, EventArgs e){
    if(CheckBox1.checked==true){//information is about a traindriver
            Traindrivers t1 = new Traindrivers (TextBoxFirstName.Text, TextBoxLastName.Text, TextBoxEmail.Text, Convert.ToInt32(TextBoxAge.Text));
            traindriversArrayList.Add(t1);
    }
    else{//information in textboxes is not about traindriver
            Persons p1 = new Persons(TextBoxFirstName.Text, TextBoxLastName.Text, TextBoxEmail.Text, Convert.ToInt32(TextBoxAge.Text));
            personsArrayList.Add(p1);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM