C# 如何在使用键、值对时以编程方式选择组合框中的项目
有人能解释一下,当项目定义如下时,我如何通过编程在组合框中选择项目:C# 如何在使用键、值对时以编程方式选择组合框中的项目,c#,combobox,C#,Combobox,有人能解释一下,当项目定义如下时,我如何通过编程在组合框中选择项目: class ComboboxItem { public string DisplayString; public string Key; public ComboboxItem(string key, string displayString) { Key = key; DisplayString
class ComboboxItem
{
public string DisplayString;
public string Key;
public ComboboxItem(string key, string displayString)
{
Key = key;
DisplayString = displayString;
}
// Generates the text shown in the combo box
public override string ToString()
{
return DisplayString;
}
}
myCombo.Items.Add(new ComboboxItem(“<key>“, “<text_to_display>”));
组合框在运行时填充以下项目:
class ComboboxItem
{
public string DisplayString;
public string Key;
public ComboboxItem(string key, string displayString)
{
Key = key;
DisplayString = displayString;
}
// Generates the text shown in the combo box
public override string ToString()
{
return DisplayString;
}
}
myCombo.Items.Add(new ComboboxItem(“<key>“, “<text_to_display>”));
我需要根据键以编程方式选择一个项,但我不能使用这里提出的建议:因为在运行时填充组合框时,我不知道数据项。有人能帮忙吗?非常感谢
编辑-这是一个winforms应用程序。尝试类似的方法
comboBox1.Items.Add(new ComboboxItem("a", "a"));
comboBox1.Items.Add(new ComboboxItem("b", "b"));
comboBox1.Items.Add(new ComboboxItem("c", "c"));
comboBox1.Items.Add(new ComboboxItem("d", "d"));
var key = "c";
foreach (var item in comboBox1.Items)
{
var comboItem = (ComboboxItem) item;
if (comboItem.Key.Equals(key))
comboBox1.SelectedItem = comboItem;
}
我刚刚做了一个Winforms项目,它成功了。组合框将c显示为选定值
你也可以用linq。这可能是一种选择项目的方法
public void SelectItem(string key)
{
var comboItem = comboBox1.Items
.Cast<ComboboxItem>()
.FirstOrDefault(item => item.Key.Equals(key));
if (comboItem == null)
{
//do whatever you want
}
else
{
comboBox1.SelectedItem = comboItem;
}
}
希望有帮助试试这样的方法
comboBox1.Items.Add(new ComboboxItem("a", "a"));
comboBox1.Items.Add(new ComboboxItem("b", "b"));
comboBox1.Items.Add(new ComboboxItem("c", "c"));
comboBox1.Items.Add(new ComboboxItem("d", "d"));
var key = "c";
foreach (var item in comboBox1.Items)
{
var comboItem = (ComboboxItem) item;
if (comboItem.Key.Equals(key))
comboBox1.SelectedItem = comboItem;
}
我刚刚做了一个Winforms项目,它成功了。组合框将c显示为选定值
你也可以用linq。这可能是一种选择项目的方法
public void SelectItem(string key)
{
var comboItem = comboBox1.Items
.Cast<ComboboxItem>()
.FirstOrDefault(item => item.Key.Equals(key));
if (comboItem == null)
{
//do whatever you want
}
else
{
comboBox1.SelectedItem = comboItem;
}
}
希望它在查看代码时有所帮助,有一件事并不是真正的问题,那就是必须重新发明轮子。ComboboxItem类看起来很像字典,因此似乎没有必要用ComboboxItem类重新创建这个类 另一个问题是你的评论 我需要根据键以编程方式选择项目,但我不能使用此处提出的建议:设置 基于键、值对的组合框。因为我没有先见之明 在运行时填充组合框时的数据项 如果这是真的,那么你怎么可能知道选择什么呢 下面的代码使用了字典、组合框、文本框和按钮。字典将填充一些数据,然后设置为组合框的数据源。组合框中仅显示文本。在表单上,文本框用于允许用户键入一个值,以便在单击按钮时将组合框的选定值更改为。如果字典中不存在该键,则会显示一条消息,指示未找到索引 既然你说你不知道你可能在寻找什么,我很好奇你希望如何选择合适的索引。希望这有意义
Dictionary<int, string> comboBoxData = new Dictionary<int, string>();
public Form1() {
InitializeComponent();
comboBoxData = GetDataDictionary();
comboBox1.DataSource = new BindingSource(comboBoxData, null);
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";
}
private void SetSelectedIndex(int indexToSelect) {
if (comboBoxData.Keys.Contains(indexToSelect)) {
comboBox1.SelectedIndex = indexToSelect;
}
else {
MessageBox.Show("The supplied key does not exist!");
}
}
private Dictionary<int, string> GetDataDictionary() {
Dictionary<int, string> dictionary = new Dictionary<int, string>();
for (int i = 0; i < 15; i++) {
dictionary.Add(i, "Item name " + i);
}
return dictionary;
}
private void buttonSelectIndex_Click(object sender, EventArgs e) {
if (tbIndexToSelect.Text != "") {
int indexToSelect = comboBox1.SelectedIndex;
if (int.TryParse(tbIndexToSelect.Text, out indexToSelect)) {
SetSelectedIndex(indexToSelect);
}
}
}
在查看代码时,有一件事并不是真正的问题,那就是必须重新发明轮子。ComboboxItem类看起来很像字典,因此似乎没有必要用ComboboxItem类重新创建这个类 另一个问题是你的评论 我需要根据键以编程方式选择项目,但我不能使用此处提出的建议:设置 基于键、值对的组合框。因为我没有先见之明 在运行时填充组合框时的数据项 如果这是真的,那么你怎么可能知道选择什么呢 下面的代码使用了字典、组合框、文本框和按钮。字典将填充一些数据,然后设置为组合框的数据源。组合框中仅显示文本。在表单上,文本框用于允许用户键入一个值,以便在单击按钮时将组合框的选定值更改为。如果字典中不存在该键,则会显示一条消息,指示未找到索引 既然你说你不知道你可能在寻找什么,我很好奇你希望如何选择合适的索引。希望这有意义
Dictionary<int, string> comboBoxData = new Dictionary<int, string>();
public Form1() {
InitializeComponent();
comboBoxData = GetDataDictionary();
comboBox1.DataSource = new BindingSource(comboBoxData, null);
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";
}
private void SetSelectedIndex(int indexToSelect) {
if (comboBoxData.Keys.Contains(indexToSelect)) {
comboBox1.SelectedIndex = indexToSelect;
}
else {
MessageBox.Show("The supplied key does not exist!");
}
}
private Dictionary<int, string> GetDataDictionary() {
Dictionary<int, string> dictionary = new Dictionary<int, string>();
for (int i = 0; i < 15; i++) {
dictionary.Add(i, "Item name " + i);
}
return dictionary;
}
private void buttonSelectIndex_Click(object sender, EventArgs e) {
if (tbIndexToSelect.Text != "") {
int indexToSelect = comboBox1.SelectedIndex;
if (int.TryParse(tbIndexToSelect.Text, out indexToSelect)) {
SetSelectedIndex(indexToSelect);
}
}
}
我真的要问你为什么要用那门课。与仅使用字符串相比,它似乎没有带来任何好处,而且它使某些事情,例如您当前的问题变得更加复杂。这是一种什么样的应用程序?我的意思是winforms wpf或web?坦率地说,我对c还是有点陌生,我不知道更好的实现。请您提出一个更好的方法来添加具有3个字符代码和文本描述的项。当用户上传某个XML文件时,我从XML数据中提取3个字符的代码,然后我需要在组合框中预选相应的项。非常感谢。这是一个winforms应用程序,很抱歉我忘了提到这个。看一看,我不得不问你为什么要使用这个类。与仅使用字符串相比,它似乎没有带来任何好处,而且它使某些事情,例如您当前的问题变得更加复杂。这是一种什么样的应用程序?我的意思是winforms wpf或web?坦率地说,我对c还是有点陌生,我不知道更好的实现。请您提出一个更好的方法来添加具有3个字符代码和文本描述的项。当用户上传某个XML文件时,我从XML数据中提取3个字符的代码,然后我需要在组合框中预选相应的项。非常感谢。这是一个winforms应用程序,很抱歉我忘了提及。看看谢谢taquion,我现在就要去上班了,我会尽快尝试你的建议
等我到那儿。非常感谢。这工作做得很好。谢谢。谢谢塔奎恩,我马上就要去上班了,我一到那里就试试你的建议。非常感谢。这工作做得很好。谢谢。谢谢你提出的解决方案。数据作为XMLs的有效负载从入站接口馈送。当我们收到有效载荷时,我们从有效载荷中推断组合框的所有值。感谢您提出的解决方案。数据作为XMLs的有效负载从入站接口馈送。当我们收到有效载荷时,我们从有效载荷中推断组合框的所有值。