我知道标签无法获得焦点,它似乎无法响应标签切换。但是,当用户在仅包含标签的表单上使用制表符时,我需要的是执行某些操作。例如,每个标签都有一个关联的文本框,但是当标签可见时隐藏此文本框,反之亦然。我想要的是允许用户使用tab在表单上隐藏的文本框之间切换,通常,在显示所有标签时隐藏所有文本框,标签应该是可聚焦的,这样当使用tab时,它可以知道(作为某些事件)显示关联的文本框并隐藏自身,当切换到另一个标签时,显示相关文本框的当前标签将再次可见,其关联的文本框将被隐藏。
我必须实现这种2合1控件(文本框和合成控件中的标签),因为我只想显示文本(没有边框和背景),好像文本框具有透明背景并且只显示用户需要编辑时(通过单击字段或使用选项卡开始)文本框(并隐藏标签)。如果有一个透明的背景文本框,但对于我来说这应该更容易,但在Windows窗体世界中没有一个像样的文本框。请注意,我也知道在codeproject 中的文章中提供的 alpha混合透明文本框,但它无法满足我的需要,因为文本路径周围的文本显示错误(一些有点缺少抗锯齿,但它比那更糟糕。)
如果无法实现此机制,我真的很可惜,当所有字段似乎只显示信息但单击或制表符切换可让用户跳转到编辑模式时,表单看起来更好。 我希望有一些解决方案。提前谢谢。
答案 0 :(得分:2)
我心中想到了这个解决方案。我不认为有这样的解决方案,但它确实有助于解决我的问题(我相信很多其他人将从中受益)。我只需创建自己的继承 UserControl 的Label。我以前没想过 UserControl ,它非常有帮助。可聚焦性,透明背景,无边界都可以轻松完成 UserControl 。我自己唯一要做的自定义功能是渲染文本也非常简单,有很多方法可以做。我只需在 UserControl 中添加一个Label,并将Label的Dock设置为DockStyle.Fill,正确调整 UserControl 的高度即可。
感谢上帝在尝试任何其他复杂的解决方案之前帮助我想到UserControl,例如听TAB和SHIFT + TAB按键事件。