Winforms UserControls:我遗漏了什么?

Winforms UserControls:我遗漏了什么?,winforms,user-controls,Winforms,User Controls,我创建了一个我称之为“LabeledTextBoxWithLookupControl”的东西,它继承自UserControl。我已经在表单上放置了几个这样的控件 现在我开始觉得这是个坏主意 当我调用TopLevelControl.SelectNextControl(this,true,true,true,true,true)时,它实际上是在选择下一个用户控件,我希望它选择下一个用户控件中的文本框。UserControl的CanSelect属性返回true,但我看不到任何简单的方法来更改UserC

我创建了一个我称之为“LabeledTextBoxWithLookupControl”的东西,它继承自UserControl。我已经在表单上放置了几个这样的控件

现在我开始觉得这是个坏主意

当我调用
TopLevelControl.SelectNextControl(this,true,true,true,true,true)
时,它实际上是在选择下一个用户控件,我希望它选择下一个用户控件中的文本框。UserControl的CanSelect属性返回true,但我看不到任何简单的方法来更改UserControl的控件样式

此外,当我使用Tab订单模式时,我更希望它不考虑用户控件本身,而只将USER控件中的文本框作为Tab订单的候选。我是否应该重写UserControl的TabIndex和TabStop属性,并使它们指向TextBox的TabIndex和TabStop


另外,我应该只公开控件本身的属性,还是应该将每个控件作为属性公开以设置我希望能够设置的属性,例如label控件的Text属性,LookupControl的click事件和TextBox的Text属性。

如果您不希望
UserControl
成为制表位,而是它的内容,则必须确保它没有样式

UserControl
的构造函数中添加:

SetStyle(ControlStyles.Selectable, false);

没有责备。UserControl包含显式代码,如果它获得焦点,则将焦点传递给它的第一个子控件。如果您需要帮助解决您的问题,请将一个小的复制项目发布到文件共享服务或粘贴箱。@Hans:我对新创建的
UserControl
类型有此问题,因此我不确定是否同意您的“不复制”。@Dave:没问题。很乐意帮忙。:)