C# 如何调用flowLayoutPanel以通过名称删除嵌套在同一flowLayoutPanel中的按钮控件
在RTB类中,我创建了一个包含按钮控件的RichRextBox,并将带有按钮的Richtexbox直接添加到FlowLayoutPanel中 该按钮已订阅btnButton_Click,因此当单击该按钮时,它将运行f.remr.Name 现在,当我单击RichTextBox内的按钮将其从FlowLayoutPanel中删除时,它不起作用。任何帮助都将不胜感激C# 如何调用flowLayoutPanel以通过名称删除嵌套在同一flowLayoutPanel中的按钮控件,c#,winforms,C#,Winforms,在RTB类中,我创建了一个包含按钮控件的RichRextBox,并将带有按钮的Richtexbox直接添加到FlowLayoutPanel中 该按钮已订阅btnButton_Click,因此当单击该按钮时,它将运行f.remr.Name 现在,当我单击RichTextBox内的按钮将其从FlowLayoutPanel中删除时,它不起作用。任何帮助都将不胜感激 注意:我能够创建并将它们添加到FlowLayoutPanel,我没有包含该代码,因为我认为它与此特定问题无关。您需要为RichTextBo
注意:我能够创建并将它们添加到FlowLayoutPanel,我没有包含该代码,因为我认为它与此特定问题无关。您需要为RichTextBox分配名称,您需要在创建时删除该名称
class RTB
{
Form1 f = new Form1();
Button bt = new Button();
RichTextBox r = new RichTextBox();
public RichTextBox addPanel(string Task)
{
bt.Text = "X";
bt.Click += new EventHandler(btnButton_Click);
r.Controls.Add(bt);
return r;
}
void btnButton_Click(object sender, EventArgs e)
{
f.rem(r.Name);
}
}
class Form1 : Form
{
public void rem(string name)
{
flowLayoutPanel1.Controls.RemoveByKey(name);
}
}
或其他不使用ram功能的方式:
RichTextBox r = new RichTextBox();
r.Name = "Any_Unique_Name";
您可以在按钮单击处理程序中使用r变量。使用匿名处理程序,您可以进一步简化:
void btnButton_Click(object sender, EventArgs e)
{
//delete parent of clicked `Button` will be target `RichTextBox`
((Button)sender).Parent.Dispose();
}
现在,当单击按钮时,控件将消失。忘记在“f.remr.Name”中添加“f”。它是Form1 f=new Form1;f来自哪里?很可能您已经在rtb类中声明了Form1 f=new Form1。这和你在屏幕上看到的表格不一样,因此你的问题就来了。但是,您试图使用什么名称来删除控件?您尚未为RTB的.Name属性分配任何内容。。。
btn.Click += new EventHandler((s, e) => {
r.Dispose();
});