找回密码
 立即注册

QQ登录

只需一步,快速开始

顾及

注册会员

4

主题

14

帖子

62

积分

注册会员

积分
62
最新发帖
顾及
注册会员   /  发表于:2024-9-24 11:33  /   查看:668  /  回复:11
50金币
现在有这样一个场景,会存在三个按钮,横向表头,纵向表头,选中区域。点击横向表头时,需要只能横向去进行选择,纵向同理。如图 image.png26344908.png

image.png511435241.png
同时还需要在拖动的时候,动态的设置选中单元格的背景色。
选择完对应的表头后,填充区域则只能在横纵表头的交集中去进行选择,如图所示,当横向表头和纵向表头都存在时,则只能框选红框内的区域。 image.png716214904.png
横纵表头可能同时存在,也可能只会存在一个,当只存在横向时,填充区域则只能选择,表头下方的区域 image.png80727232.png ,纵向表头同理。请问内部有提供什么方法可以实现这种效果。

最佳答案

查看完整内容

您好!提供方案如下所述: 1. 横向表头、纵向表头、填充区域按钮分别对应设置横向表头、列向表头和填充区域功能。 2. 设置横向表头时,在鼠标落在的单元格所在行选择。那么,开启表单保护,并且不允许选择锁定区域,允许选择未锁定区域,同时设置当前行单元格未锁定,即可允许在当前行拖动选择连续单元格。 3. 与设置横向表头同理。设置纵向表头时,在鼠标落在的单元格所在列选择。那么,开启表单保护,并且不允许选择锁定区 ...

11 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-9-24 11:33:12
来自 10#
您好!提供方案如下所述:

1. 横向表头、纵向表头、填充区域按钮分别对应设置横向表头、列向表头和填充区域功能。
2. 设置横向表头时,在鼠标落在的单元格所在行选择。那么,开启表单保护,并且不允许选择锁定区域,允许选择未锁定区域,同时设置当前行单元格未锁定,即可允许在当前行拖动选择连续单元格。
3. 与设置横向表头同理。设置纵向表头时,在鼠标落在的单元格所在列选择。那么,开启表单保护,并且不允许选择锁定区域,允许选择未锁定区域,同时设置当前列单元格未锁定,即可允许在当前列拖动选择连续单元格。
4. 设置横向表头和纵向表头的上述控制逻辑时,需要借助SelectionChanging事件,在事件处理函数中执行。
5. 填充区域时需要根据横向区域和列向区域计算可被填充的区域,分情况而论:
5.1.如果横向表头和纵向表头交叉了,形成了十字架形,那么,可填充区域即十字架形中间的单元格部分,如下图所示。
1727319997452.png592797240.png

5.2. 如果横向表头和纵向表头无交叉,则可填充区域是矩形,如下图所示。
1727319364020.png677935790.png

如上所述即基本方案,其他业务逻辑可在上述方案中扩充。附上demo,以供参考。

自定义区域选择.html

10.72 KB, 下载次数: 18

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-24 13:50:42
2#
您好!根据您的描述,需要和您确认一些细节,如下所述:

1. 横向选择在横向内选择,那么,是在指定的行内选择某些单元格呢,还是选择一整个指定行呢?纵向选择同理。
2. “动态的设置选中单元格的背景色”是指为拖动区域中的单元格设置相同的背景色吗?
3. 同时选择横纵表头,它们的交集是指指定的若干行和指定的若干列之间的交集吗?即,如果选择了一行一列,那么交集就只是一个单元格,是这样吗?如果是这样的话,那么与问题一相关,即横向选择和纵向选择要选中的就是一整行或一整列吗?
4. “填充区域”按钮的功能对应为向选中的单元格区域设置背景色还是填充数据呢?
5. “当只存在横向时,填充区域则只能选择,表头下方的区域”,此处指的表头是列吗?“只存在横向”即只选择横向表头,那么,如果此处提到的“表头”是列,这个列是何时选中的呢?
回复 使用道具 举报
顾及
注册会员   /  发表于:2024-9-24 14:13:57
3#
Wilson.Zhang 发表于 2024-9-24 13:50
您好!根据您的描述,需要和您确认一些细节,如下所述:

