我有一个包含用户控件的列表(List<myUserControl>
)
并将控件从List<myUserControl>
添加到TableLayoutPanel
。
现在,当用户选择任何myUserControl
并点击删除按钮(位于我的表单上)时,我想Dispose/remove
来自Form
的用户控件。
我能够Dispose/remove
来自我的表单的用户控件,但不知道如何从列表List<myUserControl>
如何将选定的userControl与我的列表中的userControl匹配
答案 0 :(得分:0)
这主要取决于您如何识别所选的UserControl。然后在识别UserControl后,您可以通过
删除它tableLayoutPanel1.Controls.Remove(userControl);
myUserControls.Remove(userControl);
例如,我创建了一个UserControl,我保留一个bool,以便在用户点击它时将其标识为已选中。
bool isClicked = false;
public bool IsClicked
{
get
{
return isClicked;
}
set
{
isClicked = value;
if (value) BackColor = Color.Green;
else BackColor = Color.Blue;
}
}
然后在表格上
public partial class Form1 : Form
{
List<MyUserControl> myUserControls = new List<MyUserControl>();
public Form1()
{
InitializeComponent();
for (int i = 0; i < 4; i++) addNewUserControl();
}
void addNewUserControl()
{
MyUserControl userControl = new MyUserControl();
userControl.Click += userControl_Click;
myUserControls.Add(userControl);
tableLayoutPanel1.Controls.Add(userControl);
}
void userControl_Click(object sender, EventArgs e)
{
for (int i = 0; i < myUserControls.Count; i++) myUserControls[i].IsClicked = false;
((MyUserControl)sender).IsClicked = true;
}
private void buttonDelete_Click(object sender, EventArgs e)
{
for (int i = 0; i < myUserControls.Count; i++)
if (myUserControls[i].IsClicked)
{
MyUserControl userControl = myUserControls[i];
tableLayoutPanel1.Controls.Remove(userControl);
myUserControls.RemoveAt(i);
userControl.Dispose();
}
}
}
在这里,我通过循环搜索选定的UserControl并从表单和列表中删除它并将其处理