为 ComboBox 项目分配值

2024-02-08

我目前正在尝试为 winform 的货币制作一个下拉框(组合框)。这是我到目前为止所拥有的:

但我注意到下拉框的数据绑定版本有一个特殊选项。所以我想知道是否可以创建与此类似的东西,而无需对整个字符串进行比较或在数据库中创建表。


列表和组合框可以包含对象而不仅仅是字符串。您可以设置一个List(Of T)(除其他外)作为DataSource。这允许您显示一项内容,但获取不同的内容,例如返回值。

这非常有用,有一个简单的方法并不罕见NameValuePair类将值或代码转换为用户友好的内容:

Public Class NVP
    Public Property Name As String
    Public Property Value As Integer

    Public Sub New(n As String, v As Integer)
        Name = n
        Value = v
    End Sub

    ' what these will display using .ToString:
    Public Overrides Function ToString() As String
        Return String.Format("{0} ({1})", Name, Value.ToString)
    End Function
End Class

然后是创建这些列表并将其用作组合源的代码:

Private myAList As List(Of NVP)
...
myAList = New List(Of NVP)

myAList.Add(New NVP("ziggy", 26))
myAList.Add(New NVP("able", 1))
myAList.Add(New NVP("charlie", 3))
myAList.Add(New NVP("echo", 5))

ComboBox1.DataSource = myAList
ComboBox1.DisplayMember = "Name"    ' property name to show the user
ComboBox1.ValueMember = "Value"     ' property name to use as the value

然后,使用它:

Console.WriteLine("Selection Changed! Item: {0}  Value: {1}",
                   ComboBox1.SelectedItem.ToString,
                   ComboBox1.SelectedValue.ToString)

Output:

选择已更改!物品:之字形 (26) 价值:26
选择已更改!物品:查理 (3) 价值:3
选择已更改!项目:能够 (1) 价值:1

Notes:
NameValuePair 类的好处是它将数据保存在一起(并且易于访问),而不是作为不同数组中的单独项目。

使用的主要好处DataSource,就是您不需要复制数据。而不是复制Name值从列表到Items集合,List/ComboBox使用相同的你的代码就是这样做的。

SelectedItem返回一个NVP对象(就像.Items(n))但它们返回为Object所以你需要将其投射回NameValuePair访问任何属性:

thisItem = CType(ComboBox1.SelectedItem, NVP)
Console.WriteLine(thisItem.Name)

SelectedItem.ToString调用ToString我们的 Type 上的方法。它可能只是打印Name或者任何你想要的。

If the list是动态的 - 事物被添加和/或从中删除 - 那么你可能会想要使用BiningList(of T)反而。更改为list将自动出现在控件中(ListBox, ComboBox, DatagridView).

