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

C# 在标签之间切换时执行一些操作?,c#,winforms,textbox,label,transparent,C#,Winforms,Textbox,Label,Transparent,我知道标签不能接收焦点,它似乎对标签切换没有反应。但我所需要的只是当用户在一个只有标签的表单上使用tab时执行一些操作。例如,每个标签都有一个关联的文本框,但当标签可见时,此文本框将隐藏,反之亦然。我想要的是允许用户使用tab在表单上隐藏的文本框之间切换,通常,所有的文本框都是隐藏的,而所有的标签都是显示的,标签应该是可聚焦的,这样在使用tab时,它可以知道(作为某些事件)在切换到另一个标签时显示关联的文本框并隐藏自己,显示其关联文本框的当前标签将再次可见,其关联文本框将隐藏 我必须实现这种二合

我知道标签不能接收焦点,它似乎对标签切换没有反应。但我所需要的只是当用户在一个只有标签的表单上使用tab时执行一些操作。例如,每个标签都有一个关联的文本框,但当标签可见时,此文本框将隐藏,反之亦然。我想要的是允许用户使用tab在表单上隐藏的文本框之间切换,通常,所有的文本框都是隐藏的,而所有的标签都是显示的,标签应该是可聚焦的,这样在使用tab时,它可以知道(作为某些事件)在切换到另一个标签时显示关联的文本框并隐藏自己,显示其关联文本框的当前标签将再次可见,其关联文本框将隐藏

我必须实现这种二合一控件(复合控件中的textbox和label),因为我只想显示文本(没有边框和背景),就好像textbox有一个透明的背景,并且只在用户需要编辑时显示textbox(并隐藏标签)(首先单击字段或使用选项卡)。如果有一个透明的背景文本框,但在windows窗体的世界中没有一个像样的文本框,这对我来说应该更容易。请注意,我也知道codeproject中的一篇文章中出现了alpha blend transparent textbox,但它不能满足我的需要,因为文本路径周围有难看的边框(缺少某种抗锯齿,但比这更糟糕)

我真的很遗憾,如果这个机制不能实现,当所有字段似乎只显示信息时,表单看起来会更好,但是单击或选项卡切换可以让用户跳转到编辑模式。
我希望有一些解决办法。提前谢谢。

我一时兴起,找到了这个解决方案。我不认为有这样的解决办法,但它确实有助于解决我的问题(我相信其他许多人也会从中受益)。我只需创建自己的标签,继承用户控件。我以前没有想到过用户控制,它非常有用。聚焦性、透明背景、无边界都可以通过用户控件轻松实现。我必须自己做的唯一自定义功能是渲染文本,这也是非常简单的,有很多方法可以做到。我只是在用户控件中添加了一个标签,并将标签的Dock设置为DockStyle。填充,正确调整用户控件的高度即可


谢天谢地,在尝试任何其他复杂的解决方案(如收听TAB和SHIFT+TAB按键事件)之前,帮助我考虑UserControl。

您是否有一些渐变或图片背景,这意味着您不能只使用普通文本框并设置背景颜色和边框样式?您不能只监视按键吗?@JamesB Yes,文本框的父背景是渐变的(不是纯色),因此根据父背景更改文本框的背景色没有帮助。@DeeMac我想到了这个想法,但当我必须将侦听器添加到TAB和SHIFT+TAB并记住当前位置时,实现有点复杂,为窗体上我自己的控件实现某种选项卡索引。我还没有试过,因为我希望有更干净的解决办法。谢谢。其实不太复杂。不能在标签之间进行tab,TabStop等相关属性在该类上是无用的。您所要做的就是监视控件上当前可见的tab键(据我所知,一次只显示一个文本框)。