使ListBox项具有与项文本不同的值

Cas*_*erT 21 c# winforms

我想要ListBox一整套物品.虽然,每个项目应该有不同的值.因此,当用户选择项目并按下按钮时,将调用一个方法,该方法将使用选择项目具有的值.

我不想向用户透露项目值.

编辑:这不适用于ASP.NET,它适用于Windows窗体应用程序.我只是认为HTML示例很容易阅读.

我从HTML获得灵感:

<form>
<input type="radio" name="sex" value="Value1" /> Male
<br />
<input type="radio" name="sex" value="Value2" /> Female
</form>
Run Code Online (Sandbox Code Playgroud)

这也允许我使用与用户看到的值不同的值.

Fre*_*örk 35

您可以使用ListBox的DisplayMember选择显示的内容.

List<SomeData> data = new List<SomeData>();
data.Add(new SomeData() { Value = 1, Text= "Some Text"});
data.Add(new SomeData() { Value = 2, Text = "Some Other Text"});
listBox1.DisplayMember = "Text";
listBox1.DataSource = data;
Run Code Online (Sandbox Code Playgroud)

当用户选择一个项目时,您可以从所选对象中读取值(或任何其他属性):

int value = (listBox1.SelectedItem as SomeData).Value;
Run Code Online (Sandbox Code Playgroud)

更新:请注意,DisplayMember仅适用于属性,而不适用于字段,因此您需要稍微更改一下类:

public class SomeData
{
    public string Value { get; set; };
    public string Text { get; set; };
}
Run Code Online (Sandbox Code Playgroud)

  • 使用DisplayMember时,更有意义的是设置ValueMember ="Value",然后读取SelectedValue (4认同)