gpt4 book ai didi

c# - ComboBox 自动完成键/值对

转载 作者:行者123 更新时间:2023-11-30 16:20:16 25 4
gpt4 key购买 nike

我有一个包含以下代码的 ComboBox:

private void comboBox1_TextChanged(object sender, EventArgs e)
{
using (var service = WebServiceHelper.GetCoreService())
{
string physicianXml = service.SearchPhysicians(SessionInfo.Current.ClientCode, SessionInfo.Current.MachineName,
SessionInfo.Current.Username, comboBox1.Text);

var physicians = PhysicianItemList.FromXml(physicianXml);

AutoCompleteStringCollection autoCompleteStringCollection = new AutoCompleteStringCollection();
foreach (var physician in physicians.Items)
{
autoCompleteStringCollection.Add(physician.LastName + ", " + physician.FirstName);
}

comboBox1.AutoCompleteCustomSource = autoCompleteStringCollection;
comboBox1.Select(comboBox1.Text.Length, 0);
}
}

基本上,用户键入医生姓名的前几个字符,它应该使用前 100 个匹配记录填充自动完成列表。它工作得很好,但我需要将它关联回一个键(表中的 PK,或医师的 NPI 编号)。 AutoCompleteStringCollection 似乎不支持键。任何人都可以建议这样做的方法吗?表中大约有 700 万条记录,因此我不想预填充 ComboBox。

谢谢

最佳答案

当您构建 AutoCompleteStringCollection 时, 建立一个 Dictionary<String, int>对于名称,id 对也是如此。然后使用一些事件(文本框验证或用户提交/保存点击)来查找和设置 id。您可以将字典存储在文本框上 Tag .

编辑

出于某种原因,我认为您正在使用文本框控件。忘掉 AutoCompleteStringCollection并构建一个 Dictionary<String, int> .对于组合框,将您的自动完成源设置为 ListItems,设置组合框显示名称和值,并将数据源设置为字典。

combobox.DisplayMember = "key";
combobox.ValueMember = "value";
combobox.AutocompleteSource = AutocompleteSource.ListItems;
combobox.DataSource = myDictionary;

但是,当用户在组合框中输入 n 个字符时,您应该只填充数据源和自动完成一次,否则会出现错误。我尝试将其用于动态自动完成一次(例如,如果用户清除文本并重新键入,列表将清除),但我不得不忘记组合框并使用混合文本框列表框方法,就像这样 user

关于c# - ComboBox 自动完成键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406071/

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