如何从阵列列表中删除播放器

时间:2015-11-04 18:37:47

标签: c#

我正在制作一个数据库程序,但没有使用SQL我正在制作一个5人制足球队,并且有2个阵列列表,一个用于玩家详细信息,另一个用于匹配详细信息。我知道如何添加一个新玩家,但我似乎无法删除一个玩家,并想知道是否有人可以提供帮助。

        FootballClub PlayerMemberData;

        PlayerMemberData = new FootballClub(0);
        PlayerMemberData.Firstname = "Daniel";
        PlayerMemberData.Surname = "Whitcombe";
        PlayerMemberData.age = 19;
        PlayerMemberData.Address1 = "7 High Street";
        PlayerMemberData.Address2 = "Trelewis";
        PlayerMemberData.City = "Treharris";
        PlayerMemberData.Country = "Mid Glam";
        PlayerMemberData.Postcode = "CF46 6AB";
        PlayerMemberData.HomeNum = 0;
        PlayerMemberData.MobNum = 0;
        PlayerMemberData.Email = "dan@hotmail.co.uk";
        PlayerMemberData.EmergencyName = "mam";
        PlayerMemberData.EmergencyNum = 424242;

        ClubData.Add(PlayerMemberData);

        PlayerMemberData = new FootballClub(0);
        PlayerMemberData.Firstname = "EFEF";
        PlayerMemberData.Surname = "WhitEWFEWFcombe";
        PlayerMemberData.age = 19;
        PlayerMemberData.Address1 = "7 High FEWF";
        PlayerMemberData.Address2 = "FWEFF";
        PlayerMemberData.City = "FWEFEWF";
        PlayerMemberData.Country = "Mid Glam";
        PlayerMemberData.Postcode = "CF46 3VD";
        PlayerMemberData.HomeNum = 0;
        PlayerMemberData.MobNum = 0;
        PlayerMemberData.Email = "FWEFEW@hotmail.co.uk";
        PlayerMemberData.EmergencyName = "Mam";
        PlayerMemberData.EmergencyNum = 424242;

        ClubData.Add(PlayerMemberData);

        MatchPreformance PlayerPreformanceData;

        PlayerPreformanceData = new MatchPreformance(0);
        PlayerPreformanceData.MinutesPlayed = 32;
        PlayerPreformanceData.Goals = 1;
        PlayerPreformanceData.Penalties = 0;
        PlayerPreformanceData.CardGiven = 'R';

        MatchData.Add(PlayerPreformanceData);

        PlayerPreformanceData = new MatchPreformance(0);
        PlayerPreformanceData.MinutesPlayed = 32;
        PlayerPreformanceData.Goals = 1;
        PlayerPreformanceData.Penalties = 0;
        PlayerPreformanceData.CardGiven = 'Y';

        MatchData.Add(PlayerPreformanceData);

        ShowCurrentMember();
    }

    #region Variables
    FootballClub PlayerMemberData = new FootballClub(0);
    MatchPreformance PlayerPreformanceData = new MatchPreformance(1);
    ArrayList ClubData = new ArrayList();
    ArrayList MatchData = new ArrayList();
    public int CurrentPlayerShown = 0;
    // Path to the file for loading/saving. Note the '@' sign in front of the string. Without it all '\' have to be double '\\'
    string filePathName = @"C:\Users\Clare\Desktop\Football_Data.txt";
    #endregion

    #region DataStructure
    // ==============================The Data Structure=====================================
    [Serializable]
    private struct FootballClub
    {
        //the data types making up the struct
        public string Firstname;
        public string Surname;
        public int age;
        public string Address1;
        public string Address2;
        public string City;
        public string Country;
        public string Postcode;
        public int HomeNum;
        public int MobNum;
        public string Email;
        public string EmergencyName;
        public int EmergencyNum;

        //the "constructor". Fills data structure with default vaules 
        public FootballClub(int x)
        {
            Firstname = "";
            Surname = "";
            age = 0;
            Address1 = "";
            Address2 = "";
            City = "";
            Country = "";
            Postcode = "";
            HomeNum = 0;
            MobNum = 0;
            Email = "";
            EmergencyName = "";
            EmergencyNum = 0;
        }
    }
    [Serializable]
    private struct MatchPreformance
    {
        public int MinutesPlayed;
        public int Goals;
        public int Penalties;
        public char CardGiven;
        public int TotalTime;
        public int TotalGoals;
        public int TotalPenalties;

        public MatchPreformance(int x)
        {
            MinutesPlayed = 0;
            Goals = 0;
            Penalties = 0;
            CardGiven = ' ';
            TotalTime = 0;
            TotalGoals = 0;
            TotalPenalties = 0;
        }
    }
    // ==============================End of Data Structure=====================================
    #endregion

    #region MatchDetails
    private void NewMatch_Butt_Click(object sender, EventArgs e)
    {
        //create a new TabPage
        TabPage newTP = new TabPage();
        //add it to the TabControl
        tabControl1.TabPages.Add(newTP);
        //set the title to 'Match'plus the tab number
        int TabPageNumber = tabControl1.SelectedIndex+1; //adds 1 from the current tab
        tabControl1.TabPages[TabPageNumber].Text = "Match " + (TabPageNumber+1);
        //make it the selected tab
        tabControl1.SelectTab(TabPageNumber);
        DeleteMatch_Butt.Enabled = true;// now that we have something to delete we can enable this button
        //make the new tab page the parent of the panel that holds all the controls
        TabPanel.Parent = tabControl1.SelectedTab; //
    }

    private void DeleteMatch_Butt_Click(object sender, EventArgs e)
    {
        // Removes the selected tab:
        tabControl1.TabPages.Remove(tabControl1.SelectedTab);
        //disable button if only one tabpage left
        if (tabControl1.SelectedIndex < 1)
        {
            DeleteMatch_Butt.Enabled = false;
        }
    }

    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {
        TabPanel.Parent = tabControl1.SelectedTab;
    }

    private void PrevPlayer_Butt_Click(object sender, EventArgs e)
    {
        --CurrentPlayerShown;
        ShowCurrentMember();
        UpdatePrevNextBtnStatus();
    }

    private void NextPlayer_Butt_Click(object sender, EventArgs e)
    {
        ++CurrentPlayerShown;
        ShowCurrentMember();
        UpdatePrevNextBtnStatus();
    }

    private void MinutesPlayed_Num_ValueChanged(object sender, EventArgs e)
    {
        MatchPreformance PlayerPreformanceData = new MatchPreformance(0);
        PlayerPreformanceData = (MatchPreformance)MatchData[CurrentPlayerShown];
        PlayerPreformanceData.MinutesPlayed = (int)MinutesPlayed_Num.Value;
        MatchData[CurrentPlayerShown] = PlayerPreformanceData;
    }

    private void GoalsScored_Num_ValueChanged(object sender, EventArgs e)
    {
        MatchPreformance PlayerPreformanceData = new MatchPreformance(0);
        PlayerPreformanceData = (MatchPreformance)MatchData[CurrentPlayerShown];
        PlayerPreformanceData.Goals = (int)GoalsScored_Num.Value;
        MatchData[CurrentPlayerShown] = PlayerPreformanceData;
    }

    private void PenaltiesScored_Num_ValueChanged(object sender, EventArgs e)
    {
        MatchPreformance PlayerPreformanceData = new MatchPreformance(0);
        PlayerPreformanceData = (MatchPreformance)MatchData[CurrentPlayerShown];
        PlayerPreformanceData.Penalties = (int)PenaltiesScored_Num.Value;
        MatchData[CurrentPlayerShown] = PlayerPreformanceData;
    }

    private void YellowCard_RadioButt_CheckedChanged(object sender, EventArgs e)
    {
        MatchPreformance PlayerPreformanceData = new MatchPreformance(0);
        PlayerPreformanceData = (MatchPreformance)MatchData[CurrentPlayerShown];
        PlayerPreformanceData.CardGiven = 'Y';
        MatchData[CurrentPlayerShown] = PlayerPreformanceData;
    }

    private void RedCard_RadioButt_CheckedChanged(object sender, EventArgs e)
    {
        MatchPreformance PlayerPreformanceData = new MatchPreformance(0);
        PlayerPreformanceData = (MatchPreformance)MatchData[CurrentPlayerShown];
        PlayerPreformanceData.CardGiven = 'R';
        MatchData[CurrentPlayerShown] = PlayerPreformanceData;
    }
    #endregion

    #region PlayerDetails
    private void FirstNameTextBox_TextChanged(object sender, EventArgs e)
    {
        //1. Create a new empty structure to hold member data
        FootballClub PlayerMemberData = new FootballClub(0);
        //2. Copy content of the current entry into the new empty structure
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        //3. Change only the name currently shown in the GUI in the structure
        PlayerMemberData.Firstname = FirstNameTextBox.Text;
        //4. overwrite the old data with the changed one.
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void SurnameTextBox_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.Surname = SurnameTextBox.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void PlayerAge_ValueChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.age = (int)PlayerAge.Value;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void Address1_Text_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.Address1 = Address1_Text.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void Address2_Text_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.Address2 = Address2_Text.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void City_Text_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.City = City_Text.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void Country_Text_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.Country = Country_Text.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void Postcode_Text_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.Postcode = Postcode_Text.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void HomeNumber_Text_TextChanged(object sender, EventArgs e)
    {
        int HomeNum;
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        HomeNum = Convert.ToInt32(HomeNumber_Text.Text);
        PlayerMemberData.HomeNum = HomeNum;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void MobileNum_Text_TextChanged(object sender, EventArgs e)
    {
        int MobNum;
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        MobNum = Convert.ToInt32(MobileNum_Text.Text);
        PlayerMemberData.HomeNum = MobNum;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void Email_Text_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.Email = Email_Text.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void EmergName_Text_TextChanged(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.EmergencyName = EmergName_Text.Text;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }

    private void EmergNum_Text_TextChanged(object sender, EventArgs e)
    {
        int EmergNumber;
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        EmergNumber = Convert.ToInt32(EmergNum_Text.Text);
        PlayerMemberData.EmergencyNum = EmergNumber;
        ClubData[CurrentPlayerShown] = PlayerMemberData;
    }
    #endregion

    #region ShowMember

    private void ShowCurrentMember()
    {
        FootballClub PlayerMemberData;
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];

        FirstNameTextBox.Text = PlayerMemberData.Firstname;
        SurnameTextBox.Text = PlayerMemberData.Surname;
        PlayerAge.Value = PlayerMemberData.age;
        Address1_Text.Text = PlayerMemberData.Address1;
        Address2_Text.Text = PlayerMemberData.Address2;
        City_Text.Text = PlayerMemberData.City;
        Country_Text.Text = PlayerMemberData.Country;
        Postcode_Text.Text = PlayerMemberData.Postcode;
        HomeNumber_Text.Text = " " + PlayerMemberData.HomeNum;
        MobileNum_Text.Text = " " + PlayerMemberData.MobNum;
        Email_Text.Text = PlayerMemberData.Email;
        EmergName_Text.Text = PlayerMemberData.EmergencyName;
        EmergNum_Text.Text = " " + PlayerMemberData.EmergencyNum;

        MatchPreformance PlayerPreformanceData;
        PlayerPreformanceData = (MatchPreformance)MatchData[CurrentPlayerShown];

        MinutesPlayed_Num.Value = PlayerPreformanceData.MinutesPlayed;
        GoalsScored_Num.Value = PlayerPreformanceData.Goals;
        PenaltiesScored_Num.Value = PlayerPreformanceData.Penalties;
        if (PlayerPreformanceData.CardGiven == 'Y') YellowCard_RadioButt.Checked = true;
        else RedCard_RadioButt.Checked = true;
        TotalTime_Text.Text = " " + PlayerPreformanceData.MinutesPlayed;
        TotalGoals_Text.Text = " " + PlayerPreformanceData.Goals;
        TotalPenalties_Text.Text = " " + PlayerPreformanceData.Penalties;

        Player1.Text = "player  " + (CurrentPlayerShown + 1);
        UpdatePrevNextBtnStatus();
    }

    private void UpdatePrevNextBtnStatus()
    {
        if (CurrentPlayerShown <= 0) PrevPlayer_Butt.Enabled = false;
        else PrevPlayer_Butt.Enabled = true;

        if (CurrentPlayerShown >= (ClubData.Count - 1)) NextPlayer_Butt.Enabled = false;
        else NextPlayer_Butt.Enabled = true;
    }
    #endregion

    #region Clear

    private void Clear_Butt_Click(object sender, EventArgs e)
    {
        ClearData();
    }

    private void ClearData()
    {
        //clear the data struct 
        FootballClub PlayerMemberData = new FootballClub(0);
        PlayerMemberData = (FootballClub)ClubData[CurrentPlayerShown];
        PlayerMemberData.Firstname = "";
        PlayerMemberData.Surname = "";
        PlayerMemberData.age = 0;
        PlayerMemberData.Address1 = "";
        PlayerMemberData.Address2 = "";
        PlayerMemberData.City = "";
        PlayerMemberData.Country = "";
        PlayerMemberData.Postcode = "";
        PlayerMemberData.HomeNum = 0;
        PlayerMemberData.MobNum = 0;
        PlayerMemberData.Email = "";
        PlayerMemberData.EmergencyName = "";
        PlayerMemberData.EmergencyNum = 0;

        ClubData[CurrentPlayerShown] = PlayerMemberData;

        MatchPreformance PlayerPreformanceData = new MatchPreformance(1);
        PlayerPreformanceData = (MatchPreformance)MatchData[CurrentPlayerShown];
        PlayerPreformanceData.MinutesPlayed = 0;
        PlayerPreformanceData.Goals = 0;
        PlayerPreformanceData.Penalties = 0;
        PlayerPreformanceData.CardGiven = ' ';

        MatchData[CurrentPlayerShown] = PlayerPreformanceData;

        ShowCurrentMember();
    }
    #endregion

    #region Save
    private void SaveData()
    {
        // CREATE a file for saving (technically a 'FileStream')
        FileStream fs = new FileStream(filePathName, FileMode.Create);

        // Construct a BinaryFormatter and use it to serialise the data to the stream.
        // this "serialises" the ArrayList into binary (i.e. not to human readable text file)
        BinaryFormatter binFormatter = new BinaryFormatter();

        // Write the file to disk
        binFormatter.Serialize(fs, ClubData);

        // Close the file
        fs.Close();
    } // end of Save method
    #endregion

    #region Load
    private void LoadData()
    {
        // OPEN file for loading
        FileStream fs = new FileStream(filePathName, FileMode.Open);

        // Construct a BinaryFormatter for de-serialisation of data from the stream.
        BinaryFormatter binFormatter = new BinaryFormatter();

        // Read the file from disk
        ClubData = (ArrayList)binFormatter.Deserialize(fs);

        // Close the file
        fs.Close();

        CurrentPlayerShown = 0;
        ShowCurrentMember();

    }
    #endregion

    private void NewPlayer_Butt_Click(object sender, EventArgs e)
    {
        FootballClub PlayerMemberData;

        PlayerMemberData = new FootballClub(1);
        PlayerMemberData.Firstname = "";
        PlayerMemberData.Surname = "";
        PlayerMemberData.age = 0;
        PlayerMemberData.Address1 = "";
        PlayerMemberData.Address2 = "";
        PlayerMemberData.City = "";
        PlayerMemberData.Country = "";
        PlayerMemberData.Postcode = "";
        PlayerMemberData.HomeNum = 0;
        PlayerMemberData.MobNum = 0;
        PlayerMemberData.Email = "";
        PlayerMemberData.EmergencyName = "";
        PlayerMemberData.EmergencyNum = 0;

        ClubData.Add(PlayerMemberData);

        MatchPreformance PlayerPreformanceData;

        PlayerPreformanceData = new MatchPreformance(1);
        PlayerPreformanceData.MinutesPlayed = 0;
        PlayerPreformanceData.Goals = 0;
        PlayerPreformanceData.Penalties = 0;
        PlayerPreformanceData.CardGiven = ' ';

        MatchData.Add(PlayerPreformanceData);

        ShowCurrentMember();
    }

    private void DeletePlayer_Butt_Click(object sender, EventArgs e)
    {

    }




}

} `

1 个答案:

答案 0 :(得分:0)

您可以使用语法。

for (int i = 0; i < ClubData.Count; i++)
    {
        if (/* Some condition that matches the potential delete */){
          ClubData.RemoveAt(i);
        }
    }