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