请考虑以下事项:
我使用以下方法填充我的comboBox:
void populateComboBox()
{
comboBox1.DataSource = GetDataTableSource(); // some data table used as source
comboBox1.DisplayMember = "name"; // string
comboBox1.ValueMember = "id"; // id is an int
// Suppose I have this data in my comboBox after populating it
//
//
// id (ValueMember) | name (DisplayMember)
// -----------------------------------------
// 1 | name1
// 2 | name2
// 3 | name3
}
Run Code Online (Sandbox Code Playgroud)
在DrawItem事件中,我想获取DisplayMembercomboBox 的(名称)的值并将其分配给某个变量.到目前为止,我得到了这个代码,似乎没有工作......请纠正.提前致谢....
void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
string name = ((System.Data.DataRowView)(comboBox1.SelectedValue = e.Index))["name"].ToString();
// do something
//
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*ick 14
好吧,我刚刚遇到了这个问题,这是一个更好的答案:
string displayValue = this.GetItemText(this.Items[e.Index]);
g.DrawString(displayValue, e.Font, br, e.Bounds.Left, y + 1);
Run Code Online (Sandbox Code Playgroud)
每个MSDN:
如果未指定DisplayMember属性,则GetItemText返回的值是项的ToString方法的值.否则,该方法返回在item参数中指定的对象的DisplayMember属性中指定的成员的字符串值
http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.getitemtext(v=vs.80).aspx
只使用组合框项目怎么样,它被选择显示值:
string name = (string)comboBox1.Items[e.Index];
Run Code Online (Sandbox Code Playgroud)
如果你得到e.Index = -1,改变DrawMode = OwnerDrawVariable并DropDownStyle = DropDown
编辑:
好吧,我明白出了什么问题。我使用字符串作为数据源进行了测试,因此在您的代码中应该可以这样工作:
string name = ((DataRowView)comboBox1.Items[e.Index])["name"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13761 次 |
| 最近记录: |