在 C# 中的运行时未选中复选框时禁用文本框

Posted

技术标签:

【中文标题】在 C# 中的运行时未选中复选框时禁用文本框【英文标题】:Disable text box when Check box is Unchecked during run time in C# 【发布时间】:2012-10-19 13:41:46 【问题描述】:

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

我用下面的代码做到了

private void checkTime_Checked(object sender, RoutedEventArgs e)

    if (checkTime.IsChecked == true)
    
        txtTime_SR.IsEnabled = true;
    

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

有这样做的想法吗?

【问题讨论】:

【参考方案1】:

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

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;

【讨论】:

我在 .Net 方面的经验并不丰富。对于文本框,没有“启用”方法。只有“IsEnabled”方法。 :( 然后尝试使用 IsEnabledIsChecked - 如果它们不是只读属性,它应该可以工作。【参考方案2】:
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;

【讨论】:

【参考方案3】:

阅读您的帖子和 cmets,我猜您正在使用 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?

希望对你有帮助

【讨论】:

【参考方案4】:

我知道这是一篇旧帖子,但这应该可以。使用 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;
    

【讨论】:

【参考方案5】:

更简单

<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" />

【讨论】:

以上是关于在 C# 中的运行时未选中复选框时禁用文本框的主要内容,如果未能解决你的问题,请参考以下文章

启用文本框时如何触发新的验证?

使用javascript查找放置在gridview中的复选框和文本框

禁用 RichTextBox 中的滚动(c#)

在复选框和文本框上使用相同的功能切换可见性[重复]

如何通过 JavaScript 使 asp 文本框为空

jquery 基于单选按钮启用/禁用文本框