包含对象的列表框传递给其他列表框

时间:2014-08-30 20:46:14

标签: c# class validation parameter-passing listboxitems

/// TEAM PICKING APP帮助Dota 2草稿///

表格上的对象:

  1. heroListBox
  2. team1ListBox
  3. team2ListBox
  4. addTeam1Button
  5. addTeam2Button
  6. 标签位于每个团队的列表框
  7. 下方

    我有一个名为 Hero 的课程。 Hero 的每个实例都有bools和一个字符串作为其名称。 bools跟踪 Hero 的能力属性,例如,如果他有远程攻击。

    在我的MainForm上,有一个包含所有可用英雄的列表框。您选择英雄然后按两个按钮之一:按钮将对象发送到 Team 1的列表框 Team 2的列表框。每个团队的列表框下方都有标记,可以统计这些团队的数量。能力,例如团队的列表框中有多少英雄有远程攻击。每次按下该团队的按钮时,该团队的标签都会更新。

    我认为我能够将一个对象从一个列表移动到另一个列表。但是每当你按下发送的两个按钮之一时,我就无法使用计数:

    public class Hero {
        public string Name;
        public bool IsInitiator;
        public bool IsTank;
        public bool IsNuker;
        public bool IsCarry;
        public bool IsPusher;       
        public bool IsRanged;
        public bool IsGreedy;
        public bool IsAOE;
        public bool IsDisabler;
        public bool IsRat;
        public Hero(string tempName){
            Name = tempName;
            IsInitiator = false;
            IsTank = false;
            IsNuker = false;
            IsCarry = false;
            IsPusher = false;       
            IsRanged = false;
            IsGreedy = false;
            IsAOE = false;
            IsDisabler = false;
            IsRat = false;
        }
        public override string ToString()
        {
            return Name;
        }
    
    
    }
    
    
    public partial class MainForm : Form
    {
        public int rcounter;
        public int dcounter;
        List<Hero> rHeroes = new List<Hero>();
        List<Hero> dHeroes = new List<Hero>();
    
        public MainForm()
        {
            InitializeComponent();  
    

    //只是一个例子英雄

            Hero Abbadon = new Hero("Abbadon");
            Abbadon.IsCarry=true;
            Abbadon.IsGreedy=true;
            Abbadon.IsTank=true;
            heroList.Items.Add(Abbadon);
    
            }
    

    //添加到team1 ...又名Radiant。更新这些标签文本!

        void addTeam1ButtonClick(object sender, EventArgs e)
        {
            rcounter++;
            rHeroes.Add(heroList.SelectedItem as Hero);
            team1List.Items.Add(heroList.SelectedItem);
            heroList.Items.Remove(heroList.SelectedItem);
    
            for (int i = 0; i == rcounter; i++)
            {
                int rangedCounts = 0;
                if (rHeroes[i].IsTank == true){
                    rangedCounts++;
                }
                radiantRangedLabel.Text = rangedCounts.ToString();
            }
        }
    
    }
    

1 个答案:

答案 0 :(得分:1)

您正在为每个Hero设置团队计数的标签,因此它将始终显示1或0,具体取决于您在循环中检查的最后一个英雄...

将变量rangedCounts移动到循环外