在 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 TextBox
和 CheckBox
控件?
编辑:好的,所以它是 WPF。这样做:
private void checkTime_Checked(object sender, RoutedEventArgs e)
txtTime_SR.IsEnabled = checkTime.IsChecked;
【讨论】:
我在 .Net 方面的经验并不丰富。对于文本框,没有“启用”方法。只有“IsEnabled”方法。 :( 然后尝试使用IsEnabled
和 IsChecked
- 如果它们不是只读属性,它应该可以工作。【参考方案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# 中的运行时未选中复选框时禁用文本框的主要内容,如果未能解决你的问题,请参考以下文章