1. 横向选择在横向内选择,那么,是在指定的行 ...

1.这里是指一整个指定行,比如我先选择 横向表头,这个时候我选中A1,那么我就只能从A1往右取进行一个横向的区域选择,比如A1-F1,需要是连贯的,纵向则只能从A1往下进行选择,例如A1-A10。
2.是的,比如我拖动选择的区域为A1-F1,这个时候需要设置A1-F1的单元格的背景色。
3.是的,比如我横向表头选择B1,纵向表头选择A2,那么他们的交集则只有B2这个单元格。
4.填充区域按钮的作用是在确定表头之后,在可选范围内,进行选择。比如只选择了横向表头A1-B2,那么填充区域可选择的范围则是 A1-B2这两列的区域,纵向同理,比如纵向表头选择了A1-A2,那么填充区域的可选择范围则是A1-A2这两行的区域。横纵表头都存在的情况下,填充区域可选择的范围则为横纵表头的交集。
5.这个表头不是指列,是指我已经通过 横向表头和纵向表头这两个按钮去设置的表头,如图所示,我只设置了横向表头为M1-O1,那么这个时候,填充区域的选择范围则只能为M(N+1)-O(N+1)。也就是红框区域。填充区域这个按钮的开关,必须存在已选的表头后才会开启。
回复 使用道具 举报
顾及
注册会员   /  发表于:2024-9-24 14:16:39
4#
这三个按钮,可以理解为三种选择模式,同时只能存在一种选择模式,当我启用某种模式的时候,则只能按这种模式的规则去进行拖动选择,具体的规则如上,唯一特殊的是填充区域必须要先确定表头才可以启用。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-24 16:36:38
5#
顾及 发表于 2024-9-24 14:16
这三个按钮,可以理解为三种选择模式,同时只能存在一种选择模式,当我启用某种模式的时候,则只能按这种模 ...

那么,在填充区域时,设置了横向表头,但其实限定的选择范围是以横向表头为起点的纵向列,如下图所示,是这样吗?
横向和纵向表头共同限定的区域.png

继续复盘下您提供的答复:
横向表头和纵向表头限定了表头设置的可选择区域,即横向表头对应的是某一行内的连续单元格。而填充区域即以这几个单元格为起点的纵向列区域,单元格上方的区域不在填充范围内,如下图所示。
横向表头限定的填充区域.png316172484.png

同理,纵向表头对应的是某一列内的连续单元格,填充区域即这几个单元格为起点向右扩展的横向行区域,单元格左侧的区域不在填充范围内,如下图所示。

列向表头限定的填充区域.png624550475.png
回复 使用道具 举报
顾及
注册会员   /  发表于:2024-9-24 16:44:02
6#
Wilson.Zhang 发表于 2024-9-24 16:36
那么,在填充区域时,设置了横向表头,但其实限定的选择范围是以横向表头为起点的纵向列,如下图所示,是 ...

是的,目前想实现就是这样的效果。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-24 17:56:46
7#
顾及 发表于 2024-9-24 16:44
是的,目前想实现就是这样的效果。

以设置横向表头为例,您的预想实现是连续拖动选中连续单元格呢还是结合ctrl单击连续的几个单元格以选中呢?
回复 使用道具 举报
顾及
注册会员   /  发表于:2024-9-25 08:35:41
8#
Wilson.Zhang 发表于 2024-9-24 17:56
以设置横向表头为例,您的预想实现是连续拖动选中连续单元格呢还是结合ctrl单击连续的几个单元格以选中呢 ...

连续拖动选中连续单元格
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-25 11:12:31
9#
顾及 发表于 2024-9-25 08:35
连续拖动选中连续单元格

了解您的需求了,我们调研下方案先,请您耐心等候。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部