首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在WinForms .Net 3.5中的CheckedListBox中没有DisplayMember

在WinForms .Net 3.5中的CheckedListBox中没有DisplayMember的问题可以通过以下方法解决:

  1. 使用ListControl.GetItemText方法自定义显示文本。
代码语言:csharp
复制
public class CustomCheckedListBox : CheckedListBox
{
    public CustomCheckedListBox()
    {
        this.ItemCheck += CustomCheckedListBox_ItemCheck;
    }

    private void CustomCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        e.NewValue = e.CurrentValue;
    }

    protected override void OnDrawItem(DrawItemEventArgs e)
    {
        if (e.Index >= 0 && e.Index< Items.Count)
        {
            object item = Items[e.Index];
            string itemText = GetItemText(item);

            e.DrawBackground();
            using (SolidBrush brush = new SolidBrush(e.ForeColor))
            {
                e.Graphics.DrawString(itemText, e.Font, brush, e.Bounds);
            }

            if ((e.State & DrawItemState.Focus) == DrawItemState.Focus)
            {
                e.DrawFocusRectangle();
            }
        }
        else
        {
            base.OnDrawItem(e);
        }
    }
}
  1. 使用ListControl.Format事件自定义显示文本。
代码语言:csharp
复制
public class CustomCheckedListBox : CheckedListBox
{
    public CustomCheckedListBox()
    {
        this.ItemCheck += CustomCheckedListBox_ItemCheck;
        this.Format += CustomCheckedListBox_Format;
    }

    private void CustomCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        e.NewValue = e.CurrentValue;
    }

    private void CustomCheckedListBox_Format(object sender, ListControlConvertEventArgs e)
    {
        e.Value = GetItemText(e.ListItem);
    }

    protected override void OnDrawItem(DrawItemEventArgs e)
    {
        if (e.Index >= 0 && e.Index< Items.Count)
        {
            object item = Items[e.Index];
            string itemText = GetItemText(item);

            e.DrawBackground();
            using (SolidBrush brush = new SolidBrush(e.ForeColor))
            {
                e.Graphics.DrawString(itemText, e.Font, brush, e.Bounds);
            }

            if ((e.State & DrawItemState.Focus) == DrawItemState.Focus)
            {
                e.DrawFocusRectangle();
            }
        }
        else
        {
            base.OnDrawItem(e);
        }
    }
}

这两种方法都可以实现在WinForms .Net 3.5中的CheckedListBox中自定义显示文本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Winform开发常用控件之Checkbox和CheckedListBox

多选框放置和值获取有很多种,这里介绍几个简单常用方法 1、直接放置Checkbox,并获取Checkbox值 上图 做法也非常简单,就是form中放置多个checkbox,然后循环遍历,检查其...checked没有,然后将checkbox.text拼接到一起,赋值给label,当然实际开发,我们会将选取值放入数据库。...上图唠 对就是这样,编辑项或者属性items集合里面设置即可,每行一个即可,然后遍历取值。...先上两张图,给大家区分一个属性CheckOnClick,左边图是CheckOnClick为false情况(勾选时候先反蓝,单不勾中,点一次才能勾中),右边图是勾选一下就可以ok,但是CheckOnClick...= "student_id"; checkedListBox1.DisplayMember = "student_name"; 获取checkedListBox1选中项DisplayMember和ValueMember

1.5K10

【愚公系列】2023年11月 Winform控件专题 CheckedListBox控件详解

Winform中使用CheckedListBox控件需要进行以下步骤:Visual Studio创建一个Windows Form应用程序,然后从工具箱拖拽CheckedListBox控件到窗体上...然后处理了ItemCheck事件,事件处理程序根据用户选择项来作出相应响应。...文件选择:某些情况下,需要让用户选择一个或多个文件,并将它们添加到特定集合CheckedListBox可以用于此目的。例如,一个文档编辑器可以让用户选择要打开文件,然后将它们添加到编辑器。...以下是一个简单示例,展示如何在Winforms应用程序中使用CheckBoxList控件。...首先,我们需要在Visual Studio打开一个新Winforms项目,并将CheckedListBox控件添加到窗体上。您可以从工具箱中将其拖动到窗体上,或者从设计器添加它。

