在组合框中选择一个项目,然后将组合框文本设置为另一个
本文关键字:组合 然后 文本 另一个 项目 设置 选择 一个 | 更新日期: 2023-09-27 18:20:44
我想制作一个ComboBox
,用户可以在文本区域中键入一个整数值,但下拉列表包含几个"默认"值。例如,下拉列表中的项目的格式如下:
- 默认值-0
- 值1-1
- 值2-2
我想要的是,当用户选择一个项目(例如"Default-0")时,ComboBox
文本将只显示数字"0",而不是"Default-0"。"默认值"只是一个信息文本。
我玩过以下事件:SelectedIndexChanged
、SelectedValueChanged
和SelectionChangeCommitted
,但我无法更改ComboBox
的文本。
private void ModificationCombobox_SelectionChangeCommitted(object sender, EventArgs e)
{
ComboBox comboBox = (ComboBox)sender; // That cast must not fail.
if (comboBox.SelectedIndex != -1)
{
comboBox.Text = this.values[comboBox.SelectedItem.ToString()].ToString(); // Text is not updated after...
}
}
您可以为ComboBox
项定义一个类,然后创建一个List<ComboBoxItem>
并将其用作Combobox.DataSource
。有了这个,您可以将ComboBox.DisplayMember
设置为您想要显示的属性,并且仍然可以从ComboBox_SelectedIndexChanged()
:获得对对象的引用
class ComboboxItem
{
public int Value { get; set; }
public string Description { get; set; }
}
public partial class Form1 : Form
{
List<ComboboxItem> ComboBoxItems = new List<ComboboxItem>();
public Form1()
{
InitializeComponent();
ComboBoxItems.Add(new ComboboxItem() { Description = "Default = 0", Value = 0 });
ComboBoxItems.Add(new ComboboxItem() { Description = "Value 1 = 1", Value = 1 });
ComboBoxItems.Add(new ComboboxItem() { Description = "Value 2 = 2", Value = 2 });
comboBox1.DataSource = ComboBoxItems;
comboBox1.DisplayMember = "Value";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var item = (ComboboxItem)((ComboBox)sender).SelectedItem;
var test = string.Format("Description is ''{0}'', Value is ''{1}''", item.Description, item.Value.ToString());
MessageBox.Show(test);
}
}
[编辑]如果你想在框在下拉状态之间嘟嘟作响时更改显示的文本,试试这个:(这是一个概念,不确定它会如何表现)
private void comboBox1_DropDown(object sender, EventArgs e)
{
comboBox1.DisplayMember = "Description";
}
private void comboBox1_DropDownClosed(object sender, EventArgs e)
{
comboBox1.DisplayMember = "Value";
}