combobox 相关问题

Combobox允许从多个选项中选择一个(类似于下拉列表),或者键入自定义选项。

使用 MySQL 在 Javafx 中过滤和排序表视图

,我想使用基于 2 个组合框值(cmbClass、cmbaSection)的文本字段对 MySQL 中的数据进行排序 我尝试使用文本字段过滤表格视图,但是当我付款时,有人不能

回答 1 投票 0

VBA - 自定义选项卡 Excel 菜单 - 组合框 - 用户选择后重置

早上好, 我使用 Office Ribbon X 编辑器创建了一个个性化菜单,其中包括一个带有两个 3 个选项(选择、升序和降序)的组合框。当用户选择降序时,这是一个例程,所以...

回答 1 投票 0

如何禁用ComboBox中第一项的自动选择?

我有一个带有 ComboBox 的表单,其中填充了 3 个项目。 当我添加语句时:comboBox1.Text = "A";和comboBox1.DroppedDown = true; 下拉列表的第一项是

回答 5 投票 0

为什么在vb.net中我必须按两次键盘上的Escape

我正在使用 DropdownStyle Combobox: Dropdown 如果我按键盘上的 Enter 键,则只能按一次,但为什么如果我按键盘上的 Escape 键,则必须执行两次, 我使用 String.Equals

回答 1 投票 0

无法将 Access 记录中的一列与同一记录中的另一列等同

我正在使用适用于企业的 Access 版本 MS 365 应用程序(桌面版本)。 当我尝试从表中获取特定字段值时,我得到的结果相当于空或空结果。 我是...

回答 1 投票 0

带有plugin.cellediting的ExtJS 7.7网格单击组合触发器时似乎无法打开组合

当使用带有“单元格编辑”插件的 Ext.grid.Panel 时,单击带有标记字段/组合的行开始编辑字段,然后单击组合/标记字段触发器(直角三角形),似乎没有打开下拉菜单...

回答 1 投票 0

如何将 wpf 组合框绑定到枚举类型并将其显示在组合框中作为定义枚举的描述?

