点击按钮后,我想清理我的群组项目。
我尝试了一些代码块,但它们不适用于重置控件。
我不想删除或删除它,我只想重置组框中的项目。
这适用于删除groupbox项目。
public void ClearPanels(GroupBox control)
{
control.Controls.Clear();
}
或者
groupBox2.Controls.Clear();
当我点击按钮时,您可以在右侧看到。
它已删除,但我想重置它。
我有什么想法可以做到这一点?
答案 0 :(得分:2)
我打算明确表示默认情况下全部保留。你需要使用组框内的所有控件,并根据他们做什么控件做什么或其他什么。
foreach (Control ctr in GB.Controls)
{
if (ctr is TextBox)
{
ctr.Text = "";
}
else if (ctr is CheckedListBox)
{
CheckedListBox clb = (CheckedListBox)ctr;
foreach (int checkedItemIndex in clb.CheckedIndices)
{
clb.SetItemChecked(checkedItemIndex, false);
}
}
else if (ctr is CheckBox)
{
((CheckBox)ctr).Checked = false;
}
else if (ctr is ComboBox)
{
((ComboBox)ctr).SelectedIndex = 0;
}
}
我不知道Deneyim和Not是什么,但我想你会想到检查它是什么并将你想要的价值放在一边
答案 1 :(得分:1)
我认为术语clear
在某种程度上取决于您使用的控件类型。对于TextBox
您可能想要清空Text
属性,对于ListBox
,您可能想删除所有项目。因此,控件没有通用的Clear()
方法。
你能做的就是这样:
public void ClearPanels(GroupBox control)
{
foreach(Control childControl in control.Controls)
childControl.ResetText();
}
这将遍历Control
中的所有子GroupBox
,并重置其Text
属性。您可能希望为某些类型的Control
添加特殊处理。
如果您的GroupBox
包含嵌套控件(例如另一个GroupBox
并且还有其他控件),则可能需要递归此方法:
public void ClearPanels(Control control)
{
foreach(Control childControl in control.Controls)
{
childControl.ResetText();
ClearPanels(childControl); // recursive call
}
}
真的"清除"你的控件,你必须检查他们的具体类型。所以可以采用一种先进的方法:
public void ClearPanels(GroupBox control)
{
foreach(ListBox listBox in control.Controls.OfType<ListBox>())
{
listBox.Items.Clear();
// do more ListBox cleanup
}
foreach(CheckedListBox listBox in control.Controls.OfType<CheckedListBox>())
{
listBox.Items.Clear();
// do more CheckedListBox cleanup
}
foreach(ListView listView in control.Controls.OfType<ListView>())
{
listView.Items.Clear();
// do more ListView cleanup
}
foreach(CheckBox checkBox in control.Controls.OfType<CheckBox>())
{
checkBox.Checked = false;
// do more CheckBox cleanup
}
// etc...
}