Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-表单上已存在的标签数组?_C#_Arrays_Label_Controls - Fatal编程技术网

C#-表单上已存在的标签数组?

C#-表单上已存在的标签数组?,c#,arrays,label,controls,C#,Arrays,Label,Controls,我目前有一个windows窗体,它有24个标签,需要定期更新。目前我正在这样做 private void UpdateLabels() { // ------------------------------------------------------------------------ // Group 1 Team 1 // -------------------------------------------------------

我目前有一个windows窗体,它有24个标签,需要定期更新。目前我正在这样做

private void UpdateLabels()
    {
        // ------------------------------------------------------------------------
        // Group 1 Team 1
        // -------------------------------------------------------------------------
        lblGroup1Team1Points.Text = Convert.ToString(theTeams[0].returnPoints());
        lblGroup1Team1Points.Refresh();
        lblGroup1Team1Wins.Text = Convert.ToString(theTeams[0].returnWins());
        lblGroup1Team1Wins.Refresh();
        lblGroup1Team1Draws.Text = Convert.ToString(theTeams[0].returnDraws());
        lblGroup1Team1Draws.Refresh();
        lblGroup1Team1Loses.Text = Convert.ToString(theTeams[0].returnLoses());
        lblGroup1Team1Loses.Refresh();
        lblGroup1Team1GoalDifference.Text = Convert.ToString(theTeams[0].returnGoalDifference());
        lblGroup1Team1GoalDifference.Refresh();
        lblGroup1Team1Played.Text = Convert.ToString(theTeams[0].returngamesPlayed());
        lblGroup1Team1Played.Refresh();

        // ------------------------------------------------------------------------
        // Group 1 Team 2
        // -------------------------------------------------------------------------
        lblGroup1Team2Points.Text = Convert.ToString(theTeams[1].returnPoints());
        lblGroup1Team2Points.Refresh();
        lblGroup1Team2Wins.Text = Convert.ToString(theTeams[1].returnWins());
        lblGroup1Team2Wins.Refresh();
        lblGroup1Team2Draws.Text = Convert.ToString(theTeams[1].returnDraws());
        lblGroup1Team2Draws.Refresh();
        lblGroup1Team2Loses.Text = Convert.ToString(theTeams[1].returnLoses());
        lblGroup1Team2Loses.Refresh();
        lblGroup1Team2GoalDifference.Text = Convert.ToString(theTeams[1].returnGoalDifference());
        lblGroup1Team2GoalDifference.Refresh();
        lblGroup1Team2Played.Text = Convert.ToString(theTeams[1].returngamesPlayed());
        lblGroup1Team2Played.Refresh();

        // ------------------------------------------------------------------------
        // Group 1 Team 3
        // -------------------------------------------------------------------------
        lblGroup1Team3Points.Text = Convert.ToString(theTeams[2].returnPoints());
        lblGroup1Team3Points.Refresh();
        lblGroup1Team3Wins.Text = Convert.ToString(theTeams[2].returnWins());
        lblGroup1Team3Wins.Refresh();
        lblGroup1Team3Draws.Text = Convert.ToString(theTeams[2].returnDraws());
        lblGroup1Team3Draws.Refresh();
        lblGroup1Team3Loses.Text = Convert.ToString(theTeams[2].returnLoses());
        lblGroup1Team3Loses.Refresh();
        lblGroup1Team3GoalDifference.Text = Convert.ToString(theTeams[2].returnGoalDifference());
        lblGroup1Team3GoalDifference.Refresh();
        lblGroup1Team3Played.Text = Convert.ToString(theTeams[2].returngamesPlayed());
        lblGroup1Team3Played.Refresh();

        // ------------------------------------------------------------------------
        // Group 1 Team 4
        // -------------------------------------------------------------------------
        lblGroup1Team4Points.Text = Convert.ToString(theTeams[3].returnPoints());
        lblGroup1Team4Points.Refresh();
        lblGroup1Team4Wins.Text = Convert.ToString(theTeams[3].returnWins());
        lblGroup1Team4Wins.Refresh();
        lblGroup1Team4Draws.Text = Convert.ToString(theTeams[3].returnDraws());
        lblGroup1Team4Draws.Refresh();
        lblGroup1Team4Loses.Text = Convert.ToString(theTeams[3].returnLoses());
        lblGroup1Team4Loses.Refresh();
        lblGroup1Team4GoalDifference.Text = Convert.ToString(theTeams[3].returnGoalDifference());
        lblGroup1Team4GoalDifference.Refresh();
        lblGroup1Team4Played.Text = Convert.ToString(theTeams[3].returngamesPlayed());
        lblGroup1Team4Played.Refresh();
    }
这很好,请不要误解我的意思,但当更新标签时,这是一个相当漫长的过程,因为它可以在某种循环中完成——所以我的问题基本上是:是否有必要将现有标签添加到标签数组中,这样我就可以通过访问标签数组中的元素来更新和刷新这些标签?我的想法是,这将是如此容易

Label[,] group1Labels = new Label[5,7];
private void CreateLabelArray
    {
        group1Labels[0,0] = lblGroup1Team1Points;
    }

但是,我错了,因为group1Labels给了我一个错误“需要一个get或set访问器”,正确的方法是什么?

不确定这有多漂亮或快,但您可以尝试以下方法:

for (int i = 0; i < theTeams.Length; i++)
{
    foreach(Control ctr in this.Controls)
    {
        if (ctr.Name == "lblGroup1Team" + (i + 1) + "Points")
        {
            ((Label)ctr).Text = theTeams[i].returnPoints();
            ((Label)ctr).Refresh();
        }
        //other ifs for each label
    }
}
for(int i=0;i
您可以使用此选项获取所有标签。 您可以在表单构造函数中调用它

var labels = GetType()
    .GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
    .Where(x => x.FieldType == typeof(Label))
    .Select(x => (Label)x.GetValue(this))
    .ToArray();
试试这张单子

foreach (Control c in group1.Controls)
        {
            if (c is Label)
            {
                string name = c.Name;
                // add your code to add in list or array
            }
        }

嗯,你的代码还有其他问题,因为你发布的内容应该有效,为什么不使用标签列表呢?可以使用唯一标识符作为关键字典的列表或字典