UserControls:我错过了什么?

时间:2010-11-12 14:19:57

标签: winforms user-controls

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

现在我开始认为这是一个坏主意。

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

另外,当我使用Tab Order模式时,我更喜欢它不考虑用户控件本身,而是将UserControl中的TextBox作为Tab键顺序的候选者。我应该覆盖UserControl的TabIndex和TabStop属性,并使它们指向TextBox的TabIndex和TabStop吗?

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

1 个答案:

答案 0 :(得分:1)

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

UserControl添加:

的构造函数中
SetStyle(ControlStyles.Selectable, false);