c# - 在标签之间切换时执行某些操作?

标签 c# winforms textbox label transparent

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

我必须实现这种二合一控件(复合控件中的文本框和标签),因为我只想仅显示文本(没有边框和背景),就好像文本框具有透明背景并且仅显示当用户需要编辑时(通过单击字段或使用选项卡开始),使用文本框(并隐藏标签)。如果有一个透明的背景文本框,这对我来说应该更容易,但在 Windows 窗体世界中没有一个像样的文本框。请注意,我也知道 codeproject 中的一篇文章中提出的 alpha 混合透明文本框,但它无法满足我的需求,因为文本渲染错误,文本路径周围的边框丑陋(某种缺少抗锯齿功能,但比这更糟糕)。

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

最佳答案

我一时兴起找到了这个解决方案。我认为没有这样的解决方案,但它确实有助于解决我的问题(而且我相信许多其他人会从中受益)。简而言之,我必须创建自己的继承 UserControl 的标签。我之前没有想到UserControl,它非常有帮助。可聚焦性、透明背景、无边框都是UserControl可以轻松实现的。我必须自己做的唯一自定义功能是渲染文本,这也非常简单,并且有很多方法可以做到。我只是向 UserControl 添加一个 Label,并将 Label 的 Dock 设置为 DockStyle.Fill,适当调整 UserControl 的高度即可。

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

关于c# - 在标签之间切换时执行某些操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16060721/

相关文章:

c# - 保存文本框的默认值c#

winforms - 使遗留的简单 win.forms 应用程序代码更加清晰

c# - 带滚动条的控件上的 .NET C# MouseEnter 监听器

c# - Sitecore、GlassMapper、接口(interface)和动态代理

c# - WPF COMException 在启动时使应用程序崩溃(今天开始)

c# - 如何在 Windows 窗体应用程序中实现键盘按键

swift - 如何从带有文本框的自定义单元格中获取 didselectrowat?

c# - .NET Compact Framework 透明用户控件

php - 如何从mysql加载数据到文本框

javascript - 在文本框中概述用户文本输入