如何在C#中删除一个控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中删除一个控件相关的知识,希望对你有一定的参考价值。

我是用WPF应用程序模版创建的程序,语言是C#,我想在单击某个按钮后,在窗体上的checkbox控件删除掉,我就是删除控件的代码不知道,恳请高手指点,我新手

看CheckBox的parent是谁

1、如果CheckBox是放在Panel(比如Canvas, Grid, DockPanel之类的)中的,调用 xxx.Children.Remove(checkBox1);

2、如果是放在ContentControl(例如Button)或者HeaderedContentControl(例如TabItem)的,调用
xxx.Content = null

3、如果是直接放在ItemsControl(例如ListBox)或者HeaderedItemsControl(例如TreeViewItem)中的,调用
xxx.Items.Remove(checkBox1);

如果不是直接放的,是通过数据绑定+模板生成的,直接删除对应的数据。
参考技术A 貌似不可以删除控件代码吧。你可以试试把他隐藏掉。 参考技术B 为何非得删除,隐藏不行么。共同等待高手前来。 参考技术C 参考思路:
遍历后,然后进行删除;
参考代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2

public partial class Form1 : Form

public Form1()

InitializeComponent();


Queue<Control> query = new Queue<Control>();//临时存储获取到的control控件
/// <summary>
/// 递归获取panel1上的所有控件,并临时存储到一个队列中
/// </summary>
/// <param name="item"></param>
void DS(Control item)

for (int i = 0; i < item.Controls.Count;i++ )

if (item.Controls[i].HasChildren)

DS(item.Controls[i]);

else

query.Enqueue(item.Controls[i]);





private void button1_Click(object sender, EventArgs e)

DS(panel1);
//删除遍历到的控件
while (query.Count != 0)

query.Dequeue().Dispose();



如何在 C# 中隐藏 MonthCalendar 控件的下一个/上一个按钮

【中文标题】如何在 C# 中隐藏 MonthCalendar 控件的下一个/上一个按钮【英文标题】:How to hide next/preivous button of MonthCalendar control in C# 【发布时间】:2012-10-16 02:29:41 【问题描述】:

我有一个项目,我想在 C# 中隐藏 MonthCalendar 控件的下一个/上一个按钮。我已经搜索了谷歌,但我找不到解决方案。请让我看看。

【问题讨论】:

【参考方案1】:

您可以通过设置控件的 MinDate 和 MaxDate 属性来禁用它们,以编程方式将 MinDate 设置为本月的第一天,并将 MaxDate 设置为本月的最后一天。

【讨论】:

我从来不知道这可能是可能的。再次感谢@Wanabrutbeer :) +1 可行,但有点不直观。当您无法单击箭头时,您仍然可以单击 Mopnth 名称,它将显示单个月份,如果您再次单击单个年份。最好有一个标签控件,其月份名称覆盖箭头和月份。 没问题 :) 我认为它不是一个完美的解决方案,但它会起作用。唯一的另一种方法是创建一个扩展 MonthCalendar 的自定义控件,并覆盖 OnPaint() 方法,并调整其呈现方式,但我对此并不精通。它可能还需要覆盖其他方法,例如 OnSizeChanged 或其他布局类型事件。 @Wanabrutbeer 或者您可以在 MonthCalendar 标题上扩展一个对象,例如 Panel,简单:D【参考方案2】:
monthCalendar1.MinDate = new DateTime(2012,10,1);
monthCalendar1.MaxDate = new DateTime(2012, 10, 31);

将 MonthCalendar 设置为禁用箭头有点不直观。

当您无法单击箭头时,您仍然可以单击月份名称,它将显示单个月份,如果您再次单击单个年份,它将显示。

最好有一个标签控件,其中月份名称覆盖箭头和月份。

【讨论】:

【参考方案3】:

不要忘记添加小时、分钟和秒...对于避免 MaxDate 上的异常特别有用。

DateTime firstDayInMonth = new DateTime(today.Year, today.Month, 1, 0, 0, 0);
DateTime lastDayInMonth = new DateTime(today.Year, today.Month, DateTime.DaysInMonth(today.Year, today.Month), 23, 59, 59);

yourCalendar.MinDate = firstDayInMonth;
yourCalendar.MaxDate = lastDayInMonth;

【讨论】:

以上是关于如何在C#中删除一个控件的主要内容,如果未能解决你的问题,请参考以下文章

C#中datagridview控件 如何进行删除修改添加数据并保存到数据库中

如何删除事件处理程序并将其重新附加到 c# 中的控件?

如何在 C# 中为我的控件添加移动效果?

C# winform中dataGridView控件如何插入、删除、更新记录,操作完成后怎样写回数并保存据库,怎么写代码?

vs写c#时,自动根据控件生成的代码不小心被删除了,窗口设计还在,如何重新自动生成?

visual studio 2013 用C#做WPF时,控件无法移动,而且新建控件旧控件就会被删除,如何解决?