C# 如何从日历中删除所有面板?

C# 如何从日历中删除所有面板?,c#,calendar,C#,Calendar,我现在正在用C#编写日历。 如果我调用日历,它将创建与当前月份天数相同的面板。但是,如果我想将当前月份增加一个,那么当前月份的面板就在那里。 因此,我必须在更改月份后立即删除所有面板。 但是在这种情况下我怎么做呢 谢谢你的帮助 代码eplain: 首先,我调用createPanel方法,为当前月份创建面板。 接下来,如果单击MonthAdd方法,我想删除所有创建的面板 using System; using System.Collections.Generic; using System.Com

我现在正在用C#编写日历。 如果我调用日历,它将创建与当前月份天数相同的面板。但是,如果我想将当前月份增加一个,那么当前月份的面板就在那里。 因此,我必须在更改月份后立即删除所有面板。 但是在这种情况下我怎么做呢

谢谢你的帮助

代码eplain: 首先,我调用createPanel方法,为当前月份创建面板。 接下来,如果单击MonthAdd方法,我想删除所有创建的面板

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Globalization;



namespace Einteilungs_Plan
{

public partial class Kalender : Form
{
    public DateTime TodayDate { get; set; }

    int counting = 0;

    public Kalender()
    {
        InitializeComponent();

        //Kalenderwochen initialisieren
        monat(counting);
        createPanel(true);


    }




    public string monat(int adding)
    {
        string monat = DateTime.Now.AddMonths(adding).ToString("MMMM");
        tbMonat.Text = monat;
        return monat;
    }

    private void btnAddMonth_Click(object sender, EventArgs e)
    {


        counting++;



        if(counting < 12)
        {
            monat(counting);
            switch (counting)
            {
                case 0:
                    int number = 10;
                    break;

                case 1:

                    break;

                default:
                    break;

            }
        }
        else
        {
            counting--;
        }
    }


    private void btnRemoveMonth_Click(object sender, EventArgs e)
    {


        counting--;
        if (counting > -1)
        {
            monat(counting);
        }
        else
        {
            counting++;
        }
    }

    public void createPanel(bool remove)
    {

        var numDays = DateTime.DaysInMonth(DateTime.Today.Year, DateTime.Today.Month);

            int locationX = 12;
            int locationY = 74;

            for (int i = 0; i <= numDays; i++)
            {
                //Create Panel
                Panel test = new Panel();
                //Fill Panel
                test.Name = "panel" + i;
                test.Width = 200;
                test.Height = 100;
                test.BackColor = Color.White;
                test.Location = new System.Drawing.Point(locationX, locationY);
                this.Controls.Add(test);
                test.Show();
                if(i == 6 || i == 13 || i == 20 || i == 28)
                {
                    locationY += 106;
                    locationX = -194;
                }
                locationX += 206;

            }
    }



    public void Kalender_Shown(object sender, EventArgs e)
    {


    }

    private void Kalender_Load(object sender, EventArgs e)
    {

    }

    private void btnNeuerEintrag_Click(object sender, EventArgs e)
    {

        Formular formular = new Formular();
        formular.Show();
        formular.Focus();

    }

    private void btnHinzufügen_Click(object sender, EventArgs e)
    {
        Formular formular = new Formular();
        formular.Show();
        formular.Focus();
    }


}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
利用制度全球化;
命名空间Einteilungs\u计划
{
公共部分类Kalender:表单
{
公共日期时间TodayDate{get;set;}
整数计数=0;
公共卡伦德()
{
初始化组件();
//卡伦德沃肯初始值
莫纳特(计数);
createPanel(true);
}
公共字符串monat(int-adding)
{
字符串monat=DateTime.Now.AddMonths(adding.ToString)(“MMMM”);
tbMonat.Text=monat;
返回单子;
}
私有void btnAddMonth_单击(对象发送者,事件参数e)
{
计数++;
如果(计数<12)
{
莫纳特(计数);
开关(计数)
{
案例0:
整数=10;
打破
案例1:
打破
违约:
打破
}
}
其他的
{
计数--;
}
}
私有void btnRemoveMonth\u单击(对象发送者,事件参数e)
{
计数--;
如果(计数>-1)
{
莫纳特(计数);
}
其他的
{
计数++;
}
}
公共void createPanel(bool-remove)
{
var numDays=DateTime.DaysInMonth(DateTime.Today.Year,DateTime.Today.Month);
int locationX=12;
int locationY=74;

对于(int i=0;i我不确定我是否理解您,但我想到的第一个简单解决方案是,在创建面板时,您可以将它们保留在一些列表中,例如,在生成新月份之前,您可以调用

 foreach (var p in panels)
            this.Controls.Remove(p);

忽略createPanel方法xD中的bool我忘了删除它…谢谢,听起来很合理。但是,现在我有一个问题,我不知道如何将我的对象和所有属性存储在一个列表中。抱歉,刚刚开始用C#编程。:/I我假设您一天中的所有内容都将包含在您创建的每个面板中。如果在循环中,您我将添加每个面板。添加(测试);到您的列表中,例如list panels=new list();然后您将能够访问每个面板及其所有内容请记住,您在该列表中有对面板的引用,它们与您创建的对象相同。哦,很好:)现在我找到了。谢谢
            this.Control.Remove(test[i]);
 foreach (var p in panels)
            this.Controls.Remove(p);