【发布时间】:2012-07-24 23:04:02
【问题描述】:
我创建了一个用户控件,我试图将其用作自定义 UI 上的“选项卡”,该 UI 应该像 TabControl 一样运行。 (“选项卡”是指您单击的位,而不是单击后显示的页面内容)。选项卡在左侧(与许多应用程序中的属性窗口一样),每个选项卡(应该)由两个标签组成,一个在另一个之上(标题和描述)。
到目前为止,这是一段漫长而艰难的旅程,我的方法可能完全错误,但我目前在我的用户控件中拥有的是两个标签和一个按钮,所有这些都布置在 TableLayoutPanel 中。我有一个按钮的原因是我希望控件成为制表位,因此(我认为)我需要包含一个制表位控件。另外,我想捕获某些击键(见下文)。从视觉上看,有按钮并没有太大问题,因为我可以使用图像使按钮看起来更好。
无论如何,我希望用户能够使用向上/向下箭头键上下移动选项卡。我通过在按钮上捕获 KeyDown (& PreviewKeyDown) 事件来实现这一点。这很好。
但是,如果用户在焦点位于选项卡用户控件上时按下 Tab 键,我希望焦点移动到当前页面中的第一个控件,而不是到下一个选项卡用户控件,这就是它的实际作用。
为此,我尝试禁用除活动选项卡之外的所有选项卡用户控件中的按钮,但焦点仍移动到用户控件本身 - 由于没有活动选项卡停止,它只会丢失(你看不到它)。
然后我尝试禁用所有非活动用户控件而不仅仅是按钮,这很有效 - 除了现在我的用户控件中的标签显示为禁用,我不希望这样。
如何阻止我的用户控件的子控件看起来像被禁用? (或者,我怎样才能让 tab 键忽略我的用户控件而不禁用它们)?
【问题讨论】:
标签: .net winforms user-controls