ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我如何使用DateTime.DaysInMonth用月中的几天填充组合框

2019-11-20 11:07:19  阅读:188  来源: 互联网

标签:combobox c winforms


我正在尝试用此选定月份中的日期填充ComboBox

    private void cboSelectMonth_SelectedIndexChanged(object sender, EventArgs e)
    {
       if (cboSelectMonth.SelectedIndex >= 0)
       {
            int year = Convert.ToInt32(cboSelectYear.SelectedValue);
            int month = Convert.ToInt32(cboSelectMonth.SelectedValue);

            this.cboSelectDay.DisplayMember = "Text";
            this.cboSelectDay.ValueMember = "Value";

            int dayCount = DateTime.DaysInMonth(year, month);
            var days = new[ dayCount+1 ] { };

            for (int i = 1; i < dayCount +1; i++)
            {
                days[i] = new { Text = Convert.ToString(i), Value = i };
                //cboSelectDay.Items.Add(i);
                //   days[]  { new { Text = Convert.ToString(i), Value = i } };
            }

            this.cboSelectDay.DataSource = days;

            DateTime now = DateTime.Now;
            int dayValue = now.Day;

            cboSelectDay.SelectedIndex = dayValue - 1; 
       }
    }

因此,我试图以ComboBox结尾,该框列出了当月的所有日期.例如,选择9月将增加30天的组合框,选择10月将给您31等.我遇到两个错误.第一个是在var days = new [dayCount 1] {}上;行,表示保护了“]”.第二个错误是在天[i] = new {Text = Convert.ToString(i),Value = i};行上,提示无法将类型’AnonymousType#1’隐式转换为’int’

我正在尝试做一些与我在月中所做的事情类似的方法,该方法确实有效(下面的代码块).我究竟做错了什么?

    private void FillMonthCombobox()
    {
        this.cboSelectMonth.DisplayMember = "Text";
        this.cboSelectMonth.ValueMember = "Value";

        var months = new[] 
        { 
            new { Text = "January", Value = 1 }, 
            new { Text = "February", Value = 2 }, 
            new { Text = "March", Value = 3 }, 
            new { Text = "April", Value = 4 }, 
            new { Text = "May", Value = 5 }, 
            new { Text = "June", Value = 6 }, 
            new { Text = "July", Value = 7 }, 
            new { Text = "Aughust", Value = 8 }, 
            new { Text = "September", Value = 9 }, 
            new { Text = "October", Value = 10 }, 
            new { Text = "November", Value = 11 }, 
            new { Text = "December", Value = 12 } 
        };
        this.cboSelectMonth.DataSource = months;

        DateTime now = DateTime.Now;
        int monthValue = now.Month;
        cboSelectMonth.SelectedIndex = monthValue - 1;
    }

编辑:我现在可以填充ComboBox,但是如何将Text = day和Value = day添加到循环中,以便以后可以引用Value?在此循环中,它们将是相同的,但在我正在处理的其他一些循环中,它们将是不同的.本质上,我想在第二个代码块中做同样的事情,但要有一个循环.

解决方法:

很简单,但是您也必须指定年份.注意二月和and年!

int year = 2015;
int month = 5;
int[] days = Enumerable.Range(1, DateTime.DaysInMonth(year, month)).ToArray();

之后可以将其指定为数据源:

cboSelectDay.DataSource = days;
cboSelectDay.DataBind();

标签:combobox,c,winforms
来源: https://codeday.me/bug/20191120/2043529.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有