如何在C#中删除一个控件
我是用WPF应用程序模版创建的程序,语言是C#,我想在单击某个按钮后,在窗体上的checkbox控件删除掉,我就是删除控件的代码不知道,恳请高手指点,我新手...
我是用WPF应用程序模版创建的程序,语言是C#,我想在单击某个按钮后,在窗体上的checkbox控件删除掉,我就是删除控件的代码不知道,恳请高手指点,我新手
展开
4个回答
展开全部
看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);
如果不是直接放的,是通过数据绑定+模板生成的,直接删除对应的数据。
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);
如果不是直接放的,是通过数据绑定+模板生成的,直接删除对应的数据。
展开全部
貌似不可以删除控件代码吧。你可以试试把他隐藏掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为何非得删除,隐藏不行么。共同等待高手前来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2017-09-22
展开全部
参考思路:
遍历后,然后进行删除;
参考代码:
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();
}
}
}
}
遍历后,然后进行删除;
参考代码:
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();
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询