首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新DataGridViewComboBox项

刷新DataGridViewComboBox项
EN

Stack Overflow用户
提问于 2014-01-03 18:09:31
回答 2查看 87关注 0票数 0

我试图刷新ComboBox中可用的天数。这是我创建的一个按钮,mindate和maxdate从DateTime选择器中获取值,而Dia是DataGridViewComboBoxColumn,但它不工作。谁能帮我找出问题的根源和解决办法。或者,如果你知道另一种方法,它也会有帮助。编辑:我刚才说的按钮是button3。

代码语言:javascript
复制
public partial class InserirViagens : Form
{
    private DateTime mindate;
    private DateTime maxdate;
    public InserirViagens()
    {
        InitializeComponent();
        textBox1.Text = (Dados.agência.Viagens.Count + 1).ToString();
        textBox1.Enabled = false;
        dateTimePicker1.MinDate = DateTime.Now;
        dateTimePicker2.MinDate = DateTime.Now;
        mindate = dateTimePicker1.Value;
        maxdate = dateTimePicker2.Value;

    }

    private void button2_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            int cod = int.Parse(textBox1.Text);
            string des = textBox2.Text;
            double preço = double.Parse(textBox3.Text);
            DateTime inicio = dateTimePicker1.Value;
            DateTime fim = dateTimePicker2.Value;
            int contalinhas = (int)dataGridView1.RowCount-1;
            if (inicio<=fim)
            {
                Viagem v = new Viagem(cod, des, preço, inicio, fim);
                Dados.agência.Viagens.Add(cod, v);

                MessageBox.Show("Viagem Inserida com sucesso!\nContém " + contalinhas + " actividades.\n"+ Dados.dados.Viagens.Count + " Viagens existentes");
                this.Close();
            }
            else MessageBox.Show("Data de fim inválida!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);

        }
        catch(FormatException)
        {
            MessageBox.Show("Erro de formatação!", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);


        }









    }

    private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
    {

        mindate = dateTimePicker1.Value;


    }

    private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
    {

        maxdate = dateTimePicker2.Value;

    }

    private void button3_Click(object sender, EventArgs e)
    {

       Dia.Items.Clear();
       while (mindate.DayOfYear < maxdate.DayOfYear)
       {
           Dia.Items.Add(mindate.Day + "/" + mindate.Month + "/" + mindate.Year);
           mindate.AddDays(1);
       }

    }
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-03 18:40:27

代码语言:javascript
复制
   Dia.Items.Clear();
   while (mindate.DayOfYear < maxdate.DayOfYear)
   {
       Dia.Items.Add(mindate.Day + "/" + mindate.Month + "/" + mindate.Year);
       mindatee.AddDays(1);
   }

mindatee.AddDays(1);不工作。

AddDays方法信息

返回一个新DateTime,它将指定的天数添加到此实例的值中。

因此,它返回一个新的DateTime,并且不更改旧的(在本例中是mindate)值。

溶液

将mindate.AddDays(1)保存在临时变量中,并将当前mindate替换为temp值。

代码语言:javascript
复制
   Dia.Items.Clear();
   while (mindatee.DayOfYear < maxdatee.DayOfYear)
   {
       Dia.Items.Add(mindate.Day + "/" + mindate.Month + "/" + mindate.Year);
       var tempDate = mindate.AddDays(1);
       mindate = tempDate;
   }

如果不想使用临时变量,也可以在一行代码中这样做:

代码语言:javascript
复制
mindate = mindate.AddDays(1);
票数 0
EN

Stack Overflow用户

发布于 2014-01-03 18:52:01

代码语言:javascript
复制
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Btn_Click(object sender, EventArgs e)
    {
        DateTime minDate = Convert.ToDateTime(mindate.Value);
        DateTime maxDate = Convert.ToDateTime(maxdate.Value);

        foreach ( DataGridViewComboBoxColumn cmbCol in dataGridView1.Columns) {
            cmbCol.Items.Clear();

            while (minDate.Day < maxDate.Day) {
                cmbCol.Items.Add($"{minDate.Day}/{minDate.Month}/{minDate.Year}");
               minDate= minDate.AddDays(1);
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20910060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档