当前位置: 首页 > 编程语言 > C#

使用ComboBoxWinFormsC#同步保存ID和Value分享

时间:2023-04-11 00:51:02 C#

使用ComboBoxWinFormsC#同步保存ID和Value通常我会创建2个组合框,一个隐藏以保存ID,另一个隐藏真实数据。我需要id才能知道它在数据库中的id。然后我对两个复选框使用SelectedIndex和事件以保持它们同步。有时甚至使用更多组合框并使用SelectedIndex和许多事件使它们彼此同步。我认为有更好的方法。privatevoidczynnoscInstrumentyFinansoweComboID_SelectedIndexChanged(对象发送者,EventArgse){czynnoscInstrumentyFinansoweCombo.SelectedIndex=czynnoscInstrumentyFinansoweComboID.SelectedIndex;此外,我想要的是ComboBox中的自动完成/搜索。当用户使用组合框并开始在组合框中键入时,它只会对第一个字母做出反应,因此当您键入“开始”时,它会跳过列表,然后转到t,然后在我需要时转到etc它会尝试找到短语“某事的开始”。我怎样才能实现这两个目标?编辑:我没有使用数据集,我正在添加这样的值://获取sql数据并将其放入字符串/小数中,然后像这样将其添加到comboBoxstringvar="sds";czynnoscInstrumentyFinansoweComboID.Add(var);如果我理解你的问题,那么我会说你的感觉是正确的。您不必使用多种组合来跟踪数据/值(即您的情况下的标识符)。通常要做到这一点,我们需要为组合框分配一个数据源,这样当您获得选定的索引更改事件时,它将为您提供文本以及一个额外的ID。将DisplayMember设置为包含文本的数据集列,并将ValueMember属性设置为包含ID的数据集列。DataSetyourDataSource=SomeGetDataSourceMethod();//准备好你的数据源。this.cbxLookup.DataSource=yourDataSource;this.cbxLookup.DisplayMember="员工姓名";this.cbxLookup.ValueMember="EmployeeID";在SelectedIndexChanged事件中,可以获取SelectedItem、SelectedIndex、SelectedValue。或者你也可以这样做:intvalue=1;cbxLookup.Items.Add(newListViewItem("你的名字",值));--EDIT2--定义以下结构:classKeyValueData{publicKeyValueData(stringText){text=Text;项目数据=0;}publicKeyValueData(stringText,intItemData){text=Text;项目数据=项目数据;}publicintItemData{get{返回itemData;}设置{itemData=值;}}publicoverridestringToString(){返回文本;}受保护的字符串文本;受保护的int项目数据;}//然后像这样添加到组合中:comboBox1.Items.Add(newKeyValueData("NewYorkers",21));–EDIT1–对于项目第二部分,假设您使用的是.NET2.0,您可以获得KeyPress事件并使用ComboBox.FindString方法。这个例子可能会有所帮助。DzienDobry,首先……为什么不将对象放入带有字符串和ID值的组合框中?总是有Selecteditem来获取它(不是SelectedIndex)...为您节省第二个组合框。第二...获得适当的工具。Infragistics、Devexpress-Microsoft内部UI元素在Winforms中受到严格限制。使用WPF它变得更好,但是使用Windowsms它真的很原始。而且它不会改变-MS依靠生态系统来提供适当的工具。我从未接触过任何Winform集成控件——完全基于Infragistics,这是有原因的。DzienDobryrowniez:)我不确定,但是您是否忽略了一个事实,即您可以轻松地将id和值保留在组合框中?总的来说是题外话,但是你的控件命名约定在这里引发了一阵笑声。谢谢。以上是C#学习教程:使用ComboBoxWinFormsC#保持ID和值同步共享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: