Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何调用flowLayoutPanel以通过名称删除嵌套在同一flowLayoutPanel中的按钮控件_C#_Winforms - Fatal编程技术网

C# 如何调用flowLayoutPanel以通过名称删除嵌套在同一flowLayoutPanel中的按钮控件

C# 如何调用flowLayoutPanel以通过名称删除嵌套在同一flowLayoutPanel中的按钮控件,c#,winforms,C#,Winforms,在RTB类中,我创建了一个包含按钮控件的RichRextBox,并将带有按钮的Richtexbox直接添加到FlowLayoutPanel中 该按钮已订阅btnButton_Click,因此当单击该按钮时,它将运行f.remr.Name 现在,当我单击RichTextBox内的按钮将其从FlowLayoutPanel中删除时,它不起作用。任何帮助都将不胜感激 注意:我能够创建并将它们添加到FlowLayoutPanel,我没有包含该代码,因为我认为它与此特定问题无关。您需要为RichTextBo

在RTB类中,我创建了一个包含按钮控件的RichRextBox,并将带有按钮的Richtexbox直接添加到FlowLayoutPanel中

该按钮已订阅btnButton_Click,因此当单击该按钮时,它将运行f.remr.Name

现在,当我单击RichTextBox内的按钮将其从FlowLayoutPanel中删除时,它不起作用。任何帮助都将不胜感激


注意:我能够创建并将它们添加到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();
});