公共枚举 IVAC_VT_SHIFT_SPD { [描述(“16.1299991607666”)] 数据16, [描述(“32.130001068115234”)] 数据32, } public enum IVAC_VT_SHIFT_SPD { [Description("16.1299991607666")] DATA16, [Description("32.130001068115234")] DATA32, } <ComboBox Grid.Row="8" Grid.Column="2" Width="194" Height="40" Margin="0,0,3,0" HorizontalAlignment="Right" VerticalContentAlignment="Center" ItemsSource="{Binding Source={StaticResource IVAC_VT_SHIFT_SPD}}" SelectedValue="{Binding VTShiftSPD}" /> <ObjectDataProvider x:Key="IVAC_VT_SHIFT_SPD" MethodName="GetValues" ObjectType="{x:Type System:Enum}"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="enm:IVAC_VT_SHIFT_SPD" /> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> private IVAC_VT_SHIFT_SPD _VTShiftSPD = IVAC_VT_SHIFT_SPD.DATA16; public IVAC_VT_SHIFT_SPD VTShiftSPD { get => _VTShiftSPD; set { _VTShiftSPD = value; OnPropertyChanged(nameof(VTShiftSPD)); } } 我想要的是将枚举类型值绑定到组合框。但是,我希望组合框的内容显示为说明的内容。该选择必须选择为枚举。 有没有不用转换器的方法? 有没有办法只用Xaml来完成它? 我想要一个简单的方法。 我认为您可以非常接近地实现您正在寻找的目标。我确实使用了几个 C# 类来完成它,但这些类将适用于未来的任何枚举,而无需您不断创建其他类或代码来方便在下拉列表中获取描述。 在我的示例中,我能够产生以下结果 public enum IVAC_VT_SHIFT_SPD { [Description("16.1299991607666")] DATA16, [Description("32.130001068115234")] DATA32, } <Window ... xmlns:local="clr-namespace:StackOverflowAnswers.Wpf" ...> <ComboBox x:Name="Combo" ItemsSource="{Binding Source={enums:EnumBindingSource {x:Type enums:IVAC_VT_SHIFT_SPD}}}" DisplayMemberPath="Description" SelectedValuePath="Value" /> 为了促进这一点,我使用了此链接中概述的方法的改编版:https://brianlagunas.com/a-better-way-to-data-bind-enums-in-wpf/。如果您直接遵循这一点,则无需枚举的 ViewModel 即可获得非常相似的结果。然而,我喜欢使用 ViewModel,因为它允许我根据需要调整一些东西,比如添加对图标属性的支持。 在我的示例中,我创建了一个 EnumViewModel 类来容纳组合框中将显示的内容: public class EnumViewModel { public EnumViewModel(Enum value) { Value = value; Description = getDescription(value); } public Enum Value { get; } public string Description { get; } private string getDescription(Enum value) { if (!(value?.GetType().GetField(value?.ToString()) is FieldInfo enumField)) // value is null... return string.Empty; var descriptionAttribute = enumField.GetCustomAttributes(typeof(DescriptionAttribute), false) .OfType<DescriptionAttribute>() .FirstOrDefault(); if (descriptionAttribute is null || string.IsNullOrEmpty(descriptionAttribute.Description)) // description attribute is missing or blank... return value.ToString(); return descriptionAttribute.Description; } } 还有一个 MarkupExtension 允许我直接绑定到它,而不必将其包含在视图模型或后面的代码中。这设置了使用 Source={enums:EnumBindingSource ...} 的能力。 public class EnumBindingSourceExtension : MarkupExtension { private Type _enumType; public Type EnumType { get => this._enumType; set { if (value == this._enumType) return; if (!isEnumType(value)) throw new ArgumentException("Type must be for an Enum."); this._enumType = value; } } private bool isEnumType(Type type) { if (type is null) return false; var enumType = Nullable.GetUnderlyingType(type) ?? type; return enumType.IsEnum; } public EnumBindingSourceExtension() { } public EnumBindingSourceExtension(Type enumType) { this.EnumType = enumType; } public override object ProvideValue(IServiceProvider serviceProvider) { if (this._enumType is null) throw new InvalidOperationException("The EnumType must be specified."); var actualEnumType = Nullable.GetUnderlyingType(this._enumType) ?? this._enumType; var enumValues = Enum.GetValues(actualEnumType) .OfType<Enum>() .Select(x => new EnumViewModel(x)) .ToList(); return enumValues; } } 枚举不应该显示在 UI 中。枚举是整数的简单枚举,其中每个值都有一个关联的名称。 您的场景根本超出了 enum 类型的意图。 如果您想定义一组常量,其中每个常量携带数据,那么您应该定义一个类型(class 或 struct)。这也将为您在视图中呈现数据提供更大的灵活性,而无需转换器和反射的额外开销。您最终会得到更干净、自然/直观的代码。在您的场景中使用 enum 并不优雅,也没有任何好处。 enum 必须具有代表性,属性或表中不存储任何元数据。 如果 enum 本身确实有意义,您甚至可以考虑使用此自定义类型来定义 enum 的属性 - 仅当该类型不是 enum 的扩展(用于携带元数据)时才会出现这种情况数据),因为 enum 值必须能够独立,即在没有元数据的情况下使用。 例如,如果您创建一个枚举 Color,其中包含 Color.Red 等值,并且如果没有实际的红色值,则无法使用这些值,那么 Color.Red 不应该是枚举,而应该是 class 或 struct 能够定义该元数据。 建议的解决方案如下所示: VTShiftSPD.cs // TODO::Implement IEquatable<VTShiftSPD> (don't forget to override GetHashCode) public readonly struct VTShiftSPD : IEquatable<VTShiftSPD> { public const string Data16 = "DATA16"; public const string Data32 = "DATA32"; public VTShiftSPD(string id, double value) { this.Id = id; this.Value = value; } public string Id { get; } public double Value { get; } } 您可以使用和比较它,例如如下(没有任何反映!): static Main() { var vTShiftSPD = new VTShiftSPD(VTShiftSPD.Data16, 16.1299991607666); Evaluate(vTShiftSPD); } private static void Evaluate(VTShiftSPD vTShiftSPD) { switch (vTShiftSPD.Id) { case VTShiftSPD.Data16: break; case VTShiftSPD.Data32: break; default: break; } } 如果从 VTShiftSPD 创建的实例集不是开放集,您甚至可以将它们本身定义为常量: VTShiftSPDs.cs static class VTShiftSPDs { public static readonly VTShiftSPD Spd16 = new VTShiftSPD(VTShiftSPD.Data16, 16.1299991607666); public static readonly VTShiftSPD Spd32 = new VTShiftSPD(VTShiftSPD.Data32, 32.130001068115234); } 并按如下方式使用它: static Main() { Evaluate(VTShiftSPDs.Spd16); } private static void Evaluate(VTShiftSPD vTShiftSPD) { switch (vTShiftSPD.Id) { case VTShiftSPD.Data16: break; case VTShiftSPD.Data32: break; default: break; } } 并优雅(且高效)地使用它来填充数据视图: MainWindow.xaml.cs // The data source for the ComboBox.ItemsSource public ObservableCollection<VTShiftSPD> VTShiftSPDs { get; } = new ObservableCollection<VTShiftSPD> { VTShiftSPDs.Spd16, VTShiftSPDs.Spd32, }; MainWindow.xaml <Window> <StackPanel> <ComboBox x:Name="VTShiftSPDSelector" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType Window}, Path=VTShiftSPDs}" DisplayMemberPath="Value" /> <Stackpanel DataContext="{Binding Elementname=VTShiftSPDSelector, Path=SelectedItem}> <TextBlock x:Name="Id" Text{Binding Id}" /> <!-- Displays e.g. DATA16 --> <TextBlock x:Name="Value" Text{Binding Value}" /> <!-- Displays e.g. 16.1299991607666 --> </StackPanel> </StackPanel> </Window>

