Jay*_*len 10 c# visual-studio-2010 winforms drop-down-menu
我是新手使用Visual Studio/WinForms/C#
我正在尝试创建一个简单的下拉菜单,其中每个值都可以有一个值和一个标签.
如果我正在创建一个Web应用程序,那么我将在HTML中执行此操作.但是我怎么能用C#和WinForms做到这一点?
<select>
<option value="0">Please select One</option>
<option value="1">The first Options</option>
<option value="2">The Second Options</option>
<option value="3">The Third Options</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我尝试过ComboBox,但似乎我不允许添加值和标签,用户仍然可以输入他们想要的任何内容.
我尝试了一个ListBox,但这也不允许我使用值和标签.
Oli*_*bes 18
如果需要值和标题(标签),请创建适当的类
class ComboItem
{
public int ID { get; set; }
public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在ComboBox中,然后将DisplayMember属性设置为Text,将ValueMember属性设置为ID.
该DropDownStyle组合框的确定其行为.DropDownStyle.DropDown使用户能够键入文本.随着DropDownStyle.DropDownList用户只能从列表中选择项目.
你可以这样填写ComboBox:
myCombo.DataSource = new ComboItem[] {
new ComboItem{ ID = 1, Text = "One" },
new ComboItem{ ID = 2, Text = "Two" },
new ComboItem{ ID = 3, Text = "Three" }
};
Run Code Online (Sandbox Code Playgroud)
该DataSource可以是任何类型的枚举.
您可以像这样检索所选的ID
int id = (int)myComboBox.SelectedValue;
Run Code Online (Sandbox Code Playgroud)
请注意,您可以将任何类型的项添加到ComboBox.如果未指定DisplayMember和ValueMember属性,则ComboBox使用ToString对象的方法来确定显示的文本,并且可以通过SelectedItem属性检索所选项(非选定值).
如果你添加这种类型的对象......
class Person
{
public int PersonID { get; set }
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return FirstName + " " + LastName;
}
}
Run Code Online (Sandbox Code Playgroud)
...对于ComboBox,您可以像这样检索所选项目
Person selectedPerson = (Person)myComboBox.SelectedItem;
int personID = selectedPerson.PersonID;
Run Code Online (Sandbox Code Playgroud)
ComboBox将显示人员的名字和姓氏.
您需要为 Combobox 设置数据源,最好创建一个类并传递对象列表,例如:
private void Init()
{
List<Item> items = new List<Item>();
items.Add(new Item() { Text = "displayText1", Value = "ValueText1" });
items.Add(new Item() { Text = "displayText2", Value = "ValueText2" });
items.Add(new Item() { Text = "displayText3", Value = "ValueText3" });
comboBox1.DataSource = items;
comboBox1.DisplayMember = "Text";
comboBox1.ValueMember = "Value";
}
public class Item
{
public Item() { }
public string Value { set; get; }
public string Text { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
将Init()方法放在您的FormName_Load(object sender, EventArgs e){}.
看起来该值只是对所选项目的引用,对吗?然后你可以使用组合框的索引,使它变得更容易。
不确定您的项目在构建之前是否已知,如果是,则只需将它们添加到设计器、组合框的属性中。如果没有,那么您可以通过执行以下操作来动态添加它们:
List<string> items = new List<string>() { "item1", "item2" };
comboBox1.DataSource = items;
Run Code Online (Sandbox Code Playgroud)
并了解选择了什么项目:
int index = comboBox1.SelectedIndex;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47337 次 |
| 最近记录: |