因此场景为:UserControl
,其中:1 GroupBox
,内部:2 combobox
,1 textbox
,1 richtextbox
和1 button
用于“删除groupBox”
表单:1个按钮(用于添加groupBox
)和一个flowLayoutPanel
我的问题:我可以根据需要添加任意数量的groupBox
组件,但是如果我单击“删除组框”按钮,则可以在“表单1”中添加:
FlowLayoutPanel.Dispose()
我删除了所有已创建的GroupBox
组件,如果执行了,则在userControl
中删除:
GroupBox.Dispose();
它将其删除,但是当我添加另一个时,它会显示在“已删除的一个”下
这是我正在使用的代码:
UserControl:
private void Remove_Click(object sender, EventArgs e)
{
removeFunction();
}
表格1:
Private void add_GroupBox(my class)
{
myclass myClass = new myclass(datasource, null);
flowLayoutPanel.Controls.add(myClass);
}
private void Remove_GroupBox()
{
flowLayoutPanel.Controls.Clear(); // I know it removes all the groups created
FlowLayoutPanel.Dispose(); // It does the same job
// I just want the get the selected groupBox and dispose it or clear it
}
答案 0 :(得分:0)
您有两个选择:
您可以在User Control
上添加一个按钮以自行处置。
this.Dispose();
您可以在表单中添加属性以跟踪所选的用户控件。
Form1:
public Control SelectedItem { get; set; } = null;
private void DeleteButton_Click(object sender, EventArgs e)
{
if (SelectedItem != null)
{
SelectedItem.Dispose();
}
}
UserControl1:
// You can use any Event you prefer (Enter, Click or etc.).
private void GroupBox1_Enter(object sender, EventArgs e)
{
// First Parent is FlowLayoutPanel
// Second Parent is your Form
Form1 parent = this.Parent.Parent as Form1;
if (parent != null)
{
parent.SelectedItem = this;
}
}