如何在C#中的组合框显示成员中追加两个字段值

Mek*_*ine 15 c# combobox winforms

在我的表,我的领域firstnamelastname,现在我要的是设置firstnamelastname作为displaymember一个组合框,但我不知道该怎么做.

像这样的东西

cmbEmployees.DataSource = GetEmployees();
//something like below line which doesn't work
cmbEmployees.DisplayMember = "lastname, first_name";     
cmbEmployees.ValueMember = "id";
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?这样既lastnamefirstname将被显示在combobox

Eli*_*uta 54

此示例将指导您如何在不修改基类的情况下执行此操作.

首先,您可以将DisplayMember留给一个属性,让我们说:

cmbEmployees.DisplayMember = "lastname";
Run Code Online (Sandbox Code Playgroud)

现在,在[Design]模式下转到表单,右键单击ComboBox - > Properties.

在"属性"窗口的顶部,单击"事件"(闪电图标),

在下面的事件列表中查找格式(在Property Changed下)并输入一些事件名称,例如:ComboBoxFormat,然后按Enter键.你会看到这个:

private void ComboBoxFormat(object sender, ListControlConvertEventArgs e)
{

}
Run Code Online (Sandbox Code Playgroud)

现在写下以下几行:

private void ComboBoxFormat(object sender, ListControlConvertEventArgs e)
{
    // Assuming your class called Employee , and Firstname & Lastname are the fields
    string lastname = ((Employee)e.ListItem).Firstname;
    string firstname = ((Employee)e.ListItem).Lastname;
    e.Value = lastname + " " + firstname;
}
Run Code Online (Sandbox Code Playgroud)

而已 ;)


Mas*_*ash 26

假设你有一个这样的类:

class Person
{
    public string FirstName
    {
        get;
        set;
    }

    public string LastName
    {
        get;
        set;
    }

    public string FullName
    {
        get
        {
            return LastName + ", " + FirstName;
        }
    }

    public Person(string firstname, string lastname)
    {
        FirstName = firstname;
        LastName = lastname;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您没有FullName属性,只需以您希望显示名称的格式创建一个属性.然后设置DisplayMember等于FullName.


and*_*ndy 18

您的查询在GetEmployees()函数中应该是这样的.

"SELECT id,(lastname + ' ' + first_name) AS NAME FROM TABLE"

cmbEmployees.DataSource = GetEmployees();
cmbEmployees.DisplayMember = "NAME"; 
cmbEmployees.ValueMember = "id";
Run Code Online (Sandbox Code Playgroud)