listbox java_ListBox选择所有项目

回答(12)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

我想你必须在这里循环 . 一次选择所有项目是一个非常具体(可能很少见)的用例,开箱即用提供该功能毫无意义 . 此外,无论如何,循环将只有两行代码 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

事实是 ListBox.Items 是一个普通的对象集合并返回普通的无类型对象,这些对象不能被多选(默认情况下) .

如果您想多选所有项目,那么这将有效:

for (int i = 0; i < myListBox.Items.Count;i++)

{

myListBox.SetSelected(i, true);

}

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

据我所知,使用任何.NET方法选择大量项目远比进行直接PInvoke调用慢,将LB_SETSEL消息(0x185)传递给控件,并带有一个标志,指示是否要选择(1)或取消选择(0)以及魔术值(-1),表示更改应适用于所有项目 .

[DllImport("user32.dll", EntryPoint = "SendMessage")]

internal static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam);

// Select All

SendMessage(listBox.Handle, 0x185, (IntPtr)1, (IntPtr)(-1));

// Unselect All

SendMessage(listBox.Handle, 0x185, (IntPtr)0, (IntPtr)(-1));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值