- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个可编辑的 ComboBox,它对 Text
属性进行了验证,以确保手动输入的信息有效。
编辑:我想要做的就是使用选择的 ValueMember
而不是 DisplayMember 填充
.Text
属性
我还有 .Items
填充了具有 DisplayMember
和 ValueMember
集的有效条目。
我的 DisplayMember
是一个标题和数据,而 ValueMember
是数据本身。
所以 Items
可能是:
(DisplayMember, ValueMember)
"Foo - 1ab2" , "1ab2"
"Bar - 3cd4" , "3cd4"
我对文本进行了验证,它还可以验证手动用户输入,如“5ef6”
我遇到的问题是,如果用户从组合框中选择一个项目,它会使用 DisplayMember
属性(例如:“Foo - 1ab2”)填充文本字段,这将导致验证失败。
我已尝试在三个相关组合框事件中的每一个上使用 SelectedValue
或 SelectedItem.Value
手动设置 .Text
属性无济于事。
我希望 ComboBox 的 .Text
在被选中时填充项目的 .ValueMember
而不是 .DisplayMember
编辑: 我无法通过尝试从标题中推断值来进行验证。我将 Text
发送到要验证的服务。
void FillMyCombo
{
KeyValuePair<string, string> listValue1 = new KeyValuePair<string, string>("Foo - 1ab2" , "1ab2")
KeyValuePair<string, string> listValue2 = new KeyValuePair<string, string>("Bar - 3cd4" , "3cd4")
myCombo.Items.Add(listValue1);
myCombo.Items.Add(listValue2);
myCombo.DisplayMember = "Key";
myCombo.ValueMember = "Value";
}
...
void myCombo_TextUpdated
{
if(!myValidationService.Validate(myCombo.Text))
{
do error stuff
}
}
用户可以手动输入诸如“5ef6”之类的内容来通过验证。但是当他们从列表中选择一个项目而不是手动输入时,.Text
属性会填充标题而不是值 ...所以它将包含“Foo - 1ab2”并且验证失败。
编辑:作为对发布的答案的回应:我无法更改验证方法以“推断”标题中的值。我无法控制该服务。我所追求的只是显示值
编辑:假设用户从下拉列表中选择“Foo - 1ab2”,我希望框中的文本显示“1ab2”
编辑: 我也曾尝试在代码中设置 .Text
属性,但我似乎无法使其在任何 ComboBox 事件中起作用。如果有人能回答如何在选择事件中以编程方式设置 .Text
属性(并使其提交!),他们也会回答这个问题。
最佳答案
http://nickstips.wordpress.com/2010/11/19/c-datagridviewcomboboxcolumn-displaying-different-values-in-drop-down-list/呢? -- 它们会在打开/关闭下拉列表时即时更改 ValueMember
和 DisplayMember
。
示例用于 DatagridViewComboBox
。 ComboBox 也有这些事件,不是吗?
尝试一下,如果没有帮助,请投反对票:)=
** 更新**
另一个好看的解决方案可能是 ArgumentException when adding ComboBox column to DataGridView with same DataSource , 看看不被接受的答案。
关于c# - 如何使用 ValueMember 填充 ComboBox 编辑字段但在列表中显示 DisplayMember?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747607/
我阅读了很多关于 Winforms ComboBox ValueMember 属性主题的有用帖子,但没有一篇能回答我的具体问题。首先,我将描述一个工作正常的简单示例,然后我将描述我想如何改变它,并询问
我的 ComboBox 控件显示 publishername 和 authorlastname 并存储 publisherid 和 authorid。 当我运行我的代码时,它会显示 publisher
我有一个使用 Windows 窗体绑定(bind)到复选框列表的 linq 查询 var webresourcesFromCRM = from w in orgSvcContext.CreateQue
我有一个 combobox ,我想在这里显示一个字符串作为 DisplayMember并且有一个Dictionary作为ValueMember .我有一个包含带有字符串和字典的对象的列表,这个列表我用
我的选中列表框有问题。 public void GetFolder() { var dict = new Dictionary(); foreach (Fo
如何设置这些值?我有一个数据表,其中包含我想在组合框中设置的所有数据,但我找不到如何设置它。 我试过了 ComboBox1.DataSource = dataTable; ComboBox1.Valu
当我设置 DataSource在控件上并想使用 .ToString()作为DisplayMember , 我需要设置 DisplayMember最后一个或 ValueMember将覆盖它。 MSDN
我正在尝试使用 C# 从 ListBox 中获取所有选定的项目 ValueMember。 例如: 我有一个这样的列表: ID | Name and Lastname -----------------
我有一个小问题。 DataGridViewComboBoxColumn显示来自 ValueMember 的值而不是来自 DisplayMember .网格工作正常,当我从该列中选择某些内容时,我看到
我有一个具有以下结构的组合框。此外,我从另一个来源获取了一个 fld_id,我需要根据该 ID 在 ComboBox 中选择相应的项目。我该怎么做? comboBoxCustomers.DataSou
我有两个具有相同 DisplayMember 和不同 ValueMember 的项目,我想以编程方式选择这两个项目之一,我该怎么做? 项目: 123 -> Peter Pan 234 -> John
我有一个组合框,显示我国不同的市(这些市属于特定省)。由于存在具有相同名称的市政当局,我将“MunicipalityName”(我数据库中“MUNICIPALITY”表中的表列)绑定(bind)到组合
我希望在 ComboBox 上有一个 DisplayMember 和一个 ValueMember,它们只有 4 个值,并且它们始终相同。 是否可以不使用DataTable作为DataSource并且不
我有一个带有 Id、Name 列的组合框。我已将这些值添加到带有数据表的组合框中: DataTable.Rows.Add(1, "Name1"); DataTable.
我正在向 WinForms 应用程序添加一个组合框,我遇到了 DisplayMember 和 ValueMember 属性。它们的功能正是我的应用程序所需要的,但我不确定我是否喜欢它们的工作方式。 c
这是在 Windows 窗体、.NET 4.0 上。 public class Person { public int Id { get; set; } public string N
我有一个可编辑的 ComboBox,它对 Text 属性进行了验证,以确保手动输入的信息有效。 编辑:我想要做的就是使用选择的 ValueMember 而不是 DisplayMember 填充 .Te
我在尝试获取我设置的 ValueMember 值时遇到了一些问题。我正在尝试使用组合框来选择 Windows 窗体报告。我可以得到名称,但不能得到 RptValue。这是我的代码: p
我正在尝试创建包含键值对的列表框。我从类中获得的那些数据是从 getter 提供的。 类: public class myClass { private int key; privat
我正在尝试创建包含键值对的列表框。我从类中获得的那些数据是从 getter 提供的。 类: public class myClass { private int key; privat
我是一名优秀的程序员,十分优秀!