回答 2 投票 0

单击退格键或删除按钮时从组合中取消选择项目

我想在可编辑区域中单击退格键或删除按钮时取消选择 extjs 多选组合框中的选定项目。我知道这在标签字段中是可能的,但我的要求很具体......

回答 1 投票 0

在 VBA 中从 DataModel (Power Pivot) 检索数据

首先,抱歉。我是一个相对较新的 VBA 用户,在寻找下面问题的答案时我有点迷失了。 我正在创建一个用户窗体,其中将包含一些组合框以供使用...

回答 1 投票 0

如何取消选择组合框的文本

我有一个氪组合框,我将其与键值对列表进行数据绑定。发生的情况是,当我在代码中设置所选项目时,它会突出显示文本。我怎样才能防止这种情况或...

回答 16 投票 0

Angular Kendo UI 组合框清除

我想清除我的剑道组合框的选择。 我想清除我的剑道组合框的选择。 <kendo-combobox #products [data]="productData" [(ngModel)]="selectedProduct" (selectionChange)="handleSelectionChange($event)" [textField]="'DisplayName'" [valueField]="'ID'"></kendo-combobox> 如您所见,我与 ngModel 进行了双向绑定。当我将“selectedProduct”设置为 null 时,组合框似乎为空并重置。 但这是我的问题: 当我选择与将 selectedProduct 设置为 null 之前选择的相同项目时,组合框不会触发“selectionchange”。 那么如何以角度方式正确重置 Kendo Combobox? 有没有办法以编程方式触发组合框清除按钮后面的功能?这也能解决我的问题。 希望大家能帮帮我,谢谢。 您需要对 ComboBox 使用双向绑定。您可以将双向绑定变量设置为 undefined 以清除选择。 与使用组件上的清除按钮相同的行为:Kendo ComboBox clearButton options: {Title: string, Value: string} = [ ... ]; selectedOption: {Title: string, Value: string}; <kendo-combobox [data]="options" textField="Title" valueField="Value" [(ngModel)]="selectedOption" </kendo-combobox> function onClickDelete() { this.selectedOption = undefined; }

回答 1 投票 0

如何通过在WPF组合框中键入键盘字母键来选择项目?

