gpt4 book ai didi

c# - 在组合框中选择一个项目并将组合框文本设置为不同的?

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:31 25 4
gpt4 key购买 nike

我想创建一个 ComboBox,用户可以在其中的文本区域中键入一个整数值,但下拉列表包含几个“默认”值。例如,下拉列表中的项目将采用如下格式:

  • 默认 - 0
  • 值 1 - 1
  • 值 2 - 2

我想要的是,当用户选择一个项目(例如“Default - 0”)时,ComboBox 文本将只显示数字“0”而不是“Default - 0”。 “默认”一词只是信息性文本。

我玩过以下事件:SelectedIndexChangedSelectedValueChangedSelectionChangeCommitted,但我无法更改组合框

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);
}
}

[编辑]如果您想在 DropDown 状态之间切换框时更改显示的文本,请尝试以下操作:(这是一个概念,不确定它会如何表现)

    private void comboBox1_DropDown(object sender, EventArgs e)
{
comboBox1.DisplayMember = "Description";
}

private void comboBox1_DropDownClosed(object sender, EventArgs e)
{
comboBox1.DisplayMember = "Value";
}

关于c# - 在组合框中选择一个项目并将组合框文本设置为不同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8893182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com