在C#winform中删除运行时生成的控件

Posted

tags:

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

我有用于在用户右键单击面板时生成文本框的代码。我需要一种方法来允许用户也删除/删除创建的文本框控件。这段代码是我在运行时创建文本框的方式:

private void panel1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            Point cp = panel1.PointToClient(Cursor.Position);
            i++;
            TextBox text = new TextBox();
            text = new TextBox();
            text.Name = "user_textbox" + i.ToString();
            text.Size = new System.Drawing.Size(panel1l.Width, 30);               
            text.Location = new Point(0, cp.Y);  // puts box at current mouse position  
            panel1.Controls.Add(text);
            text.Focus();
        }

我发现代码删除了另一篇文章中的控件,但它不能满足我的需求。该代码如下,但它旨在根据名称搜索和删除控件。我希望能够做的是右键单击已创建的文本框,并可以选择删除它。任何帮助,将不胜感激。

// this is code to remove controls using
// name of the control

foreach (Control ctrl in this.Controls) 
{
    if (ctrl.Name == "Textbox2")
      this.Controls.Remove(ctrl);
}
答案

经过反复试验和大量阅读后,我发现菜单项不会将Focus从当前容器中删除。所以,我创建了一个菜单并添加了一个“删除”按钮。它很棒。

private void deleteCurrentScheduleToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (ActiveControl is TextBox)
        {
            this.panel1.Controls.Remove(ActiveControl);

        }
    }

以上是关于在C#winform中删除运行时生成的控件的主要内容,如果未能解决你的问题,请参考以下文章

为什么用户控制C#Winforms的所有组件在UI编辑器和运行时都有不同的大小?

在C#winform窗体中,放入一控件axAcroPDF1,

C#winform的选项卡控件,怎么通过代码在一个tabcontrol控件里进行新建选项卡页,删除选项卡页,移位,等等

Winform下编译Dev控件时提示license.licx文件错误

如何创建悬停的 C# Winforms 控件

C# WinForm 动态添加-删除控件内存未释放