按住CTRL多选,按住shift连选的实现

<tr class="address" v-for="(counts, index) in counts" :key="index" @click="trSelect(index)" :class="rowsSelect.indexOf(index) != -1 ? 'selectTr' : ''"></tr>
document.onkeydown =  (e) => {
                    if (!this.keyCode) {
                        if (window.event) {
                            this.keyCode = event.keyCode;
                        } else if (e.which) {
                            this.keyCode = e.which;
                        }

                    }
                };
                document.onkeyup =  () => {
                    if (this.keyCode) {
                        this.keyCode = undefined;
                    }
                };
trSelect(index) {
                    switch (this.keyCode) {
                        case 17://ctrl
                            this.isCtrl = true;
                            if (this.rowsSelect.indexOf(index) != -1) {
                                this.rowsSelect.splice(index, 1);
                            } else {
                                this.rowsSelect.push(index);
                            }
                            this.startIndex = index;
                            break;
                        case 16://shift
                            if (!this.isCtrl && this.rowsSelect.length == 0) {
                                this.rowsSelect.push(index);
                                this.startIndex = index;
                                return;
                            }
                            let start, end;
                            if (this.startIndex < index) {
                                start = this. startIndex;
                                end = index;
                            } else {
                                start = index;
                                end = this.startIndex;
                            }
                            this.rowsSelect = [];

                            for (let k = start; k <= end; k++) {
                                this.rowsSelect.push(k);
                            }
                            this.isCtrl = false;
                            break;
                        default:
                            this.rowsSelect = [index];
                            this.isCtrl = false;
                            this.startIndex = index;
                            break;
                    }

                }

  

 

  

转载于:https://www.cnblogs.com/lrxsblog/p/9923456.html

实现ListBox的多选功能,可以按照以下步骤进行操作: 1. 在ListBox的属性窗口,将SelectionMode属性设置为MultiExtended或Simple。 - MultiExtended:允许使用Shift键和Ctrl键进行多选按住Shift键并单击项目之间的范围,可以选择范围内的所有项目。按住Ctrl键并单击单个项目,可以选择或取消选择该项目。 - Simple:只允许使用Ctrl键进行多选按住Ctrl键并单击单个项目,可以选择或取消选择该项目。 2. 在代码,您可以使用SelectedIndices属性来获取所选项目的索引,或使用SelectedItems属性来获取所选项目的集合。 - SelectedIndices:返回一个包含所选项目索引的集合。 - SelectedItems:返回一个包含所选项目的集合。 3. 如果需要在选定项目发生更改时执行特定操作,可以使用SelectedIndexChanged事件。该事件在所选项目发生更改时触发。 下面是一个示例代码,演示如何实现ListBox的多选功能: ```csharp private void Form1_Load(object sender, EventArgs e) { listBox1.SelectionMode = SelectionMode.MultiExtended; } private void button1_Click(object sender, EventArgs e) { // 获取所选项目的索引 foreach (int index in listBox1.SelectedIndices) { MessageBox.Show("选的索引:" + index.ToString()); } // 获取所选项目的文本 foreach (string item in listBox1.SelectedItems) { MessageBox.Show("选的项目:" + item); } } ``` 希望这个例子能帮助您实现ListBox的多选功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值