我试图弄清楚如何清除所有文本框并取消选中C#WPF中的所有复选框。表单有很多文本框,它会很繁琐.Clear()或=""对于每个单个文本框。复选框也一样。
我听说在Windows Forms中使用foreach循环执行类似下面的操作很容易,但我在WPF上执行此操作,因此无法使其工作。
foreach (Control c in Controls)
{
if (c is CheckBox)
{
((CheckBox) c).Checked = false;
}
else if (c is TextBox)
{
((TextBox) c).Text = "";
}
}
有人有什么建议吗?感谢
答案 0 :(得分:2)
让整个控件位于Container内(让它成为Stack面板),如下所示:
<StackPanel Name="containerCanvas" Margin="0,0,0,191">
<CheckBox Name="chk1" >chk1</CheckBox>
<CheckBox Name="chk2" >chk2</CheckBox>
<CheckBox Name="chk3" >chk3</CheckBox>
<TextBox Name="txt1" Text="xxxxxxxx"></TextBox>
<TextBox Name="txt2" Text="xxxxxxxxx"></TextBox>
<TextBox Name="txt3" Text="xxxxxxxxxx"></TextBox>
</StackPanel>
然后Clear按钮的Click事件将如下所示:
private void btnClear_Click(object sender, RoutedEventArgs e)
{
foreach (Control ctl in containerCanvas.Children)
{
if (ctl.GetType() == typeof(CheckBox))
((CheckBox)ctl).IsChecked = false;
if (ctl.GetType() == typeof(TextBox))
((TextBox)ctl).Text = String.Empty;
}
}
答案 1 :(得分:0)
下面是我实时项目中使用的代码。
以下代码将帮助您从Parent控件中识别所有子控件,并根据需要执行操作。这里我使用panel作为父控件,并使用简单的方法一次性清除所有文本框控件值。
示例代码
public void SetTextBoxToNull(Panel pnlobjid)
{
try
{
foreach(Control cntrl in pnlobjid.Controls)
{
if (cntrl is TextBox)
{
TextBox txtbox = cntrl as TextBox;
txtbox.Text = "";
}
}
}
catch (Exception ex)
{
string test = ex.Message;
}
}
希望上面的代码能为您提供一些指导,请让我知道。
由于
答案 2 :(得分:0)
我在同一个问题上看了答案:)感谢您的解决方案。现在在我的程序中使用类似的代码:
void clearTextBox(Grid gridName)
{
foreach (Control txtBox in gridName.Children)
{
if (txtBox.GetType() == typeof(TextBox))
((TextBox)txtBox).Text = string.Empty;
if (txtBox.GetType() == typeof(PasswordBox))
((PasswordBox)txtBox).Password = string.Empty;
}
}
答案 3 :(得分:0)
要实现此目的,您可以将控件放置在容器(在本例中为StackPanel)中。
这样,您可以轻松访问所需的控件组。
注意:
示例控件
此示例使用2个按钮:
每个CheckBoxes和Textboxes在StackPanel中声明。
这允许访问容器内的一组控件,从而执行所需的操作。
示例事件
XAML
<Grid container direction = "row">
<Grid item xs={2} key={1}>
<Paper>
<Typography> word </Typography>
</Paper>
<Grid>
<Grid item xs={2} key={2}>
...
</Grid>
...
<Grid item xs={2} key={5}>
...
</Grid>
</Grid>
C#
<!-- Buttons -->
<Button x:Name="btn_ResetText" Click="Button_Click" Content = "Reset" />
<Button x:Name="btn_TogglecheckBoxes" Click="Button_Click" Content = "Toggle" />
<!-- Stack Panel Containing CheckBoxes -->
<StackPanel x:Name="sp_CheckBoxes">
<CheckBox x:Name="myCheckBox1" Content="ContentText1"/>
<CheckBox x:Name="myCheckBox2" Content="ContentText2"/>
<CheckBox x:Name="myCheckBox3" Content="ContentText3"/>
<CheckBox x:Name="myCheckBox4" Content="ContentText4"/>
<CheckBox x:Name="myCheckBox5" Content="ContentText5"/>
</StackPanel>
<!-- Stack Panel Containing TextBoxes -->
<StackPanel x:Name="sp_TextBoxes">
<TextBox x:Name="myTextBox1" Text="Text1"/>
<TextBox x:Name="myTextBox2" Text="Text2"/>
<TextBox x:Name="myTextBox3" Text="Text3"/>
<TextBox x:Name="myTextBox4" Text="Text4"/>
<TextBox x:Name="myTextBox5" Text="Text5"/>
</StackPanel>