如果列表items是动态的 - {"ziggy", 26} 可能会更改为 {"zulu", 98},那么你的项目类应该实现INotifyPropertyChanged因此这些更改也会自动显示在 UI 控件中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 ComboBox 项目分配值 的相关文章

  • 如何在 VB.NET 中将 DataGridView 导出为 Excel 格式

    我使用 OLE 通过 VB NET 连接到数据库 并在 DataGridView 中显示结果 我想将 DataGridView 中的数据导出到 Excel 格式文件 即用户可以将 DataGridView 的内容保存为 MS Excel 文
  • WPF - 按多列排序时使用自定义比较器

    我有一个 ListView GridView 我想按 2 列排序 因此如果第 1 列中有 2 个以上的项目具有相同的值 它将按第 2 列排序 非常简单 但是在对 A Z 进行排序时 空字符串会出现在顶部 我想把它们移到底部 我制作了一个比较
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • .NET 程序集大小会影响性能吗?

    net 程序集的大小是否会影响性能 您的 Windows 窗体 Web 窗体项目中的程序集数量如何 来自微软的模式和实践提高 NET 应用程序性能和可扩展性 http msdn microsoft com en us library ms9
  • 为什么在 .net 中使用 Invoke on Controls? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 NET不允许跨线程操作 https stackoverflow com questions 2896504 why net does not allow cross thread operat
  • 使用 Web 部署在 IIS Express 上发布 WCF 服务应用程序

    我想在 IIS Express 上发布在 Visual Studio 2010 中创建的 WCF 服务应用程序 所以我使用项目 gt 发布 gt Web 部署 Service URL http localhost Site applicat
  • 如何在 DataGridViewComboBoxCell 中选择一个值?

    我有 DataGridViewComboBoxCell 和 DataTable 表中的数据使用 DataSource 与 DataGridViewComboBoxCell 绑定 并设置 ValueMember 和 DisplayMember
  • 使用 .NET 删除目录中超过 3 个月的文件

    我想知道 使用 C 如何删除某个目录中超过 3 个月的文件 但我想日期期限可以很灵活 需要明确的是 我正在查找超过 90 天的文件 换句话说 应保留 90 天前创建的文件 并删除所有其他文件 像这样的事情不能做 using System I
  • 我想在 VB6 程序中使用 VB.NET dll。是否可以?

    我在 VB6 程序中使用 VB NET dll 时遇到问题 我已经使用 GuidAttribute 创建了 dll 使用 RegAsm 创建了 tlb 并将其添加到我的 VB6 程序的引用中 问题是当我尝试使用 CreateObject 函
  • .net core 中的 CPU 使用情况(至少在 Windows 上)

    So PerformanceCounter在 dotnet core 中消失了 我理解这是因为它不兼容 Linux 这条评论在这里 NET Core 性能计数器的故事是什么 https stackoverflow com questions
  • 在 .NET 中使用 NTFS 压缩来压缩文件夹

    我想在 NET 中使用 NTFS 压缩来压缩文件夹 我发现这个帖子 http bytes com groups net c 262874 making folder compressed 但它不起作用 它抛出异常 无效参数 Director
  • 使用.Net的StatisticFormula库

    C 命名空间 System Windows Forms DataVisualization Charting StatisticFormula 似乎有一些我需要的统计函数 命名空间记录在MSDN 在这里 http msdn microsof
  • 从平面列表创建层次结构

    我必须从平面列表构建第 n 级分层列表 我尝试使用这个答案中的解决方案 https stackoverflow com a 25532561 https stackoverflow com a 25532561但我没能得到正确的结果 这是我
  • 连接到 SQL Server 数据库 C#-WinForms

    我正在制作一个桌面应用程序 我希望用户必须登录才能充分使用该程序 我已经在 www winhost com 我的网站的托管位置 上创建了一个数据库 但现在我不知道该怎么办 我一直在使用 google 和 msdn 我想知道如何以编程方式将新
  • 如何延长SQL查询的超时时间

    这不是连接超时 因为与数据库的连接正常 问题是我调用的存储过程花费的时间超过 30 秒 并导致超时 该函数的代码如下所示 SqlDatabase db new SqlDatabase connectionManager SqlConnect
  • 强制 Excel 将多张纸作为单个作业打印

    在某些 Excel 2003 工作簿中 当我尝试print如果有多个工作表 Excel 将这些工作表视为单独的打印作业 这让我一直在编写的 Excel 自动化应用程序感到困惑 因为它会导致 Adob e PDF Printer 停止并询问用
  • 根据另一个列表的内容对列表进行排序

    我有一个包含整数列表的列表和另一个包含同时包含整数和字符串的类的列表 我想做的是按字母顺序对列表进行排序 将第一个列表中存在的条目放在前面 这是我的代码和预期输出 using System using System Collections
  • 如何使WPF TreeView风格成为WinForms TreeView?

    WPF 默认的 TreeView 非常好 我仍然希望它有连接每个子元素的线 就像 Windows 窗体 TreeView 一样 我在网上搜索了一些例子 但设计得不够好 我怎样才能用WPF实现它 让我回答我自己的问题 Code 您需要做的只是
  • 如何定义 Swagger UI 参数的默认值?

    我已将 Swagger Swashbuckle 集成到 NET Core 2 2 API 项目中 一切都很好 我的要求纯粹是为了方便 考虑以下 API 方法 public Model SomeEstimate SomeRequest req
  • 可选参数代码在 .NET 3.5 中编译。为什么?

    这段代码在 VS 2010 的框架 3 5 项目中编译正常 我三次检查过 public LoggingClient string uri net msmq localhost logging 为什么 我在 C 4 规范中没有看到任何内容 文

