【问题标题】:C# not allowing duplicate dates in list & comboboxC# 不允许列表和组合框中的重复日期
【发布时间】:2018-02-24 17:15:25
【问题描述】:

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

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

    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");
            }

    }

【问题讨论】:

    标签: c# list combobox duplicates


    【解决方案1】:

    availableDates 列表在您的方法范围内定义。这意味着每次调用 desktopDateTime_ValueChanged 时都会创建一个新的(空)列表。

    您需要将列表放在类的范围内,而不是方法。这将允许多次调用desktopDateTime_ValueChanged 使用相同的列表,而不是不同的列表。所以像:

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

    【讨论】:

    • 谢谢!这是我的误解,现在将其移出会触发重复的消息框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2020-09-02
    • 1970-01-01
    • 2012-12-16
    • 2018-03-23
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多