热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

以静态方法获取项目CheckState-GetitemCheckStateinastaticmethod

ImadeanextensionmethodtoswapplacesoftwoitemsinaCheckedListBox.Themethodisputinas

I made an extension method to swap places of two items in a CheckedListBox. The method is put in a static Utilities class. The problem is that the CheckState doesn't travel. So if I move a checked item up in the list, the checkbox state will stay and the moved item will take over the CheckState from the item it's replacing.

我做了一个扩展方法来交换CheckedListBox中两个项目的位置。该方法放在静态Utilities类中。问题是CheckState不会移动。因此,如果我在列表中移动已检查的项目,则复选框状态将保留,移动的项目将从其替换的项目接管CheckState。

My code looks like this:

我的代码如下所示:

public static System.Windows.Forms.CheckedListBox.ObjectCollection Swap(this System.Windows.Forms.CheckedListBox.ObjectCollection lstBoxItems, int indexA, int indexB)
{
    if (indexB > -1 && indexB 

What I want is something like this (which doesn't work obviously)

我想要的是这样的东西(显然不起作用)

public static System.Windows.Forms.CheckedListBox.ObjectCollection Swap(this System.Windows.Forms.CheckedListBox.ObjectCollection lstBoxItems, int indexA, int indexB)
{
    if (indexB > -1 && indexB 

The code is simply called like this

代码就像这样简单地调用

myCheckedListBox.Items.Swap(selectedIndex, targetIndex);

2 个解决方案

#1


3  

I haven't used the CheckedListBox before, but if I had to hazard a guess looking at the MSDN docs for it, I would say you'd want to use the GetItemCheckedState and the SetItemCheckedState methods. However, that also means you'd have to pass in the CheckedListBox as well rather than just its .Items ObjectCollection.

我之前没有使用过CheckedListBox,但如果我不得不冒险猜测它的MSDN文档,我会说你想要使用GetItemCheckedState和SetItemCheckedState方法。但是,这也意味着您必须传入CheckedListBox,而不仅仅是传递.Items ObjectCollection。

public static System.Windows.Forms.CheckedListBox Swap(this System.Windows.Forms.CheckedListBox listBox, int indexA, int indexB)
{
    var lstBoxItems = listBox.Items;
    if (indexB > -1 && indexB 

So naturally your calling code would change to something like this:

所以你的调用代码自然会变成这样的东西:

myCheckedListBox.Swap(selectedIndex, targetIndex);

Also, note that my method returns the input CheckedListBox as well instead of the ObjectCollection; figured that would be more appropriate now given the change of signature parameters.

另外,请注意我的方法也返回输入CheckedListBox而不是ObjectCollection;考虑到签名参数的变化,现在更合适。

#2


1  

Maybe the problem is that you should be first getting the current check state of actual list box item instead of from the copy. You already know that the list box is managing the checks separate from the item list content!

也许问题是你应该首先获得实际列表框项目的当前检查状态而不是副本。您已经知道列表框正在管理与项目列表内容分开的支票!

You also should consider getting the current checked states for both items A and B. After you perform the item swap then reapply the checked state to the two items so you maintain that status for both swapped items.

您还应考虑获取项目A和B的当前已检查状态。执行项目交换后,将已检查状态重新应用于这两个项目,以便为两个交换项目保持该状态。


推荐阅读
  • Java 模式原型在游戏服务器架构中的应用与优化 ... [详细]
  • 本文详细探讨了Zebra路由软件中的线程机制及其实际应用。通过对Zebra线程模型的深入分析,揭示了其在高效处理网络路由任务中的关键作用。文章还介绍了线程同步与通信机制,以及如何通过优化线程管理提升系统性能。此外,结合具体应用场景,展示了Zebra线程机制在复杂网络环境下的优势和灵活性。 ... [详细]
  • Java集合框架特性详解与开发实践笔记
    Java集合框架特性详解与开发实践笔记 ... [详细]
  • 在Python中,是否可以通过使用Tkinter或ttk库创建一个具有自动换行功能的多行标签,并使其宽度能够随着父容器的变化而动态调整?例如,在调整NotePad窗口宽度时,实现类似记事本的自动换行效果。这种功能在设计需要显示长文本的对话框时非常有用,确保文本内容能够完整且美观地展示。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在托管C++中开发应用程序时,遇到了如何声明和操作字符串数组的问题。本文详细探讨了字符串数组在托管C++中的应用与实现方法,包括声明、初始化、遍历和常见操作技巧,为开发者提供了实用的参考和指导。 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • 在使用Keil C51创建51单片机项目时,启动代码中包含多个关键元素,这些元素确保了系统的正确初始化和运行。主要包括复位向量、中断向量表、系统时钟配置、寄存器初始化以及主函数入口等。这些组件共同协作,为后续的应用程序执行提供稳定的基础。 ... [详细]
  • 在 Windows 10 环境中,通过配置 Visual Studio Code (VSCode) 实现基于 Windows Subsystem for Linux (WSL) 的 C++ 开发,并启用智能代码提示功能。具体步骤包括安装 VSCode 及其相关插件,如 CCIntelliSense、TabNine 和 BracketPairColorizer,确保在 WSL 中顺利进行开发工作。此外,还详细介绍了如何在 Windows 10 中启用和配置 WSL,以实现无缝的跨平台开发体验。 ... [详细]
  • Java中处理NullPointerException:getStackTrace()方法详解与实例代码 ... [详细]
  • 在CentOS 6.5环境中,本文详细介绍了如何配置SSH无密钥登录,并成功执行PSSH命令。首先,确保系统已安装PSSH工具,可使用 `yum install pssh` 进行安装。若未配置免密钥登录,PSSH命令将无法正常执行,例如尝试运行 `pssh -H root@192.168.245.129 -i uptime` 时会失败。通过生成并分发SSH公钥,可以实现无密码登录,从而顺利执行PSSH命令。此外,本文还提供了详细的步骤和常见问题的解决方案,帮助用户顺利完成配置。 ... [详细]
  • 在探讨C语言编程文本编辑器的最佳选择与专业推荐时,本文将引导读者构建一个基础的文本编辑器程序。该程序不仅能够打开并显示文本文件的内容及其路径,还集成了菜单和工具栏功能,为用户提供更加便捷的操作体验。通过本案例的学习,读者可以深入了解文本编辑器的核心实现机制。 ... [详细]
  • 在Java编程中,为了提高代码的可读性和执行效率,建议优先使用局部变量来存储方法的返回值,而不是多次调用同一个方法。这样不仅可以减少方法调用的开销,还能避免潜在的性能问题。此外,使用局部变量还可以增强代码的可维护性和调试便利性。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
author-avatar
手机用户2502863963
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有