我有一个 WPF 组合框,当我键入该字母时,我想转到组合框中以(例如)“e”开头的项目。如何? 我的 XAML 代码: 我有一个 WPF ComboBox,当我键入该字母时,我想转到 ComboBox 中以(例如)“e”开头的项目。怎么办? 我的XAML代码: <ComboBox ItemsSource="{Binding Roles}" SelectedValuePath="Id" ItemTemplate="{StaticResource ComboBoxDisplayName}" SelectedItem="{Binding SelectedRole}" Width="150"/> 编辑:我猜你有一个ItemTemplate,看起来有点像这样: <StackPanel> <TextBlock Text="{Binding Path=Foo}" /> <TextBlock Text="{Binding Path=Bar}" /> </StackPanel> 如果您想搜索 Foo,请尝试... <ComboBox IsEditable = "True" TextSearch.TextPath = "Foo" /> 默认情况下,ComboBox有一种自动完成功能,可以根据第一个字母查找匹配项 - 假设您的源按字母顺序排序,这会将所选项目移动到(例如)以“e”开头的部分。 如果您希望有多个以同一字母开头的条目,则捕获 KeyDown 强制打开下拉菜单可能会很有用。 假设您的项目按字母顺序排序,只需设置 IsTextSearchEnabled="True" 即可跳转到以您在 ComboBox 中输入的字母(或多个字母)开头的项目。 这是我的 ComboBox 之一的示例,我简化了绑定,因为它显然不是这里的重要部分... <ComboBox ItemsSource="{Binding MyObjectList}" DisplayMemberPath="Description" SelectedValuePath="Code" IsTextSearchEnabled="True"/> 这非常适合从列表中选择一个值,但是,您键入的搜索值不会显示在控件的 TextBox 部分中,因为我将 IsEditable 设置为 false。 如果有人想解释为什么这被否决,我将不胜感激,我不认为我提供的答案有任何问题,也不明白为什么当我只是想这样做时我应该失去声誉帮助(并提供了合理的答案!) 我所要做的就是添加以下内容: TextSearch.TextPath="<what ever you bound to goes here> ie:State or name " 我知道这是一篇旧帖子,但这可能会对某人有所帮助。 如果您正在使用绑定(您应该这样做)以及 ItemSource 和 SelectedItem,那么只需添加 TextSearch.TextPath="您的绑定显示属性" 正如@mwolff 所述即可正常工作。 <ComboBox Grid.Row="2" Grid.Column="0" Height="25" VerticalContentAlignment="Center" HorizontalAlignment="Center" Width="150" ItemsSource="{Binding EquipmentTypes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedEquipmentType,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="Equipment_Type_ID" TextSearch.TextPath="Equipment_Type_Code" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ComboBox.Resources> <Style TargetType="Popup"> <Setter Property="Width" Value="155"/> </Style> </ComboBox.Resources> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Equipment_Type_Code}" TextWrapping="NoWrap" /> </DataTemplate> </ComboBox.ItemTemplate>

回答 4 投票 0

将绑定源转换为 VB.NET 中的 datagridview 时,对象引用未设置为组合框中对象的实例

我尝试将绑定源转换为datagridview,但出现错误,问题出在组合框绑定中。下面,如果我使用第一个代码选项,就没有问题错误,但是如果我使用...

回答 1 投票 0

基于文本框值的列表框搜索 - 根据搜索条件存在几个错误

我有一个包含 9 列的列表框(lstMaster);一个 ComboBox (cboSearchItem),其值表示列标题和一个 TextBox (txtSearch)。 用户从 cboSearchItem 中选择一个值并...

回答 1 投票 0

在列表框项目内有一个可用的组合框

基本上我有一个名为“Exercise”的道具抽象类。它有两个子类“Cardio”和“Strength”,它们具有不同的属性。我现在正在处理的页面的目的是允许

回答 1 投票 0

为什么 Pivot 在 UWP 数据网格的行详细信息部分中不响应触摸

我正在开发一个 UWP 应用程序,我的要求是 - 我有一个数据网格,其中包含使用 DataTemplate 资源定义的行详细信息部分。并且模板内部会有一个带有多个枢轴的枢轴

回答 2 投票 0

如何在 js 中使用 datatables.net 搜索使用 select 元素搜索其值而不是键的列

所以我有一个表列,它使用剃刀页面中的键值对列表作为选择元素,并且当使用主数据表搜索栏搜索表时,会在...

回答 1 投票 0

为什么在VB.NET中没有出现Binding Combobox usingdictionary with the MS ACCESS database with dapper

我正在尝试使用VB.NET中的dapper将字典与MS ACCESS数据库绑定组合框。 所以我希望使用字典的绑定出现在组合框中,这是表的结果

回答 1 投票 0

在 Access 中,填充绑定组合框的 SQL 查询不会更新

在我的表单中,我有一个组合框,其中使用选择不同查询列出了表中的所有用户。如果该名称不在列表中,人们还可以在组合框中输入新名称。 移动时...

回答 1 投票 0

如何创建组合框项目

我想使用组合框为用户提供多种选项。所以有2个组合框。第一个大约有 5 个选项,第二个项目将根据用户的选择创建...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.