随机推荐

  • “允许推送通知”对话框被关闭一次后如何返回?

    我正在构建一个严重依赖 APN 的应用程序 第一次启动我的应用程序时 iOS 会询问是否允许该应用程序使用 APN 由于registerForRemoteNotificationTypes 称呼 然而 一旦关闭 该对话框就永远不会弹出 我必
  • JFrame 着色应该像这张图片

    我的问题有点奇怪 我希望我创建的表单 使用 JFrame 颜色应该类似于这张图片 我应该使用特殊的外观和感觉吗 我应该使用特殊的外观和感觉吗 据我所知 没有这样的内置外观和感觉可用 然而对于 外观和感觉 来说 Look 指 GUI 小部件
  • 用距离随机整数填充数组

    我需要一个数组来填充随机整数 这些整数应该彼此非常不同 即每个项目之间必须至少有 20 个单位的间隔 这是我到目前为止所尝试过的 var all var i 0 randomDiff function randomDiff var num1
  • 如何向 ode45 传递一个带有两个参数的 odefun ?

    我有一个用例如下 Inside F m我有一个函数F以 a 作为其参数2 x 1 matrix x F需要对矩阵进行矩阵乘法kmat by x kmat是由脚本生成的变量 所以 我所做的事情已经确定kmat在脚本中成为全局 global k
  • 如何在 C++ 中打印方法指针的地址?

    例如 struct A void m void stream print void A p void A m std cerr lt lt p lt lt std endl void printf print void A p void A
  • 在 Bash 脚本中指定 sftp 的密码 [重复]

    这个问题在这里已经有答案了 我正在尝试编写一个脚本来通过 SFTP 备份文件 问题是 它需要密码 而且我认为没有办法手动指定 SFTP 的密码 我听说过使用公钥不需要密码 但这需要能够 ssh 进入远程服务器并修改一些配置文件 而我无法做到
  • Servlet 到 jsp 通信最佳实践

    我正在学习如何在谷歌应用程序引擎上编写java servlet 和jsp 页面 我正在尝试使用 MVC 模型 但我不确定我做得是否正确 目前 我有一个在访问页面时调用的 servlet servlet 完成所有处理并创建一个 HomePag
  • 检查 Swift 中的网络状态,找不到接受提供的参数的“~=”重载

    我在用着可达性 h库来检查我的 swift 应用程序中的网络状态 我在 案例 行中遇到了这个问题 找不到接受提供的 重载 论点 我该如何解决它 func checkNetworkStatus var reachability Reachab
  • 为什么这个查询不返回 10 行?

    我在一个唯一的列上连接两个表 这两个表都包含 10 行 我知道桌子cte可以有重复项 但仍然应该有10结果中的记录 请参阅DBFIDLE1 https dbfiddle uk C3fkuh3s with ints as select 1 a
  • 在 Visual Studio for Mac 17.5 预览版中找不到 SDK Microsoft.NET.Sdk

    当我想从 VS 2022 for Mac 17 5 预览版中的模板创建新的 MonoGame iOS 项目时 收到此错误消息 What is missing in Preferences What should I install None
  • ASP.NET 预编译期间出现类型解析错误

    在 NET 3 5 Web 应用程序的 ASP NET 预编译过程中 各种初始化在类型初始值设定项中执行 当环境配置不正确时 类型初始值设定项之一会引发自定义异常 但是 当抛出我们的自定义异常时 aspnet compiler exe 会告
  • 自动调用 Silverlight 行为的 OnDetaching()

    我在 silverlight 控件上使用了多种混合行为和触发器 我想知道是否有任何机制可以自动分离或确保当不再使用控件 即从可视化树中删除 时为行为或触发器调用 OnDetaching 我的问题是 由于其中一种行为 控件存在托管内存泄漏 该
  • 如何设置 ArrayList 中对象的变量值

    我正在执行一项任务 我必须 创建一个具有以下属性 变量的 Employee 类 姓名 年龄 部门 创建一个名为 Department 的类 其中将包含员工列表 A Department 类将有一个方法返回按年龄排序的员工 b 部门的值只能是
  • 如何在Python中给定时间后结束程序运行

    我希望我的 Python 程序运行一个算法给定的秒数 然后打印迄今为止最好的结果并结束 最好的方法是什么 我尝试了以下方法 但没有成功 程序在打印后继续运行 def printBestResult self print self bestR
  • 将 HTML 字符串添加到 OpenXML (*.docx) 文档

    我正在尝试使用 Microsoft 的 OpenXML 2 5 库来创建 OpenXML 文档 一切都运行良好 直到我尝试将 HTML 字符串插入到我的文档中 我已经在网上搜索过 这是我到目前为止所想到的 只截取我遇到问题的部分 Parag
  • wkHTMLtoPDF 支持@page 规则吗?

    我一直在尝试使用这个简单的命令来探索 wkHTML2PDF 的功能 wkhtml2pdf test htm test pdf 它似乎不支持可能包含在附加 CSS 文件中的 page 规则 或者我错过了什么 一些参数的例子 简而言之 答案是否
  • MediaPlayer,仅视频 m3u8 HTML 流有效

    我正在将 MediaPlayer 与 m3u8 音频流一起使用 这会导致日志错误消息 Error 1 1010 当我查看错误代码时 第一个参数似乎没问题 https github com android platform external
  • C# 功能请求:在匿名类型上实现接口

    我想知道需要什么才能使这样的事情发挥作用 using System class Program static void Main var f new IFoo Foo foo Print gt Console WriteLine Foo i
  • python“set.intersection”对于n个集合的时间复杂度

    我想知道该问题的复杂性set intersection蟒蛇 我查看了 python 的文档和在线 wiki 但没有找到该方法对于多组的时间复杂度 The python wiki 关于时间复杂度列表 https wiki python org
  • 为 ComboBox 项目分配值

    我目前正在尝试为 winform 的货币制作一个下拉框 组合框 这是我到目前为止所拥有的 但我注意到下拉框的数据绑定版本有一个特殊选项 所以我想知道是否可以创建与此类似的东西 而无需对整个字符串进行比较或在数据库中创建表 列表和组合框可以包