如何在禁用状态下更改组合框的前景?
How to change foreground of combobox on disabled state?
我想阻止用户访问 edit/select 组合框。我尝试使用 cmbbox.IsReadOnly = True
和 cmbbox.IsEditable = False
,它们允许用户通过 alt
和 arrow' keys
更改选择。 cmbbox.isEnabled = False
有效,我的要求是在禁用时将组合框前景色更改为 'Black'。谁能帮我解决一下?
在XAML中:
<telerik:RadComboBox Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" x:Name="combobox1" IsEditable="True" IsFilteringEnabled="True" ItemsSource="{Binding}" TabIndex="7" Style="{ DynamicResource DropDownListStyle }" IsTabStop="True" KeyboardNavigation.TabNavigation ="Local" SelectAllTextEvent="None" Height="23" Margin="0,0,0,2" VerticalAlignment="Center"/>
在代码隐藏中:
combobox1.IsEnabled = False
风格:
<Style x:Name="DropDownListStyle" x:Key="DropDownListStyle" TargetType="telerik:RadComboBox" >
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="BorderBrush" Value="#ffcccccc"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="Thin"/>
<Setter Property="FontFamily" Value="Trebuchet MS"/>
<Setter Property="Panel.ZIndex" Value="10" />
<Setter Property="Height" Value="23" />
<!-- <Setter Property="Focusable" Value="True"/> -->
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="White"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
如果您想阻止用户在不使用 ReadOnly 或 Enabled 的情况下更改此组合框,您可以在 Combo Box SelectedIndexChanged 事件上尝试此操作。
但是在没有看到您的代码的情况下,我们无法解决特定问题。
'Inform the user
MsgBox("You can't change this drop down")
'Reset any choice
e.NewValue = e.CurrentValue
e 是选择选定索引更改事件时传入的事件参数。
我已通过将 IsReadonly = True
属性 设置为 combobox
并触发 PreviewKeyDown
事件来修复它。
combobox1.IsReadonly = True
和
Private Sub combobox1_PreviewKeyDown(sender As Object, e As Windows.Input.KeyEventArgs) Handles combobox1.PreviewKeyDown
If combobox1.IsReadOnly Then
If e.Key = Key.Tab Then
e.Handled = False
Else
e.Handled = True
End If
End If
End Sub
我想阻止用户访问 edit/select 组合框。我尝试使用 cmbbox.IsReadOnly = True
和 cmbbox.IsEditable = False
,它们允许用户通过 alt
和 arrow' keys
更改选择。 cmbbox.isEnabled = False
有效,我的要求是在禁用时将组合框前景色更改为 'Black'。谁能帮我解决一下?
在XAML中:
<telerik:RadComboBox Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" x:Name="combobox1" IsEditable="True" IsFilteringEnabled="True" ItemsSource="{Binding}" TabIndex="7" Style="{ DynamicResource DropDownListStyle }" IsTabStop="True" KeyboardNavigation.TabNavigation ="Local" SelectAllTextEvent="None" Height="23" Margin="0,0,0,2" VerticalAlignment="Center"/>
在代码隐藏中:
combobox1.IsEnabled = False
风格:
<Style x:Name="DropDownListStyle" x:Key="DropDownListStyle" TargetType="telerik:RadComboBox" >
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="BorderBrush" Value="#ffcccccc"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="Thin"/>
<Setter Property="FontFamily" Value="Trebuchet MS"/>
<Setter Property="Panel.ZIndex" Value="10" />
<Setter Property="Height" Value="23" />
<!-- <Setter Property="Focusable" Value="True"/> -->
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="White"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
如果您想阻止用户在不使用 ReadOnly 或 Enabled 的情况下更改此组合框,您可以在 Combo Box SelectedIndexChanged 事件上尝试此操作。
但是在没有看到您的代码的情况下,我们无法解决特定问题。
'Inform the user
MsgBox("You can't change this drop down")
'Reset any choice
e.NewValue = e.CurrentValue
e 是选择选定索引更改事件时传入的事件参数。
我已通过将 IsReadonly = True
属性 设置为 combobox
并触发 PreviewKeyDown
事件来修复它。
combobox1.IsReadonly = True
和
Private Sub combobox1_PreviewKeyDown(sender As Object, e As Windows.Input.KeyEventArgs) Handles combobox1.PreviewKeyDown
If combobox1.IsReadOnly Then
If e.Key = Key.Tab Then
e.Handled = False
Else
e.Handled = True
End If
End If
End Sub