在C#中运行时取消选中复选框时禁用文本框

时间:2012-10-30 08:31:36

标签: c# wpf

我有一个CheckBox和一个TextBox。在运行期间,
如果CheckBox已选中,则启用TextBox。

我是使用以下代码

完成的
private void checkTime_Checked(object sender, RoutedEventArgs e)
{
    if (checkTime.IsChecked == true)
    {
        txtTime_SR.IsEnabled = true;
    }
}

我需要做的是,在运行时取消选中CheckBox时禁用TextBox。

有没有想过这样做?

5 个答案:

答案 0 :(得分:10)

阅读你的帖子和评论,我猜你正在做WPF或Silverlight。 然后,在这种情况下,您可以在XAML中完成所有操作:

<CheckBox x:Name="checkTime" />
<TextBox x:Name="txtTime_SR" IsEnabled="{Binding IsChecked, ElementName=checkTime, Converter={StaticResource NotConverter}, Mode=OneWay}"/>

然后,您需要创建转换器。这可以通过阅读帖子来完成:How to bind inverse boolean properties in WPF?

希望有所帮助

答案 1 :(得分:5)

如果我理解,您希望在选中复选框时启用文本框,并且在取消选中该复选框时禁用该文本框?

private void checkTime_Checked(object sender, RoutedEventArgs e)
{
    txtTime_SR.Enabled = checkTime.Checked;
}

您使用的是标准的.NET TextBoxCheckBox控件吗?

编辑:好的,所以它是WPF。这样做:

private void checkTime_Checked(object sender, RoutedEventArgs e)
{
    txtTime_SR.IsEnabled = checkTime.IsChecked;
}

答案 2 :(得分:1)

更简单

<CheckBox Content="Include the following..." IsChecked="{Binding IncludeMyItems}" Name="checkBox_includeMyItems" />
<TextBox Name="myItems" Text="{Binding MyItems}" Height="23" Width="165" IsEnabled="{Binding IsChecked, ElementName=checkBox_includeMyItems}" />

答案 3 :(得分:0)

private void checkTime_Checked(object sender, RoutedEventArgs e)
{
 txtTime_SR.Enabled = checkTime.Checked;
}

private void checkTime_Checked(object sender, RoutedEventArgs e)
{
    txtTime_SR.IsEnabled = checkTime.IsChecked;
}

答案 4 :(得分:0)

我知道这是一个老帖子,但这应该有效。使用Checked / Unchecked事件。

   private void checkbox_otherflag_Unchecked(object sender, RoutedEventArgs e)
    {
        this.textbox_otherflagtext.IsEnabled = false;
    }

    private void checkbox_otherflag_Checked(object sender, RoutedEventArgs e)
    {
        this.textbox_otherflagtext.IsEnabled = true;
    }