- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这个方法可以将 Conta
实例添加到名为“comboContas”的 ComboBox
中:
public void AdicionaConta(Conta novaConta)
{
comboContas.Items.Add(novaConta);
comboContas.DisplayMember = "Titular";
}
请注意,我已将 DisplayMember
属性设置为“Titular”。这是我的 Conta
类:
public abstract class Conta
{
public int Numero { get; set; }
public double Saldo { get; set; }
public Cliente Titular { get; set; }
public override string ToString()
{
return "titular: " + this.Titular.Nome;
}
}
现在,“Titular”属于Cliente
类型。这是 Cliente
类:
public class Cliente
{
public string Nome { get; set; }
public string Rg { get; set; }
public Cliente(string nome)
{
this.Nome = nome;
}
public override string ToString()
{
return "ToString do Cliente: " + this.Nome;
}
}
我想在“comboContas”组合框中显示的内容类似于“ToString do Cliente: Gabriel”。但是,未调用 Cliente
类的 ToString
方法。相反,被调用的是来自 Conta
类。
这是非常简单的事情,我真的不知道发生了什么。如果我将 DisplayMember
更改为任何其他属性,它将起作用。如果我将“Titular”属性的类型更改为任何其他类型,则会调用此其他类型的 ToString()
。它只是不适用于 Cliente
。
最佳答案
您的代码有问题(在每次添加之后而不是提前设置?)因为它确实按预期工作。检查一下:
using System;
using System.Windows.Forms;
namespace Tests
{
public class Conta
{
public int Numero { get; set; }
public double Saldo { get; set; }
public Cliente Titular { get; set; }
public override string ToString()
{
return "titular: " + this.Titular.Nome;
}
}
public class Cliente
{
public string Nome { get; set; }
public string Rg { get; set; }
public Cliente(string nome)
{
this.Nome = nome;
}
public override string ToString()
{
return "ToString do Cliente: " + this.Nome;
}
}
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var form = new Form { Padding = new Padding(16) };
var comboBox = new ComboBox { Dock = DockStyle.Top, Parent = form };
comboBox.DisplayMember = "Titular";
comboBox.Items.AddRange( new []
{
new Conta { Titular = new Cliente("Victor") },
new Conta { Titular = new Cliente("Mauricio") },
new Conta { Titular = new Cliente("csni") },
});
Application.Run(form);
}
}
}
结果:
关于c# - Combobox 中的 DisplayMember 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32658132/
我有一个列表框,其中绑定(bind)了一个数据表。数据表有两列,“CMM”和“位置”。 “CMM”是一个/两位整数,用作列表框的 DisplayMember,“Location”是一个一位整数,等于
假设我正在使用这样的数据绑定(bind): List Entities = entityBinding.DataSource = Entities; lstEntities.DisplayMembe
我正在尝试获取一个 ListBox 来显示 Accommodation 表的多行的串联。 因为我无法编辑数据源,所以我准备了一个类 AccommodationEntity,它包含原始的 Accommo
我在 Windows 窗体上有一个组合框,我试图用客户端列表填充它。我有一个包含三个值的元组列表 ( var clients = new List>(); ) 我正在从返回 clientID 的 SQ
我使用 Windows 窗体。我想要来自基类的 DisplayMember 相等属性?我有课 public class MyViewModel { public int Id { get; s
我需要在一个组合框中显示多条数据,但我不知道该怎么做。 这是我正在努力工作的代码: innerBox.DisplayMember = @"t => t.TenantName + ""\
我有一个正在填充的 ComboBox,其中 ComboBox.Items 中的每个对象都是一个对象列表。目前,ComboBox 为每个项目显示“(Collection)”。 是否可以让 ComboBo
这个问题涉及一个极小的 Winforms GUI。让大家知道我具有数据绑定(bind)和 INotifyPropertyChanged 的基本知识,并且在 WPF 的 ViewModel 中使用了
我有这个方法可以将 Conta 实例添加到名为“comboContas”的 ComboBox 中: public void AdicionaConta(Conta novaConta) { c
我将 DatagridViewComboBoxColumn 绑定(bind)到数据源,我想在列表和显示成员中显示“名字”+“姓氏”。我该怎么做? 最佳答案 向公开“名称”的数据源添加一个属性。让“姓名
我目前对 C# 还很陌生,我的大部分知识都来自 Java 和 Python。话虽如此,我目前有以下代码: public class Person { public int Person_ID
我正在尝试做一些非常简单的事情 - 将 CheckedListBox 绑定(bind)到对象列表。 Class definition namespace Models { public cla
我的选中列表框有问题。 public void GetFolder() { var dict = new Dictionary(); foreach (Fo
如何设置这些值?我有一个数据表,其中包含我想在组合框中设置的所有数据,但我找不到如何设置它。 我试过了 ComboBox1.DataSource = dataTable; ComboBox1.Valu
当我设置 DataSource在控件上并想使用 .ToString()作为DisplayMember , 我需要设置 DisplayMember最后一个或 ValueMember将覆盖它。 MSDN
目的是将列表视为“名称”列表。 这是字典: class Scripts { public Dictionary scripts = new Dictionary();
我正在尝试将 Windows 窗体项目中 ListBox 的 DisplayMember 属性设置为我绑定(bind)到的通用列表中的嵌套类的属性。 这是一个简单的例子: public class
我尝试在我的 ListBox 组件中将“FirstName”和“LastName”属性显示在同一行,例如“SMITH Robert”,但是当我启动程序时,我有 Id 属性。问题可能是程序没有找到属性“
我正在尝试使用以下代码更改组合框的显示方式: private void UpdateMapRoadPointList(List plstMapRoadPointList) {
当我有一个 DataGridViewComboBoxColumn填充绑定(bind)值,如果我设置 DisplayMember属性,我得到 DataError使用 FormatException 引发
我是一名优秀的程序员,十分优秀!