代码之家  ›  专栏  ›  技术社区  ›  Kethi

C#列表和组合框中不允许重复日期

  •  0
  • Kethi  · 技术社区  · 7 年前

    我的作业程序有一个日历,用户可以从中选择日期,然后将这些日期添加到组合框和列表中。它应该不允许重复,但我似乎抓不到它们。

    添加日期后,用户有一个按钮,该按钮将在文本框的列表/数组中显示组合框中的可用日期。我用组合框初始化列表时是否有误?是否有其他方法可以在组合框和列表中捕获重复的日期?

        private void desktopDateTime_ValueChanged(object sender, EventArgs e)
        {
                bool isDuplicate = false;
                List<DateTime> availableDates = new List<DateTime>();
    
                foreach(DateTime date in availableDates)
                {
                    if(date == desktopDateTime.Value)
                    {
                        isDuplicate = true;
                        break;
                    }
                }
                if (isDuplicate == false)
                {
                    availableDates.Add(desktopDateTime.Value);
                    availableComboBox.Items.Add(desktopDateTime.Value.ToString());
                }
                else
                {
                    isDuplicate = false;
                    MessageBox.Show("No duplicate dates allowed");
                }
    
        }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   RMH    7 年前

    列表 availableDates 在方法的范围内定义。意思是每次 desktopDateTime_ValueChanged 将创建新的(空)列表。

    您需要将列表放在类的作用域中,而不是放在方法中。这将允许多次调用 desktopDateTime\u值已更改 使用相同的列表,而不是不同的列表。比如:

    private List<DateTime> availableDates = new List<DateTime>();
    
    private void desktopDateTime_ValueChanged(object sender, EventArgs e)
        {
            bool isDuplicate = false;
    
            foreach(DateTime date in availableDates)
            //  ...