ListBox 中的“Items.Clear()”后“SelectedIndexChanged”未触发

2023-12-22

对于列表框(选择模式设置为“一”),我希望跟踪是否有选定的项目或没有选定的项目。为此,我订阅了 SelectedIndexChanged 的​​方法并检查 SelectedIndex 是否为 -1。但是,我注意到调用 Items.Clear() 后该事件不会触发,即使 SelectedIndex 更改为 -1(如果它还不是 -1)。

为什么不火? 我知道我可以通过在清除列表之前将 -1 分配给 SelectedIndex 来解决此问题。但还有更好的办法吗?

这是复制此内容的简单代码:

using System;
using System.Windows.Forms;

namespace ns
{
    class Program
    {
        static ListBox lst = new ListBox();

        public static void Main()
        {
            lst.SelectedIndexChanged += new EventHandler(lst_SelectedIndexChanged);

            lst.Items.Add(1);

            Console.WriteLine("Setting selected index to 0...");
            lst.SelectedIndex = 0; //event fire here

            Console.WriteLine("(Selected Index == {0})", lst.SelectedIndex);

            Console.WriteLine("Clearing  all items...");
            lst.Items.Clear(); //event *should* fire here?!

            //proof that the selected index has changed
            Console.WriteLine("(Selected Index == {0})", lst.SelectedIndex);
        }

        static void lst_SelectedIndexChanged(object sender, EventArgs e)
        {
            Console.WriteLine("[!] Selected Index Changed:{0}", lst.SelectedIndex);
        }
    }
}

Edit:我正在考虑通过创建一个继承自 ListBox 的类或创建一个用户控件来创建自定义列表。但是我不知道如何解决这个问题。 关于使用继承/用户控件隐藏/覆盖清除方法有什么想法吗? 是否还需要隐藏/覆盖其他方法,或者有没有办法避免这种情况?


查看 Reflector 中的代码,Items 上的 Clear() 方法只是重置 .Net 对象的内部对象列表(并且不会像您注意到的那样触发 OnSelectedIndexChanged)。

SelectedIndex 属性返回 -1,因为该属性的 getter 中的逻辑规定,如果内部列表中没有项目,则应返回 -1。

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

