在标签之间切换时执行一些操作

本文关键字:执行 操作 标签 之间 | 更新日期: 2023-09-27 18:09:33

我知道标签无法接收焦点,它似乎对标签切换没有响应。但所有我需要的是执行一些操作时,用户使用制表因此在一个表单只有标签。例如,每个标签都有一个关联的文本框,但是当标签可见时,这个文本框是隐藏的,反之亦然。我想要的是允许用户使用选项卡切换隐藏文本框的形式,通常情况下,所有的文本框隐藏,所有的标签,标签应该是focusable所以当使用选项卡中,可以知道(如某些事件)显示相关的文本框和隐藏本身,当切换到另一个标签,相关联的当前标签的文本框将会再次出现,并显示相关的文本框将成为隐藏。

我必须实现这种2合1控件(文本框和标签在合成控件),因为我只是想只显示文本(没有边框和背景),如果文本框有一个透明的背景,只显示文本框(并隐藏标签),当用户需要编辑(开始点击字段或使用选项卡)。如果有一个透明的背景文本框,这对我来说应该更容易,但在windows窗体的世界里没有一个像样的文本框。请注意,我也知道在codeproject中的一篇文章中呈现的alpha混合透明文本框,但它不能满足我的需要,因为文本在文本路径周围呈现错误的丑陋边框(某种缺失的抗锯齿,但它甚至比那更糟)。

如果这个机制不能实现,我真的很遗憾,当所有字段似乎只显示信息时,表单看起来更好,但是点击或标签开关可以让用户跳转到编辑模式。我希望有解决办法。

在标签之间切换时执行一些操作

我一时心血来潮找到了这个解决办法。我不认为有这样的解决方案,但它确实帮助解决了我的问题(我相信许多其他人将从中受益)。简单地说,我必须创建我自己的标签继承UserControl。我以前没有想到UserControl,它很有帮助。可聚焦性,透明背景,无边界都可以很容易地完成UserControl。唯一的自定义功能,我必须做自己是渲染文本,这也是非常简单的,有很多方法可以做到。我只是添加一个标签到UserControl,并设置标签的Dock到DockStyle。填充,调整UserControl的高度,这就是全部。

感谢上帝帮助我在尝试任何其他复杂的解决方案(如听TAB和SHIFT + TAB按键事件)之前想到UserControl。