1.1K11
  • 使用ScottPlot库.NET WinForms快速实现大型数据集交互式显示

    前言 .NET应用开发数据集交互式显示是一个非常常见功能,如需要创建折线图、柱状图、饼图、散点图等不同类型图表将数据呈现出来,帮助人们更好地理解数据、发现规律,并支持决策和沟通。...本文我们将一起来学习一下如何使用ScottPlot库.NET WinForms快速实现大型数据集交互式显示。...ScottPlot类库介绍 ScottPlot是一个免费、开源(采用MIT许可证)强大.NET交互式绘图库,能够轻松地实现大型数据集交互式显示。...将FormsPlot (ScottPlot.WinForms)从工具箱拖到窗体: 输入以下代码: public partial class LineChart : Form {...C#、.NET和.NET Core领域最新动态和最佳实践,提高开发工作效率和质量。

    40010

    .NET Core - 解决VS2019.net core WinForms暂时无法使用Designer临时方法

    具体解决方法是同一个 Solution下创建两个项目: 用于设计WinForms应用程序.NET Framework应用程序(.net Framework 项目) 用于运行WinForms应用程序...此篇文章有关于WPF姊妹篇解决VS2019.net core WPF 暂时无法使用 Designer 临时方法 ,但对WPF而言实现起来比WinForms简单很多。...核心思想同样是借壳~ 该方法,只要添加新Win Form或新UserControl,就需要在Classic Framework WinForms项目(.net FrameworkWin Forms...项目`CoreHelloForm.Designer以"As Link"方式引用.net core form项目下MainForm相关文件 选中项目CoreHelloForm.Designer,右键...那是因为项目CoreHelloForm.DesignerMainForm.cs 所Link 与MainForm相关文件已经 项目CoreHelloForm 打开。

    2.2K30

    Autofac.NET Core 使用

    前言 Autofac 是一款.NET IoC 容器 . 它管理类之间依赖关系, 从而使应用在规模及复杂性增长情况下依然可以轻易地修改 。....NET CORE 也内置了依赖注入,但是有些情况下需要用到Autofac去进行依赖注入,Autofac支持所有注入方式以外,还支持属性注入和方法注入。...接下来我们通过示例来简单了解Autofac使用 示例 新建两个.NET CORE 项目,一个WEB层,一个服务层 ? 服务层添加几个测试服务和模块文件 ? 服务代码都如图所示 ?...接下来就是WEB层配置Autofac,这里需要注意是.Net Core2+ 和 .Net Core3+ 配置方法稍有不同 .NET CORE 2+ NET Core 2.1时候,AutoFac...supported. .NET Core 3.0 引入了具有强类型容器配置功能。

    1.9K30

    .NET Core 并发编程

    .NET Core,任务 (tasks) 是并发编程主要抽象表述,但还有其他支撑类可以使我们工作更容易。 并发编程 - 异步 vs....相同时间,调用线程可以处理桌面应用程序用户交互或处理服务器应用程序同时处理其他请求,而不仅仅是等待操作完成。...尽管这意味着方法不是同时执行,却可以在其他方法暂停时候执行。 并行 vs 并发 本文将在最后一段重点介绍 .NET Core多线程并发编程。...C# ,可以使用 lock 语句来实现: 在这个方法,所有线程都必须共享相同 syncObject 。...完整 .NET Framework 并发编程 由于 .NET Core 是完整 .NET Framework 简化实现,所以 .NET Framework 中所有并行编程方法也可以.NET

    2K90

    .NET实现AOP7种姿势

    ——————————————————————————————- AOP相关术语 方面(Aspect) 一个Aspect指上文提到横切关注点在编程具体实现,它包含一个横切关注点所需要实现具体辅助功能...连接点(Join Point) 连接点指一个业务函数代码一个位置或时机,在这个位置或时机允许Aspect代码插入执行。...AOP实现方式 一般来说,纯编译型语言(如C、C++)等语言中实现AOP非常困难,必须完全从编译器角度入手。...托管型语言(如C#,Java)AOP实现较容易,大分类有两种:编译时AOP(静态织入)和运行时AOP(动态织入)。...NET普及和使用提高跟国外还是有几年差距。

    4.6K30

    .NET警惕C#is var写法

    F2={f2}"); } 答案是控制台居然输出居然进来了,也就是说 null is 判断里面是通过,而 var 含义似乎不只是一个语法上可有可无关键词而已,而是赋予了运行时含义关键词 换句话说就是以上代码里面的...最初 C# 里面的 var 只是一个构建过程可以被平替为具体类型关键词,是一个不会影响到语义、运行时逻辑语法而已。...F2={f2}"); } 第一个 var 是传统用法,只是让开发者省略编写重复代码,没有影响到任何语义和运行逻辑。...难道有这么多开发者大佬脑袋都被大门夹了? 整个 C# 语言设计是不断迭代,现在已经是 C# 12 了。...,可以发现 is var 只是就是一个局部变量赋值,从 IL 上看 is 判断只是空气而已,什么都没有 如以下 C# 代码和 IL 对应,可以看到 if (foo is var f2) 和 var

    13110

    .NET 创建对象几种方式对比

    .net ,创建一个对象最简单方法是直接使用 new (), 实际项目中,我们可能还会用到反射方法来创建对象,如果你看过 Microsoft.Extensions.DependencyInjection...源码,你会发现,为了保证不同场景兼容性和性能,内部使用了多种反射机制。...NET Core 很熟悉 IOC 容器,Microsoft.Extensions.DependencyInjection,把类型注册到容器后,然后我们使用 IServiceProvider 来获取对象...dll,当程序运行时候,.NET CLR JIT编译器 将这些 IL 指令转换为真正汇编代码。...这里简单对比了几种创建对象方法,测试结果也可能不是特别准确,有兴趣还可以 .net framework 上面进行测试,希望对您有用!

    2.2K30

    .NET Core 收集数据几种方式

    (Dashboard):多维度展示数据 本文会主要针对 探针 (Agent), 分享下在.NET 程序收集程序数据几种方式,如果需要自研 APM 系统或者收集数据来进行系统分析,希望能可以给大家一些帮助...,我们可以异步去收集信息,比如 中间件进入和退出,HttpClient 调用开始和结束,并且有很多第三方库都支持了 DiagnosticSource,这也是微软目前推荐方式,改动极少代码情况下...引用 AOP 额,面向切面编程,这个需要在我们 .NET 程序引用 AOP 框架,如果是内部系统的话,我觉还是可以接受,常见框架 AspectCore, Castle.Core, 通过 AOP...特性,我们可以拦截需要获取数据方法,如果你项目中,普遍使用依赖注入的话,可以达到方法级别的监控,获取到信息非常可观,另外需要注意是,获取信息越详细,数据量也越大,是全量采集数据还是抽样采集也是要考虑点...这可能要求你掌握 C++ 和 C#, 另外需要注意是,Profiler 是一个非托管 DLL 库,会在应用运行时被加载到 CLR 并与应用处于同一进程空间下,所以 Profiler DLL 实质上是不受托管代码访问控制

    92100

    对象池 .NET (Core)应用: 设计篇

    因为DefaultPooledObjectPolicy对象Return方法总是返回True,并且没有任何具体操作,所以将对象释放回对象池时候就不需要调用Return方法了,这是第二个性能优化细节...与此同时,被丢弃对象Dispose方法将立即被调用。但是这种现象并没有DefaultObjectPool类型代码中体现出来,这是为什么呢?...用于提供池化对象Get方法除了会验证自身Disposed状态之外,并没有特别之处。当对象未能成功回归对象池,通过调用该对象Dispose方法将其释放操作体现在重写Return方法。...ASP.NET应用,我们基本上都会采用依赖注入方式利用注入ObjectPoolProvider对象来创建针对具体类型对象池。...对象池 .NET (Core)应用[1]: 编程篇 对象池 .NET (Core)应用[2]: 设计篇 对象池 .NET (Core)应用[3]: 扩展篇

    1.5K30

    .NET Core 收集数据几种方式

    • UI界面(Dashboard):多维度展示数据 本文会主要针对 探针 (Agent), 分享下在.NET 程序收集程序数据几种方式,如果需要自研 APM 系统或者收集数据来进行系统分析,希望能可以给大家一些帮助...,我们可以异步去收集信息,比如 中间件进入和退出,HttpClient 调用开始和结束,并且有很多第三方库都支持了 DiagnosticSource,这也是微软目前推荐方式,改动极少代码情况下...引用 AOP 额,面向切面编程,这个需要在我们 .NET 程序引用 AOP 框架,如果是内部系统的话,我觉还是可以接受,常见框架 AspectCore, Castle.Core, 通过 AOP...特性,我们可以拦截需要获取数据方法,如果你项目中,普遍使用依赖注入的话,可以达到方法级别的监控,获取到信息非常可观,另外需要注意是,获取信息越详细,数据量也越大,是全量采集数据还是抽样采集也是要考虑点...这可能要求你掌握 C++ 和 C#, 另外需要注意是,Profiler 是一个非托管 DLL 库,会在应用运行时被加载到 CLR 并与应用处于同一进程空间下,所以 Profiler DLL 实质上是不受托管代码访问控制

    1K20

    【C】KoobooJsonasp.net core使用

    本文链接:https://blog.csdn.net/j_teng/article/details/100924973 “KoobooJson是一款体积小巧没有任何依赖且性能表现强劲Json工具”...详细介绍可以参考官方说明,项目地址:https://github.com/Kooboo/Json ps:楼主目前使用版本是:asp.net core 2.2 asp.net core 2.x ,...,你可以第5步 UseKoobooFormatters ,通过设置 serializerOption.GlobalValueFormat 和 deserializeOption.GlobalValueFormat...,对于byte[]类型base64解析行为, KoobooJson已经内嵌配置项, 只要设置serializerOption.IsByteArrayFormatBase64 = true 即可 public...Json序列化处理整理 2.将 .NET Core 2.0 默认 JSON 解析器替换为 Jil ———————————————— 版权声明:本文为CSDN博主「j_teng」原创文章,遵循 CC

    65650

    对象池 .NET (Core)应用: 编程篇

    一些对性能比较敏感应用,我们可以通过对象复用方式避免垃圾对象产生,进而避免GC因对象回收导致性能损失。对象池是对象复用一种常用方式。....NET提供了一个简单高效对象池框架,并使用在ASP.NET自身框架。...我们使用.NET对象池框架时,主要会使用如下这个ObjectPool类型,针对池化对象借与还体现在它Get和Return方法。....NET提供大部分框架都提供了针对IServiceCollection接口扩展方法来注册相应服务,但是对象池框架并没有定义这样扩展方法,所以我们需要采用原始方式来完成针对ObjectPoolProvider...对象池 .NET (Core)应用[1]: 编程篇 对象池 .NET (Core)应用[2]: 设计篇 对象池 .NET (Core)应用[3]: 扩展篇

    1.3K20

    对象池 .NET (Core)应用: 扩展篇

    原则上所有的引用类型对象都可以通过对象池来提供,但是具体应用需要权衡是否值得用。虽然对象池能够通过对象复用方式避免GC,但是它存储对象会耗用内存,如果对象复用频率很小,使用对象池是不值。...之所以要限制列表最大容量,是为了避免复用几率很少大容量列表常驻内存。实现Create方法,我们利用初始容量创建出List对象。...Return方法,我们先将待回归列表清空,然后根据其当前容量决定是否要将其释放到对象池。下面的程序演示了采用对象池方式来提供List列表。...Return方法clearArray参数表示归还数组之前是否要将其清空,这取决我们针对数组使用方式。如果我们每次都需要覆盖原始内容,就没有必要额外执行这种多余操作。...池化数组并未直接存储在对象池中,长度接近多个数组会被封装成一个桶(Bucket),这样好处是执行Rent方法时候可以根据指定长度快速找到最为匹配数组(大于并接近指定长度)。

    1.6K10
    领券