ListBox 中的“Items.Clear()”后“SelectedIndexChanged”未触发 的相关文章

  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • numpy.dot -> MemoryError,my_dot -> 非常慢,但有效。为什么?

    我正在尝试计算两个大小分别为 162225 10000 和 10000 100 的 numpy 数组的点积 但是 如果我调用 numpy dot A B 则会发生 MemoryError 然后 我尝试编写我的实现 def slower do
  • MySQL 间隙锁定

    我有一张桌子叫tree nodes 在那里我存储了节点的 树表示 我的主题树是在持有者的上下文中创建的 所以 有一个专栏叫做holder id 我有一个事务方法 它会从此表和其他表中进行多次读取 以确定应从树中添加 删除哪些节点 我的应用程
  • 使用 Delve 进行 vscode 调试问题

    当我在 Visual Studio Code 中调试 Go Lang 代码时 出现以下错误消息 2018 04 03 18 19 32 server go 73 Using API v1 2018 04 03 18 19 32 debugg
  • android 父 Activity 在 startActivity 上被杀死

    我有一个带有列表视图的简单应用程序 当用户点击列表项时 我开始一个新活动 Intent eventdetails new Intent HomeActivity this EventDetailsActivity class eventde
  • 基本类型的复制/赋值

    标准对基本类型的复制 赋值有何规定 对于类类型 我们有复制构造函数 赋值运算符 它们将右侧作为引用 它必须是引用 否则我们会无限递归 struct Foo Foo const Foo 这是如何定义基本类型的 看这个例子 const Foo
  • 在C++中创建模板时是否可以找到sizeof(T)?

    我正在尝试构建一个模板 让我可以使用可调整大小的数组 有没有办法找到sizeof T 我使用 malloc 而不是 new 因为我想在调整数组大小的函数中使用 realloc 这是我的类的构造函数出现错误 template
  • getElementsbyClassName 未显示[重复]

    这个问题在这里已经有答案了 我正在使用以下代码 当我现在点击按钮时
  • 使用 MVC 模型显示只读文本

    我有一个 MVC 模型 其属性定义为 DisplayName Service Version public string ServiceVersion get set 在屏幕上 我希望它显示为 服务版本 0 1 ServiceVersion
  • 删除变量的特定部分

    我想从 CMake 变量中删除特定库 Suppose LIB包含变量 A B C 的值 我知道用set像这样添加另一个变量 D 的内容 set LIB LIB D 但是我试图从中删除 C LIB喜欢关注 unset LIB C 这段代码不起
  • 如何捕获触摸板输入

    我到处寻找如何捕获笔记本电脑的触摸板输入 但我似乎找不到任何适用于 Chrome 扩展 JavaScript 的内容 问题 对于笔记本电脑上的触摸板 如何捕获向下的手指数量 不是单击 只是向下并可能像使用鼠标一样移动 相应的 x y 坐标以
  • 如何在 Python 中创建二维数组

    我试图在 Python 中创建一个索引的二维数组 但我总是以某种方式遇到错误 下面的代码 Declare Constants no real constants in Python PLAYER 0 ENEMY 1 X 0 Y 1 AMMO
  • Chrome扩展程序中使用axios和webpack时出现TypeError:adapter is not a function错误

    我正在构建一个 chrome 扩展 当从内容脚本收到某些消息时 该扩展需要进行 API 调用 我在发出 HTTP 请求时遇到困难 我相信我的 webpack 配置是罪魁祸首 我尝试过使用node fetch and axios两者都不适合我
  • 我应该使用哪个 jsf-impl?

    在哪里可以找到适用于我的 jsf 2 webapp 的 jsf impl 在 Maven 的仓库中我得到了 1 2 版本 In the http download java net maven 2 javax faces http down
  • 在全球范围内使用 reCAPTCHA

    我正在尝试按照以下网址中的说明在全球范围内使用 reCAPTCHAhttps developers google com recaptcha docs faq can i use recaptcha globally https devel
  • Log4Net RollingFileAppender 生成重复日志

    我有一个在单个服务器上运行的 WCF 服务 使用 Log4net 通过 INFO 和 WARN 级别日志条目跟踪使用情况 使用具有以下非常标准配置的 RollingFileAppender
  • 使用 FileUpload 控件一次将多个图像保存到数据库

    我正在一家公司博客网站上工作 当用户发布帖子时 他们可以将计算机中的图像添加到帖子中 我使用 FileUpload 控件来执行此操作 效果很好 但是 我正在尝试更改功能以允许用户在一篇文章中选择和上传多个图像 但我遇到了一些问题 我已将 允
  • ASP.NET MVC5 每个 Razor 页面首次加载时非常慢

    这与以下情况下的延迟体验不同 第一个请求到达 但这是每次第一次访问基于 Razor 的视图时都会遇到的延迟 可能需要一两秒 对该视图的所有后续请求都非常快 即使对于不执行任何类型的编程工作 例如访问数据库等 的简单视图 也会发生这种情况 我
  • 在添加另一个视图之前检查布局膨胀器中是否存在视图

    在我的 android 项目中 我动态地将表单添加到我的线性布局中 然后在使用按钮完成后销毁它们 但是 当我单击 添加按钮 时 它会无限添加更多表单 尽管我一次只想要一个 我如何检查我的 LinearLayout 帐户 是否已添加到视图中或
  • Elasticsearch / lucene 高亮

    我正在使用 ElasticSearch 来索引文档 我的映射是 mongodocid boost 1 0 store yes type string fulltext boost 1 0 index analyzed store yes t
  • ListBox 中的“Items.Clear()”后“SelectedIndexChanged”未触发

    对于列表框 选择模式设置为 一 我希望跟踪是否有选定的项目或没有选定的项目 为此 我订阅了 SelectedIndexChanged 的 方法并检查 SelectedIndex 是否为 1 但是 我注意到调用 Items Clear 后该事